TortoiseSVN典型应用

  • 格式:doc
  • 大小:2.55 MB
  • 文档页数:11

文安TortoiseSVN使用帮助

SubVersion是一款著名的开源免费版本管理系统,相关介绍网上铺天盖地,这里就不多说了。而TortoiseSVN是SubVersion为开发者提供的一个界面友好的客户端软件,通过该客户端我们可以实现对代码版本的共享与建设。本文针对开发者的TortoiseSVN使用方式进行简要介绍。

一、 下载代码

新加入的同事往往面临的第一个问题:当上级给你一个SVN地址时如何将代码,如何将这份代码下载下来。那么下面就先介绍一下

1. 下载最新代码

安装了TortoiseSVN客户端之后,通常要下载代码。TortoiseSVN在Windows的右键菜单中添加了自己的菜单。如图所示,点击Checkout。

图1

图2

点击OK。随机开始代码下载,下载图中不要点击Cancel。

图3

如图所示,表示下载已成功。

图4

下载后代码如图所示,在所有download的文件上都会有一个绿底白色的对勾。表示当前本地版本与服务器版本相同。

这样就可以进行编码工作了。

2. 下载历史版本代码

SVN号会随着软件的修改每次提交代码而不断增加,早期实施的项目很可能使用的不是当前最新代码编译出来的软件,所以当历史项目遇到问题时,我们需要调出历史代码分析bug。这时就要用到TortoiseSVN下载历史版本的功能。

回到图2的checkout界面,点击最下面的Revision按钮,在后面输入需要下载的历史版本代码的SVN号。如果不能确定历史版本的SVN号码,可以点击Show Log查找历史版本:

图6

选择好历史版本记录后,点击OK,回到checkout界面后,可以看到Revision后面出现了你选择的历史版本的SVN号。点击OK,开始下载代码。之后的操作同首次下载代码。

二、 提交代码

当你做完了某个单元功能后,就要提交代码了。该操作不会覆盖掉SVN服务器上旧版本的代码。提交代码要审慎,针对自己修改的部分一定要做好单元测试,避免其他人下载的代码不能使用。理想状态下,SVN上任何一个历史版本的代码都是可以下载即可编译通过。

图7

这里要介绍一下我们的目录结构,trunks是主干代码,branches是分支代码,他们之间在代码逻辑上不存在任何耦合,所以我们的提交代码动作只能针对其中的一个。如图,在刚下载的Daemon代码中修改了一下daemonconfig.ini文件(实际情况下可能修改的文件比这个要多)。此操作为trunks目录下的变更,所以我们到trunks目录下的空白处点击右键,commit。

图8

图9

这里是关键的一步,首先选择好此次提交到服务器的代码文件,Text Status表明了对打钩文件的操作,deleted表明原来服务器上有此文件,此次上传则把它从服务器上清除掉。Modified表明是你修改的文件。而non-versioned表明该文件没有被SVN服务器记录在案,从未上传过。

选择文件有一个一句话原则:要上传最精简的,且其他人下载后直接可以编译通过的代码。

图中的exe、obj后缀的文件,都是编译后生成的文件,所以不用上传,但代码文件和ini配置文件是软件运行必须的文件、且不会自动生成,则需要上传。以此类推。

然后填写Change Log,这里建议将ChangeLog本地备份,因为提交可能失败。然后点击OK即开始提交工作。

图10

如图所示,代码提交已成功。可以在刚刚提交动作目录下点击:右键\TortoiseSVN\Show

Log查看自己刚刚提交的代码。

最后再次重申,提交代码不仅关系到能否与他人默契的协同工作,也关系到提交人的考评,所以建议代码提交的时候一定要仔细,check your commitment over and over again。

三、 代码更新

当合作开发时,常常是多人共同开发,每个人开发一个功能模块。有时你所写的模块依赖于其他人开发的功能,当其他人完成开发并提交了代码到服务器时,你就需要从服务器更新代码到你的计算机。这时就用到了代码更新功能。

更新工作非常简单,在你要更新的文件所在根目录下点击右键,点击SVN Update,则代码会自动下载到你本地。如果下载没有问题,则会出现如图所示的界面。

图11

建议Update代码时,关闭掉你本地的开发工具,确保本地文件可写状态,避免更新失败。需要注意的是:在功能模块划分不明确、多人共同修改一个代码文件的情况下。Update之前最好备份自己本地的文件,因为你不能假设其他人都会按规矩使用SVN,其他人上传的东西有可能将你本地修改的代码文件覆盖掉,导致你自己工作成果丢失。

这种情况仅限于分工不明确的情况,如果不幸遇到了,要做两件事:1、向上级主管求助;2、学习本文档的高级应用\冲突处理 部分。

四、 高级应用

1. 冲突(Conflict)处理:

图12

当多人共同修改同一个文件时,出现文件冲突并不意外。TortoiseSVN Update检测到服务器代码与你本地的冲突后,会在你的代码文件中做如下修改。

<<<<<<< filename

your changes // 这是你本地的代码

=======

code merged from repository // 这是服务器下载的代码

>>>>>>> revision

带着这样的代码你是无法编译通过的,所以需要对冲突进行处理。注意:不要手动修改代码中的文本。否则后果不可预期,要使用TortoiseSVN的工具进行代码合并。

可以到有冲突的目录下,右键\TortoiseSVN\Resolved。在弹出窗口中双击要处理的冲突文件即可对你的本地文件和服务器文件进行比对,在这里你能查看到这两份代码有哪些不同。并且可以对本地文件进行编辑。

图13

或者如果你十分明确你的代码与服务器有什么不同,也可以直接通过Resolve conflict

using “theirs”和Resolve conflict using “mine”来解决冲突。分别是使用服务器版本和使用本地版本。同样,选择Resolve conflict using “theirs”要谨慎,因为这会覆盖你本地对该文件的修改。换言之:你自己的东西只有你自己有,覆盖了就没了,服务器的代码却可以重复下载。如果你不确定一个冲突文件该如何处理,那么要找到服务器最新版本的提交人,共同探讨解决办法。

参考文献

TortoiseSVN使用手册