转:http://blog.csdn.net/tanlijun37/article/details/5481342
1:进入主干的svn目录
2:首先查询出创建分支的开始版本
命令:svn -q --stop-on-copy 分支URL,这条命令会查询出自创建分支以后
分支上的所有修改,最下面的那个版本号就是我们要找的版本号.
示例:
svn log -q --stop-on-copy svn://192.168.1.177/tags/beta_2009_12_24
3:使用svn merge命令合并分支。
命令:
svn -r 分支版本号:HEAD 分支的URL
解释:HEAD为当前主干上的最新版本
示例:
svn merge -r 12:HEAD svn://192.168.1.177/tags/beta_2009_12_24
4: 使用svn st | grep "C "查找合并时的冲突文件,手工解决冲突
5:使用svn commit -m "" 提示合并后的版本
--------------------------------------------------------------------------------------------------------
详细说明svn分支与合并,以及实例
一,svn分支与合并有什么用?
作程序的,对svn在熟悉不过了,但对svn分支熟悉的,我想并不多。因为一般情况下,是用不着svn分支的,其实也没有那个必要。下面我例举几个需要用到svn分支的情况:
1,比较大的项目。比较大的项目,一般情况下会分成几个阶段来完。好比什么五年计划。到了某个阶段时,我建立一个分支,当个备份。万一将来开发下个阶段东西的时候,出现致命错误的时候,我还能把这个分支拿出来接着用。
2,项目要开发新的东西,但是又不想和主干冲突,建立一个分支,单独做为一个开发分支。这样做也是为了责任明确。如果出了问题也好有所查证。
二,创建svn分支
在说创建分支前,关于svn的安装和配置,请参考linux svn安装和配置,不结合apache
1,创建一个代码文件夹main
[root@BlackGhost repos]# pwd
/home/zhangy/checkout/repos
[root@BlackGhost repos]# svn add ./main
A main
A main/test.php
[root@BlackGhost repos]# svn commit ./main -m "test"
Adding main
Adding main/test.php
Transmitting file data .
Committed revision 5.
2,创建分支
[root@BlackGhost repos]# svn copy svn://127.0.0.1/repos/main svn://127.0.0.1/repos/branch -m "test"
Committed revision 6.
3,查看分支情况
[root@BlackGhost repos]# svn log -v ./branch/test.php
------------------------------------------------------------------------
r6 | zhangy | 2010-10-24 19:59:35 +0800 (Sun, 24 Oct 2010) | 1 line
Changed paths:
A /branch (from /main:5)
test
------------------------------------------------------------------------
r5 | zhangy | 2010-10-24 19:53:20 +0800 (Sun, 24 Oct 2010) | 1 line
Changed paths:
A /main
A /main/test.php
test
------------------------------------------------------------------------
4,注间事项:
a),创建分支,只能在同一个仓库内进行,跨仓库是不行的。会提示svn: No repository found in 'svn://127.0.0.1'
b),创建分支时,注意加上注释,不然会报以下错误。
[root@BlackGhost repos]# svn cp svn://127.0.0.1/repos/main svn://127.0.0.1/repos/branch
svn: Could not use external editor
to fetch log message; consider setting the $SVN_EDITOR environment
variable or using the --message (-m) or --file (-F) options
svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR are
set, and no 'editor-cmd' run-time configuration option was found
三,合并分支
下面讲一个例子,来说明怎么合并分支。我觉得通过例子,最能让人学到东西了,我在我的博文一在强调这一点。
1,修改main中的文件提交到svn服务器端,这样main的代码就和branch分支的代码就不一样了。
2,把main文件中的文件同步到分支中branch中
[root@BlackGhost branch]# pwd //是否在分支的文件夹中
/home/zhangy/checkout/repos/branch
/**
把main的修改同步到branch分支中
如果是指定版本的可以svn merge -r 9:10 svn://127.0.0.1/repos/main
*/
[root@BlackGhost branch]# svn merge svn://127.0.0.1/repos/main
--- Merging r6 through r8 into '.': //更新到第8个版本
U test.php
[root@BlackGhost branch]# svn log -v test.php //查看test.php,从下面我们可以看出,分支版本还是没有变为什么呢?
------------------------------------------------------------------------
r6 | zhangy | 2010-10-24 19:59:35 +0800 (Sun, 24 Oct 2010) | 1 line
Changed paths:
A /branch (from /main:5)
test
------------------------------------------------------------------------
r5 | zhangy | 2010-10-24 19:53:20 +0800 (Sun, 24 Oct 2010) | 1 line
Changed paths:
A /main
A /main/test.php
test
------------------------------------------------------------------------
[root@BlackGhost branch]# svn commit -m "test" //提交
Sending .
Sending test.php
Transmitting file data .
Committed revision 9.
[root@BlackGhost branch]# svn log -v test.php //是没因为没有提交,提交后会产生一个新的版本
------------------------------------------------------------------------
r9 | zhangy | 2010-10-24 20:52:22 +0800 (Sun, 24 Oct 2010) | 1 line
Changed paths:
M /branch
M /branch/test.php
test
------------------------------------------------------------------------
r6 | zhangy | 2010-10-24 19:59:35 +0800 (Sun, 24 Oct 2010) | 1 line
Changed paths:
A /branch (from /main:5)
test
------------------------------------------------------------------------
r5 | zhangy | 2010-10-24 19:53:20 +0800 (Sun, 24 Oct 2010) | 1 line
Changed paths:
A /main
A /main/test.php
test
------------------------------------------------------------------------
到这儿合并基本上就结束了。
3,上面说的是将主干的文件同步到分支中去,把分支的内容同步步主干也是一样的,倒过来就行了。
4,全并的时候,有可能会冲突的,看下面
[root@BlackGhost main]# svn merge svn://127.0.0.1/repos/branch
Conflict discovered in 'test.php'. //提示有冲突
Select: (p) postpone, (df) diff-full, (e) edit, //在这里让你选择处理方式
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options: p
--- Merging r7 through r12 into 'test.php':
C test.php
Summary of conflicts:
Text conflicts: 1 //虽然有冲突,但是还是可以同步了,也说明同步成功了。
--- /tmp/tempfile.2.tmp Sun Oct 24 21:02:11 2010
+++ .svn/tmp/test.php.tmp Sun Oct 24 21:02:11 2010
@@ -0,0 +1,9 @@
+<<<<<<< .working
+asdfadfadfadf
+111111111111111
+=======
+asdfadfadfadf
+111111111111111
+222222222222
+
+>>>>>>> .merge-right.r12
分享到:
相关推荐
本文将详细讲解如何进行SVN分支与主干的合并以及冲突处理,帮助开发者更好地理解和掌握这一核心操作。 ### SVN分支与主干的概念 在SVN中,"分支"和"主干"是两个重要的概念。主干(Trunk)通常代表项目的主要开发线...
合并操作是 SVN 中的一种重要操作,通过合并操作,可以将分支中的修改合并到主干中。在 Eclipse 中,合并操作可以通过以下步骤实现: 1. 在分支中进行开发,并且提交,在主干中进行更新。 2. 打开合并,选择类型,...
在信息技术飞速发展的今天,为了加快开发的效率,提升各个部门的联动...日益更新的用户需求和不断升级的版本,如何才能做到灵活控制版本,今天我们请到了智博创享web端开发大牛卢建敏,他将分享使用SVN的心得和经验。
本文将详细解释如何执行 SVN 分支合并,特别是如何将开发分支合并到主干分支。 首先,创建主干分支是合并过程的起点。在提供的示例中,开发人员使用 `svn cp` 命令从主干创建了一个新的分支。这一步骤确保了开发...
SVN分支的意义: 简单说,分支就是用于区分开发版本与当前发布版本的。 1、 主干负责新功能的开发 2.、分支负责修正当前发布版本的bug(对于可以放入下个发布版本的改进性bug可以直接在主干上开发) 3.、...
新手看看。高手绕道。主要是关于svn主干与分支互相合并的问题
【SVN 分支合并基本操作】是软件开发中配置管理工具 Subversion (SVN) 的核心功能之一,它允许开发团队协同工作,各自在独立的分支上开发,然后将改动合并回主干,以保持代码的稳定性和一致性。以下是详细的操作步骤...
3. 分支上修改的 bug,经常性 merge 到主干上,尽量及时 merge(避免大面积红色区域) 4. 只能分支往主干靠拢(merge),不能反向! 5. 直到下个新版本发布,该分支停止修改 如何创建分支与合并分支: 1. 首先要在...
4. **大版本更新**:新功能在主干上开发完成后,如果需要进行一次大的升级,可以在主干上打上一个TAG作为大版本号,并基于此创建一个对应的分支,然后在分支上进行打包部署。 #### 三、Eclipse 下 SVN 分支/合并/...
二、 SVN分支简介 1、SVN仓库目录结构Repository 2、 结合eclipse创建分支 3、 结合eclipse创建标记tags 三、 合并主干和分支 1、 主干合并分支 2、 分支合并主干 3、 合并发生冲突 情况1:标记冲突,稍后处理。 ...
分支合并到主干是svn分支管理的最后一步。在分支合并到主干中,我们需要按照以下步骤进行: 1. 将分支中改动的代码全部提交。 2. 切换到trunk。 3. 右击项目->Team->合并,选择merge two different trees,然后输入...
当在主干上创建 `new_trunk_main.txt` 文件并提交后,分支上并不会自动包含这个新文件,因为分支是在文件添加之前创建的。这意味着分支是基于某个特定历史版本的主干创建的,它独立于主干的后续变更。 三、合并 ...
并带 SVN分支与合并 的详细操作文档(附图)。 SVN分支与合并的总结 1.分支(branche)的创建。 1、分支创建是建立在主干上的。 2、创建分支前将整个porject_name检出到本地,然后主干(trunk) 。 3、右键 选择 ...
SVN分支的合并和同步 SVN(Subversion)是一种版本控制系统,能够帮助开发者有效地管理项目代码。其中,分支(Branch)和合并(Merge)是两个非常重要的概念。本文将对SVN分支的合并和同步策略进行详细的介绍。 ...
* 合并分支:可以将不同的分支合并到一起,例如将功能分支合并到主干上。 svn的权限管理: * 权限控制:可以根据需要设置不同的权限,例如读取、写入、执行等。 * 访问控制:可以根据需要设置不同的访问控制,例如...
### SVN分支管理多版本知识点详解 #### 一、引言 在软件开发过程中,随着项目的迭代更新,如何高效地管理不同版本之间的代码成为了项目管理中的一个重要环节。Subversion(简称SVN)作为一款广泛使用的版本控制...
Eclipse会自动加载该分支的信息,并将您的工作区切换到该分支上。 #### 总结 以上就是在Eclipse中利用SVN进行分支管理的主要步骤。创建分支可以帮助团队成员在不影响主干的情况下进行特性开发或修复bug;合并分支...