我已阅读完整的“SVN书籍”,但找不到我要找的内容。
假设我有trunk和branch_test,字母代表提交的文件:
由于有1个声誉,我无法发布图像,这里是ASCII绘图:
Files: (A, B, C, E, R, Z) Z R B E A C A C 9 10 11 12 13 --r--r---r---r---r--- trunk \ ----------------------- branch_test Revision 10: added function1( ) to file A Revision 12: added function2( ) to file A
这是上图的图像版本:http://s22.postimg.org/hkzsavb35/SVN_diagram.png
我想将文件R,E和A的修订版12从trunk复制到branch_test。好像我想在那个阶段对这些文件进行快照,包括之前修订版的所有内容。但只有该修订版中涉及的那些文件。
cd branchWorkingCopy svn merge -c 12 ^/project/trunk
它只会将差异上传到工作副本,这意味着将复制function2()但是分支中不会出现function1()。
在svn中有没有办法解决这个问题?除了必须单独获取所有文件并“手动”复制其最新版本(个人)?
P.S。:用例是什么?有时我已经准备好/需要将修改(12)复制到我们的测试分支,但我还没有准备好使用之前的修改(r10),尽管我需要一些先前修改的更新文件。
答案 0 :(得分:0)
首先,回答您的直接问题:您需要“挑选合并”每个单独的文件。幸运的是,svn merge
可以对单个文件以及目录路径起作用。
你可以樱桃选择合并所有感兴趣的修订版,然后恢复你不想要的文件更改,但是然后合并信息是错误的,稍后合并将省略该修订版,即使有需要更多更改才能应用。
但是,更好的问题是,为什么首先只需要将一部分提交到您的分支上?如果您正在有效地使用SVN,那么每个提交将只包含您几乎总是想要一起或根本不想要的相关更改。你在一起做了一堆无关的改变吗?如果是这样,您应该考虑更改开发过程而不是解决它。