场景:
svn commit对相应的文件执行操作,因此将它们提交到分支
#Assume the following is being done from inside a working copy of the trunk:
svn merge -r 5:15 file:///path/to/repo/branches/my_foo
Hazzah!他将所有的变化合并到了后备箱!Mountain Dew有很多欢乐和喝酒.
现在让我们说另一位程序员在一周之后出现并将他们的工作副本从第5版更新到第15版."哇",他们说."我想知道自修订版5以来发生了什么变化".然后程序员svn status在他们的工作副本上做一个他们得到这样的东西:
------------------------------------------------------------------------ r15 | programmer1 | 2010-03-20 21:27:04 -0400 (Sat, 20 Mar 2010) | 1 line Merging Version 2.0 Changes into trunk ------------------------------------------------------------------------ r5 | programmer2 | 2010-02-15 10:59:55 -0500 (Mon, 15 Feb 2010) | 1 line Added assets/images/tumblr_icon.png to trunk
对于其他程序员在他的分支中提交所有提交的所有注释,发生了什么?合并期间那些没有被拉过来的人吗?我疯了还是忘了什么?
不,你不疯狂.不幸的是,这就是它的工作原理.
您可以做的最好的事情是在合并提交消息中包含分支URL和修订号,以便可以手动查找该分支的修订日志.(当然,数据仍在那里).
但是,您不知道哪些更改已进入主干,哪些没有.
如果主干上没有或几乎没有变化,则可以选择进行反向合并(从主干合并到分支),然后用分支替换主干.这种推理也可以在单个子文件夹上完成(例如:从分支中替换XML解析器实现子文件夹,保留其余部分).替换文件夹(使用svn delete,svn copy)将保留修订历史记录.
对于在合并期间新添加的文件,如果使用svn copy命令,则可以从分支复制其修订历史记录.但是不确定merge命令是否包含对此的支持.
知道svn是否有一个"rebase"工具(如git或mercurial)可能会很有趣.这将为分支上的每个更改创建单独的提交.另一方面,也许个别提交太杂乱了.
我可以给出的最佳建议是使用一个好的UI,例如Trac,这样可以很容易地检查修订历史记录,这样您就可以查看分支上发生的事情.
| 归档时间: |
|
| 查看次数: |
8305 次 |
| 最近记录: |