`

如何合并svn分支到主干上

 
阅读更多

转: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分支与合并,以及实例

张映 发表于 2010-10-24

分类目录: 服务器相关

一,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分支合并到主干 分支 主干 合并 冲突 英文

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

    Eclipse svn创建分支、合并、切换讲解。 主要是合并操作。分支合并主干,已经冲突问题的解决。

    SVN分支与主干代码合并.png

    在信息技术飞速发展的今天,为了加快开发的效率,提升各个部门的联动...日益更新的用户需求和不断升级的版本,如何才能做到灵活控制版本,今天我们请到了智博创享web端开发大牛卢建敏,他将分享使用SVN的心得和经验。

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

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

    svn主干与分支互相合并

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

    SVN分支机制和开发规范

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

    SVN主干和分支操作

    把eclipse中的项目导入到svn主干中,并且创建分支,以及主干和分支合并

    svn分支合并基本操作

    因此各开发成员需要建立自己的开发分支,并在此分支上进行开发工作,之后各开发成员把分支合并到主干上并形成较为稳定的版本,在后续的工作中各个成员重新从主干上建立新的分支,在此分支上继续开发,并其循环往复...

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

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

    项目开发—SVN主干和分支使用原理简单分析.ppt

    项目开发—SVN主干和分支使用原理简单分析 PPT

    svn分支管理

    svn分支管理 分支合并到主干,代码更加方便管理,svn高级使用

    SVN分支的合并和同步

    描述了SVN的合并和同步策略,从分支方法、同步方法等方面进行了描述。

    用SVN分支管理多版本

    用SVN分支管理多版本 为了在多个版本中并行开发,提高开发效率,保证各个版本和各 个环境(开发、测试、主干)的独立,避免相互影响,减少最终 发布时合并主干出现冲突的概率,降低冲突处理的难度,特编写 该文档

    SVN分支合并经验总结

    在项目中常用的新建分支后合并到主干的详细教程

    svn_主干(trunk)_分支(branck)_标记(tag)的原理及操作

    介绍了svn主干,分支和标记的相关概念、相互关系及有关的操作方法

    SVN安装和深入理解分支和模拟实践

    目录如下: 一、下载和安装 二、配置和使用方法【服务器端】 ...四、测试主干和分支合并 1、测试号1 2、测试号2 3、测试号3 4、测试号4 五、发布稳定版本到tags 六、实际开发和发布约定 七、友情提示 八、参考

    代码合并与发布流程

    svn 合并 主干合分支 分支合主干 eclipse中svn插件使用 svn客户端使用

    个人总结的svn常见操作

    总结了常见的几个svn操作、合并等svn添加忽略提交的列表方法 svn代码冲突的解决方法 恢复"删除或覆盖"的代码 恢复"删除或覆盖"的文件 合并分支的内容到主干 从主干上合并内容到分支

    使用SVN进行版本控制 使用SVN1.2

    版本控制工具 SVN无疑是最主流 也是企业用的最普遍的 这篇SVN详细介绍了SVN的所有常用命令 以及相关的SVN概念 如主干分支 update checkout switch等...

Global site tag (gtag.js) - Google Analytics