`
iamlibo
  • 浏览: 69253 次
社区版块
存档分类
最新评论

svn 分支与合并

阅读更多

http://www.svn8.com/SVNSY/20080505/576.html


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

我们使用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编程时常用的一些忽略文件。

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分别指..将要合并到主干的分支,主干,及合并后的结果。

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工具显示的界面。

2.12

l 首先比较第一个窗口与第二个窗口,把结果修改合并到第二个窗口。

l 然后确保光标处于第二个窗口时,点击上图中红色圈圈所示的按钮。这样会把第二个窗口的内容全部复制到第三个容口。之后保存,退出。

l 然后在工程目录上点右键,进行SVN->Resolved。这样会删除无用的临时文件。

l 最后提交所作的修改,并添加详细的注释。

中的标签

CVS不同,使用SVN时不用专门为目录添加标签,因为SVN也对目录进行版本管理。

我们在提交时写好注释(比如重要的版本提交时使用051201之类的日期作为开头),就可以通过注释来查找比较重要的目录版本号,相当于CVSVSS中的标签。

另外,每个工程都会有一个版本说明文件,通过此文件可以查找关键版本。

你可以重命名、移动或删除你的文件或文件夹,但请使用SVN进行这些操作,否则之前的版本信息会丢失。

使用SVN删除、移动与重命名文件夹的方法是在文件/文件夹上点右键进行SVN操作,或直接在资源浏览器中使用右键拖放(会弹出SVN选项)。

文件的删除、移动与重命名之前,必须保证工作目录是最新的版本;进行这些操作之后,需要进行提交。

1.3.3 版本的回退

在代码的编写过程中,难免会有不尽人意的地方,你也许需要回退到某一个版本,但是在这个过程中可能有一些文件你想保留,也有一些文件你不想保留,这就牵扯到很复杂的版本管理过程,在这里给大家推荐几种方法。

1. 若是你编辑了工程,在没有提交的前提下,你想放弃这些修改,你可以直接选择revert就可以更新到工程的最新的版本。

2. 若是你想退回到某一个版本,你就可以直接选择update to reversion如图,这样我们就可以把我们的版本回退到你选中的版本去,这种情况下SVN并没有显示出有什么冲突,并且新建立的文件也还在,但是在这种情况下你并不能直接在你回退后的版本上进行编辑,因为SVN的版本控制还是在最新的主干上。我们需要update并解决冲突。

3. 你可以直接选择revert changes from this revision如图,这样的话你可以直接解决冲突并提交。不过这种方法的不足是,你新建的文件都没有了,整个工程都回退到之前的版本了。

4. 我推荐的一种方法是,直接export一个你需要的版本,然后用你export的版本覆盖你的最新的版本,这样你就可以不丢失你新建的文件,同时获得headSVN控制文件。

13

每个工程会有很多个小模块,当某个模块达到稳定的时候,你就需要提交一次,以免写下个模块代码的时候出现不可恢复的错误。

每一次提交需要前,需要通过pclint检查,保证是一个编译没有错误的版本。当提交比较稳定的版本的时候,同时要修改你的版本号。

1.3.5 版本说明文件

版本说明文件为xml表格,可用excel编辑,它会记录下关键的版本信息。

版本说明文件内容如下表。发布版本是指用户对外公布的版本号,后文中有详细描述;RevisionSVN内部的工程文件夹的版本号。一个发布版本可能对应多个Revision

<!----> Technorati : svn

分享到:
评论

相关推荐

    SVN分支与合并

    SVN分支与合并,从创建分支到合并分支,步骤图文详解

    SVN 分支与合并详解

    下面是对SVN分支与合并的详细讲解。 1. SVN分支创建: 在SVN中,创建分支通常是为了进行长期的特性开发或隔离修复工作。你可以通过`svn copy`命令或者在图形界面工具中选择“创建分支”选项来实现。例如,要从...

    SVN分支与合并【超详细的图文教程】

    SVN分支的意义: 简单说,分支就是用于区分开发版本与当前发布版本的。  1、 主干负责新功能的开发  2.、分支负责修正当前发布版本的bug(对于可以放入下个发布版本的改进性bug可以直接在主干上开发)  3.、...

    SVN使用的分支与合并

    SVN 分支与合并详解 SVN(Subversion)是一款开源的版本控制系统,广泛应用于软件开发、文档管理和其他需要版本控制的领域。在软件开发过程中,SVN 的分支与合并功能是非常重要的,下面我们将详细介绍 SVN 中的分支...

    SVN分支合并到主干 冲突处理

    本文将详细讲解如何进行SVN分支与主干的合并以及冲突处理,帮助开发者更好地理解和掌握这一核心操作。 ### SVN分支与主干的概念 在SVN中,"分支"和"主干"是两个重要的概念。主干(Trunk)通常代表项目的主要开发线...

    Eclipse svn创建分支、合并、切换讲解

    3. 点击 Finish,完成,可以看到项目里出现了分支 merge_v1.0 分支中第 9026 次提交的东西最后提交即可,分支合并主干顺利完成。 四、冲突解决 在合并操作中,可能会出现冲突问题。冲突问题是指在合并过程中,出现...

    SVN创建、合并与切换分支操作详解

    以下是对SVN创建、合并和切换分支操作的详细解释: ### SVN目录结构 1. **trunk**:这是主开发分支,通常存放项目的主线开发代码。日常开发工作在此分支上进行,确保最新的稳定代码在这里。 2. **branches**:分支...

    svn分支合并基本操作

    【SVN 分支合并基本操作】是软件开发中配置管理工具 Subversion (SVN) 的核心功能之一,它允许开发团队协同工作,各自在独立的分支上开发,然后将改动合并回主干,以保持代码的稳定性和一致性。以下是详细的操作步骤...

    SVN分支的创建与合并

    SVN 分支的创建与合并 SVN 分支是一种版本控制系统的特性,允许开发者将不同的修改分离出来,放在开发品的一个分割线上。这条线被称为分支。分支经常被用来试验新的特性,而不会对开发有编译错误的干扰。当新的特性...

    SVN 拉分支及合并演示

    合并是将分支上的更改合并回主干或与其他分支合并的关键操作。SVN 提供了三种类型的合并: 1. **合并一个范围的版本** 这是最常见的合并方式,用于将分支上的所有或特定版本的更改合并到主干。在主干的工作副本上...

    svn拉分支合并文档

    "svn拉分支合并文档" SVN(Subversion)是一种开放源代码的版本控制系统,相比RCS和CVS,它采用了分支管理系统。SVN的主要特点是支持分布式版本控制,能够对文件和目录进行版本控制。 svn目录结构: * 每个子系统...

    SVN分支的合并和同步

    SVN分支的合并和同步 SVN(Subversion)是一种版本...* 不管是从trunk合并到分支还是最终从分支合并回trunk,在每次合并前最好先update,然后将本地的修改先全部commit,保护好现场,万一合并不理想随时都可以revert

    TortoiseSVN 分支与合并操作

    **TortoiseSVN 分支与合并操作** TortoiseSVN是一款强大的Subversion(SVN)客户端,专为Windows用户设计。它提供了一个图形化的界面,使得版本控制操作更加直观和便捷。在软件开发中,分支管理和合并是至关重要的...

    SVN 主干(trunk)、分支(branch )、标记(tag)

    并带 SVN分支与合并 的详细操作文档(附图)。 SVN分支与合并的总结 1.分支(branche)的创建。 1、分支创建是建立在主干上的。 2、创建分支前将整个porject_name检出到本地,然后主干(trunk) 。 3、右键 选择 ...

    SVN分支及合并使用文档.doc

    《SVN分支及合并使用详解》 版本控制系统Subversion(SVN)是软件开发中不可或缺的工具,尤其在团队协作中,分支与合并是其核心功能。本文将深入解析SVN的分支创建、管理和合并过程,帮助开发者更好地理解和运用这...

    SVN分支机制和开发规范

    二、 SVN分支简介 1、SVN仓库目录结构Repository 2、 结合eclipse创建分支 3、 结合eclipse创建标记tags 三、 合并主干和分支 1、 主干合并分支 2、 分支合并主干 3、 合并发生冲突 情况1:标记冲突,稍后处理。 ...

    svn主干与分支互相合并

    新手看看。高手绕道。主要是关于svn主干与分支互相合并的问题

    svn分主干合并,让你分主干合并立马搞定

    本文将详细解释如何执行 SVN 分支合并,特别是如何将开发分支合并到主干分支。 首先,创建主干分支是合并过程的起点。在提供的示例中,开发人员使用 `svn cp` 命令从主干创建了一个新的分支。这一步骤确保了开发...

Global site tag (gtag.js) - Google Analytics