最近要在hadoop2.4上面上线hdfs raid,但是之前hdfs raid是作为svn 的branch开发的,领导希望通过patch的方式将hdfs raid功能打进trunk里面去,这里涉及到svn branch和trunk的合并问题,以下是hdfs raid 打patch的具体过程。
1、保证当前 hdfs raid 的branch分支是clean的,也就是说使用svn status看不到任何的本地修改。
2、将trunk中所有的patch打进trunk,并提交这些patch
3、命令行切换到trunk目录,执行:
svn merge https://example.com/hadoop-2.4.0/branch/hadoop-2.4.0-hdfs-raid/
将branch分支上的改动merge回trunk下。
当然在merge你也可以指定Branch上那些版本变更可以合并到trunk中,命令如下:
svn merge https://example.com/hadoop-2.4.0/branch/hadoop-2.4.0-hdfs-raid/ r117893:HEAD
以上示例中是将hdfs raid branch从版本117893到当前版本的所有改动都合并到trunk中。
当然你也可以将trunk中的某些更新合并到hdfs raid branch中,还是同样的方法。
4、如果出现merge冲突则进行解决(http://zccst.iteye.com/blog/1765519),然后就可以将hdfs raid branch的代码基于trunk打patch了,命令:
svn diff > hdfs-raid.patch
这样打patch的时候发现只能打hdfs修改部分的代码,而raid部分新加的代码打不进来,需要进行以下操作:
svn add hadoop-tools/hadoop-raid/
执行svn status,发现
hadoop-tools/hadoop-raid/target下面的文件也被add了,这部分文件是不需要提交到svn的,需要撤销svn add,执行以下命令:
svn revert --recursive hadoop-tools/hadoop-raid/target
在执行svn status,这个时候发现只有需要的文件被add了,然后执行打patch命令:
svn diff > hdfs-raid.patch
这样一来,就把所有的文件都打进了patch。
说明:如果在打patch时出现以下提示:
Hunk #1 succeeded at 1254 (offset 23 lines).
Hunk #2 succeeded at 1794 (offset 23 lines).
可以参考http://blog.youkuaiyun.com/longerzone/article/details/16967579进行解决。
参考链接:
http://www.cnblogs.com/huang0925/p/3254243.html
http://zccst.iteye.com/blog/1765519
http://blog.youkuaiyun.com/longerzone/article/details/16967579