专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »项目管理 » 源代码管理软件,SVN的使用技巧(图文)(1) »正文

源代码管理软件,SVN的使用技巧(图文)(1)

来源: 发布时间:星期五, 2008年9月19日 浏览:955次 评论:0

SVN是我们常用的版本控制和代码管理软件

程序员编写程序的过程中,每个程序都会有很多不同的版本,这就需要程序员很好的管理代码,在需要的时间可以取出需要的版本,并且每个版本都有一个完整的说明。

我们使用Sub Version(简称SVN)作为版本管理工具。这里着重介绍SVN作为跨平台的多人协作使用方法。在多个程序员管理同一段代码的过程中,版本的管理显得尤为重要,使用SVN可以方便的进行分支、合并,记录下所有的版本。

基本配置

在开始某项软件、文档的开发与撰写时,首先由配置管理负责人建立SVN仓库、用户名及其权限,并通知相关人员SVN仓库地址、SVN仓库负责人。

SVN仓库的负责人把工程的tsvn:logminisize设置为1,以便强制注释。设置方法:在你的工程文件夹右键->属性中,进入Subversion标签,选中tsvn: logminisize,确保复选框recursive选中,然后点击Set按钮把它的值设为1,其意思是指提交的注释最短长度为一个字。如图:

2.1

软件配置

l        忽略文件

SVN [Setting][General]设置需要忽略的文件以便忽略掉一些临时的、无用的文件常被忽略的文件有*.opt *.ncb *.suo *.plg *.pch *.idb *.pdb *.scc *.obj Debug Release *.o *.bin *.out *.ilk *.aps debug release *.clw *.bak。每个程序员可以根据自己的需要进行修改忽略文件,上面只是使用VC++Tornado编程时常用的一些忽略文件。SVN配置

2.2

以上说的忽略文件是指全局的忽略文件。SVN还能在特定的目录中指定需要忽略的文件。忽略文件支持通配符。

l        合并比较工具

Merge Tool中可以选择用来合并的工具,强烈推荐用Araxis Merge。在[Setting]->[Diff]中填入"C:\Program Files\Araxis\Araxis Merge v6.5\Merge.exe";在[Setting]->[Merge]的选项中,填入"C:\Program Files\Araxis\Araxis Merge v6.5\Merge.exe" %theirs %mine %merged ;其中"C:\Program Files\Araxis\Araxis Merge v6.5\Merge.exe"是指合并工具的路径,%theirs %mine %merged分别指..将要合并到主干的分支,主干,及合并后的结果。

SVN教程

2.3

仓库目录结构

SVN仓库的负责人规划好仓库的目录结构。推荐的目录结构如下图所示。

仓库的一级目录只有两个,分别为codedoc。其中,doc主要用来放置先期的文档,code主要用来放置工程的代码,也可以包含后期的文档。

仓库的二级目录只可以是branchtrunk两个目录,分别存放主干与分支。trunk目录下直接存放工程文件。branch目录下包括一些子目录分别对应各个分支。

2.4

SVN仓库中取出代码时,一定不要把整个仓库取出来而应该只取出trunk目录或只取出branch下的某个分支目录(比如上图中的svn:\\code\branch\xw_051206

一个项目会有多个人共同合作开发完成。基本流程是:

l        各开发成员建立自己的分支,并在此分支上开发;

l        各开发成员把分支合并到主干上并形成较为稳定的版本;

l        各个成员重新从主干上建立新的分支,在此分支上开发(即回到第一步)

l        循环往复,直到工程结束。

下面我用一个例子来说明合作开发的基本流程。

现在xblzj两个开发人员要共同开发一个工程onlytest,其这个工程的主干的SVN仓库地址如下图。

2.5

xblzj分别在onlytest这个工程中建立两个分支,分别为xb _051115lz_051115

在这里分支命名要采用[姓名缩写_6个数的日期_后缀(可选)]的形式,比如xb_051208_1xb_051212之类的。创建完分支后我们可以看到这个工程的目录结构如下图所示:

2.6分支目录

建完之后, xblzj分别在本地取出对应的分支进行开发。

程序到达一个比较稳定的阶段,就需要把分支合并到主干上,下面讲述一下合并的流程。

在本节中继续使用上一节中所示的工程与SVN仓库讲解。

1.2.3.1 xblzj分别修改自己分支上的代码

现在主干上的test_SVN.txt是空文档。

xblzj修改提交后两个分支中test_SVN.txt分别如下两图所示

2.7 xb_051129分支下的test_SVN.txt

2.8 lzj_051129分支下的test_SVN.txt

1.2.3.2 xbxb_051129分支合并到主干

xb先把主干check out到本地。然后在主干的目录上右键选择svn->merge,弹出如下窗口:

2.9合并对话框

此对话框的含义是把From指定的分支版本到To指定的分支版本之间的差异合并到主干上。

在这里分支选的是xb_051129。版本号的选定方法是点击From中的Show Log,在Log窗口中按住Ctrl键,点击选择”made a copy”之上的那个版本,以及最顶上的那个版本,如 2.11所示。然后点击确定回到上图中的对话框,会自动填写FromTo中的Revision号。

2.10选择需要合并的版本

然后直接点击merge进行合并,你也可以通过dry run来看是不是两者之间有差异。由于没有其它人修改主干,所以合并的很顺利,下图是xb_051115与主干合并后的结果。合并完毕之后,由xb对主干进行提交。

2.11合并后,主干上的test_SVN.txt

 

1.2.3.3 lzjlzj_051129分支合并到主干,解决冲突

xb合并完毕之后,lzj要将他的分支合并到主干上去,方法同上。但是由于xb已经修改过主干,所以产生了冲突,会弹出一个冲突对话框。双击对话框中的产生冲突的文件名,就可以调出工具对此文件进行合并,下图是我们用merge工具显示的界面。

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: