SVN

svn使用 2011-10-27 1:32

1、checkout: (svn checkout ***)

 

$ svn checkout https://url/trunk   localDir

 

说明:将server “https://url/trunk”下的content checkout到本地当前目录\localDir目录下(如果目录不存在则新建)。

 

2、创建一个branch: (svn copy ***)

 

$ svn copy https://url/trunk   https://url/private/yours/policy_1

 

说明:在server端“https://url/private/yours/”下新建branch(不能已存在),并将”https://url/trunk” copy 到新的branch下(未实行实际的copy,只是将trunk映射到policy_1下而已),不耗费空间和带宽,该operation应该在“瞬间”完成。

 

3、switch到自己的branch: (svn switch ***)

 

$ svn switch https://url/private/yours/policy_1

 

说明:做完1、2步操作后,可在当前版本控制根目录下(此处为url/)用svn info查看其URL,应为https://url/trunk

上述命令(switch)将当前目录switch到自己的branch-policy_1下,完成该命令后再用svn info查看的URL为https://url/private/yours/policy_1。

 

4、本地修改 (自己的事情)

5、commit 本地修改的工作: (svn ci ***)

$svn ci ./***

说明:将自己的改动commit,***为改动内容,可为具体文件,或者某目录,甚至根目录

 

6、merge trunk上的改动: (svn merge ***)

 

$ svn merge -r 444:461 https://url/trunk  .

 

说明:其中444为目标branch-policy_1建立时的版本(svn copy操作所在版本号的”前一个”版本号),版本号可由svn log https://url/private/yours/policy_1来完成,显示的是该branch的版本控制记录;461为trunk的最终版本,即要将trunk的最新改动merge到自己的branch。

注意:该命令最后的”.”代表当前目录,不要忘记!

 

7、再次commit本地merge结果: (svn ci ***)

 

$ svn ci ./

 

说明:将merge trunk上的改动提交到branch的server端,使server端的trunk与policy两个分支的差别只是本人的工作。

 

8、diff本人工作与brunch的最终差异: (svn diff ***)

 

$ svn diff https://url/trunk https://url/private/policy_1

 

说明:前述一系列操作已经使server端的两个URL的内容差异仅限于本人的工作,上述URL的顺序代表了自己的工作差异,如果反了,则显示trunk的工作,逻辑反。

 

9、发code review (svn 以外的工作)

 

mail…

 

waiting ack!

 

10、需要修改则转步骤4,否则继续

 

 

 

 

11、switch到trunk (svn switch ***)

 

$ svn switch https://url/trunk

 

说明:该命令是在本地***/project/上执行的,可将该目录switch到server端的trunk下,但该操作会保留本地的工作(如某文件与trunk有差异时),svn info可查看其URL已经改变。

 

12、在trunk下merge branch上的改动: (svn merge ***)

 

$ svn merge -r 444:467 https://url/private/yours/policy_1

 

说明:将branch上的改动merge到trunk,版本号解释见步骤5,原则即是将“所有改动”均merge过来!

 

13、commit trunk (svn ci ***)

 

$ svn ci ./

 

说明:当前工作目录(okinawa),其URL为https://url/trunk。

 

14、转步骤2,建立一个新的branch,go on working…(  maybe a dead cycle :< haha!!! )

 

 

补充:在merge、switch、update或者commit的时候,可能产生冲突,选择正确的版本进行冲突解决即可,命令如下:

 

$ svn resolve –accept=*** ./*.cpp

 

其中***为参数,可参看svn help resolve,后面的是需要resolve的文件或者目录名。

点赞