详细说明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分支与合并,以及实例 一,svn分支与合并有什么用? 作程序的,对svn在熟悉不过了,但对svn分支熟悉的,我想并不多.因为一般情况下,是用不着svn分支的,其实也没有那个必要.下面我例 ...
- Git -- 分支与合并 (命令行+可视化工具p4merge)
基本命令 把所有的变化都放在master分支并不是最好的做法. 建议的做法是把变化放在分支里面. 至少应该准备一个feature分支之类的, 把变化都隔离开来, 然后等到所有的功能都稳定之后再合并到m ...
- SVN 分支及合并的介绍和实践---命令行
写在前面 一些相关的概念和原理 进行分支开发的最佳实践 合并的分类 在 Eclipse 中进行合并操作 相关资源 写在前面 本文是由演讲整理而来的,介绍了 SVN 分支与合并的概念.流程和一些实际操作 ...
- SVN分支与合并【超详细的图文教程】(转载)
SVN分支与合并 一. 分支与合并的概念 二. SVN分支的意义 三. 如何创建分支与合并分支 一.分支与合并的概念: 分支:版本控制系统的一个特性是能够把各种修改分离出来放在开发品的一个分割线上.这 ...
- [Oracle] SQL*Loader 详细使用教程(2)- 命令行参数
sqlldr工具 SQL*Loader的客户端工具是sqlldr,在操作系统的命令行下输入sqlldr,后面不接任何参数,将显示帮助信息如下所示(所有命令行参数的简单描述及其默认值),所以你并不需 ...
- 实例讲解SVN分支和合并问题(转)
本节向大家简单描述一下SVN分支和合并方面的知识,在学习SVN的过程中SVN分支和合并时经常遇到的问题,在这里和大家分享一下,希望本文对大家有用. 关于主线同SVN分支合并的概念及如何使用的误区此问题 ...
- SVN 分支代码合并到主线
SVN 分支代码合并到主线 步骤一安装TortoiseSVN 客户端,在本地 checkout主线代码 步骤二:创建branches分支 步骤三.branches修改提交代码 步骤四:分支代码合并到主 ...
- SVN分支的合并和同步
使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响,最主要的原因是,自己对分支的目的和合并 ...
- myeclipse使用SVN分支与合并详解
此博文主要内容来源地址:https://blog.csdn.net/liuyifeng1920/article/details/53118183,感谢原创博主: 先介绍一下svn的两种开发和发布的规范 ...
随机推荐
- Linux下解决“shutdown: command not found"问题
今天关机时,使用shutdown来执行此操作,但出现了一个"bash:shutdown:command not found"错误提示.这让我很困惑,这个命令在系统中是肯定存在的,但 ...
- Linux(Ubuntu 13)下安装Eclipse
1.本机配置及软件情况: Ubuntu版本:Ubuntukylin-13.10-desktop-i386(32位) JDK:jdk1.7.0_15(jdk-7u15-i856.gz) eclipse: ...
- zBoot/Makefile
#上层makefile调用执行make命令,执行的应该是第一个目标allHEAD = head.oSYSTEM = ../tools/zSystem#LD = gcc#TEST = -DTEST_DR ...
- sqlserver函数
SQLServer时间日期函数详解,SQLServer,时间日期, 1. 当前系统日期.时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基础 ...
- 局域网络ping不通
描述:今天和老崔.老周去公司的新办公地点//相比临时的,十分高大上.当我们把两台台式电脑A.B装好了,网络设置也陪好了,确认能够上网,再装打印机的时候,发现搜索不到打印机的ip(打印机也是有自己的IP ...
- about JNI
1.Java对C/C++事件处理的封装JIT(Just in Time.Java语言的原动态编译技术) 大多数的游戏引擎都是使用可移植的C语言开发的,然后通过简单的封装以适应特殊的平台. 2.Andr ...
- Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 0 [ ^
Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character clas ...
- svg如何用marker 定义一个黑色的小圆点
<defs> <marker id="markerStartArrow" viewBox="0 0 30 30" refX="10& ...
- .NET垃圾回收 – 非托管资源
前面一篇文章介绍了垃圾回收的基本工作原理,垃圾回收器并不是可以管理内存中的所有资源.对于所有的托管资源都将有.NET垃圾回收机制来释放,但是,对于一些非托管资源,我们就需要自己编写代码来清理这类资源了 ...
- linux库
将库函数打包成一个单元使之能够在运行时被多个进程共享的技术,这种技术能够节省磁盘空间和RAM. 一. 静态库:1.概念: 静态库就是一些目标文件的集合,以.a结尾.静态库在程序链接的时候使用, ...