iOS之SVN

PS:1.文中所有的截图都是以老版的cornerStone为参考,新版样式有出入!!

PS:2.本文所有$符号之后为在终端中执行的命令。

PS:3.基本都是总结他人的资料,自己整合修改的。感谢原作者(不知道是谁)!

版本控制系统

版本控制

版本控制(Version Control)的作用是追踪文件的变化。为什么需要版本控制?简单说,就是当你出错了,可以很容易地回到没出错时的状态。
你可能已经在不知不觉中,布置了自己的版本控制系统。比如,创建了类似下面这样的文件名:

论文_0510.doc
论文0514.doc
论文0521.doc
论文
修改版.doc
论文
最终不修改版.doc

这就是软件中为什么有"Save As"命令的原因。它使得你可以在不破坏源文件的基础上,得到一个类似的新文件。文件的多版本保存是一个常见问题,通常的解决办法是这样的:

  • 做一个文件备份(比如Document.old.txt)。
  • 在文件名中加入版本号或日期(比如Document_V1.txt,DocumentMarch2007.txt)。
  • 在多人编辑的环境下,共享一个文件目录,并且要求每个人编辑完以后,在文件上做出标识。

什么是版本控制系统(VCS)?

大型的、频繁修改的、多人编写的软件项目,需要一个版本控制系统(简称VCS,行话叫做"文件数据库"),追踪文件的变化,避免出现混乱。
一次典型的使用过程是这样的:
爱丽丝add一个文件(list.txt)进入repo。然后,她又把这个文件check out,做了一次编辑(在文件中加入milk这个单词)。接着,她将修改后的文件check in,并附有一条checking message("加入了新的条目")。第二天早上,鲍勃update了他本地的working set,看到了list.txt的最新修订版,其中包含了单词"milk"。如果他使用changelog或diff,都可以发现前一天爱丽丝加入"milk"这个词。
网上有许多VCS软件可供选择,并且都有详细的教程或手册,比如SVN、CVS、RCS、Git、Perforce等等。

版本库

版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被版本控制系统管理起来,每个文件的修改、删除,都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

SVN

在Mac环境下,由于Mac自带了SVN的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用SVN功能,不过还需做一下简单的配置。

为什么使用SVN

进行权限管理,针对不同的人,开放不同的权限。比如Alex是进行A项目的,Bob进行B项目的,那么SVN可以有效的管理每个人看到的项目,Alex不可能获得Bob的项目,同样Bob也不可能获得Alex的项目。

对于代码进行追踪,代码不会遗失。不如今天代码修改乱了,需要恢复到某一天的,那么我们只需要选择一下恢复的日期即可进行恢复。

搭建SVN服务器

1. 创建代码仓库,存储客户端上传的代码

先在~/Desktop目录(这个目录可以是任意非中文路径)新建一个svn目录,以后可以在svn目录下创建多个仓库目录。
打开终端,切换到该目录cd ~/Desktop/svn,创建一个learnsvn仓库,输入命令:svnadmin create ./learnsvn,执行成功后,会发现在该目录下多了一个LimitFree目录。

2. 配置SVN的用户权限

主要是修改./learnsvn/conf目录下的三个文件
打开svnserve.conf,将下列配置项前面的#和空格都去掉

#anon-access = read 
#auth-access = write 
#password-db = passwd
#authz-db = authz

anon-access = read代表匿名访问的时候是只读的,若改为anon-access = none代表禁止匿名访问,需要帐号密码才能访问

打开passwd,在[users]下面添加帐号和密码

[users]

# harry = harryssecret
# sally = sallyssecret
wj = 123
student = 123456

帐号是wj,密码是123

打开authz,配置用户组和权限
我们可以将在passwd里添加的用户分配到不同的用户组里,以后的话,就可以对不同用户组设置不同的权限,没有必要对每个用户进行单独设置权限。
在[groups]下面添加组名和用户名,多个用户之间用逗号(,)隔开

[groups] 

topgroup=wj,student

说明wj和student都是属于topgroup这个组的,接下来再进行权限配置。
使用[/]代表svn服务器中的所有资源库

[/] 

@topgroup = rw

上面的配置说明topgroup这个组中的所有用户对所有资源库都有读写(rw)权限,组名前面要用@
如果是用户名,不用加@,比如wj这个用户有读写权限

[/] 

wj = rw

3. 启动SVN服务器

在终端输入命令:svnserve -d -r ~/Desktop/svnsvnserve -d -r ~/Desktop/svn/learnsvn

没有任何提示就说明启动成功了

4. 关闭SVN服务器

打开活动监视器,输入svnserve,强制退出进程。

使用SVN客户端功能

SVN客户端有两种使用方式,命令行和GUI界面软件(CornerStone)
命令行工具

usage: svn <subcommand> [options] [args]

Subversion command-line client.
Type 'svn help <subcommand>' for help on a specific subcommand.
Type 'svn --version' to see the program version and RA modules
 or 'svn --version --quiet' to see just the version number.
​
Most subcommands take file and/or directory arguments, recursing
on the directories. If no arguments are supplied to such a
command, it recurses on the current directory (inclusive) by default.
​
Available subcommands:
   add
   auth
   blame (praise, annotate, ann)
   cat
   changelist (cl)
   checkout (co)
   cleanup
   commit (ci)
   copy (cp)
   delete (del, remove, rm)
   diff (di)
   export
   help (?, h)
   import
   info
   list (ls)
   lock
   log
   merge
   mergeinfo
   mkdir
   move (mv, rename, ren)
   patch
   propdel (pdel, pd)
   propedit (pedit, pe)
   propget (pget, pg)
   proplist (plist, pl)
   propset (pset, ps)
   relocate
   resolve
   resolved
   revert
   status (stat, st)
   switch (sw)
   unlock
   update (up)
   upgrade
​
Subversion is a tool for version control.
For additional information, see http://subversion.apache.org/

CornerStone

添加代码仓库

添加代码仓库

填写SVN仓库信息

填写SVN仓库信息

基本操作

checkout(检出)
add(添加文件)
delete(删除文件)
modify (修改文件)
commit(提交)
update(更新)
resolve conflict(解决冲突)
revert(恢复初始状态)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,482评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,377评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,762评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,273评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,289评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,046评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,351评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,988评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,476评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,948评论 2 324
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,064评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,712评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,261评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,264评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,486评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,511评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,802评论 2 345

推荐阅读更多精彩内容