SVN:有没有办法将修订后提交的文件的所有最新版本复制到分支机构,但只有这些文件?

时间:2015-02-20 18:13:32

标签: svn version-control merge

我已阅读完整的“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。好像我想在那个阶段对这些文件进行快照,包括之前修订版的所有内容。但只有该修订版中涉及的那些文件。

  • 我不希望只有版本11到12的区别。因为如果我在r10中向文件A添加了一个function1(),在r12中添加了一个函数2()到同一个文件A,并且我“樱桃挑选” :
    cd branchWorkingCopy
    svn merge -c 12 ^/project/trunk

它只会将差异上传到工作副本,这意味着将复制function2()但是分支中不会出现function1()。

  • 我不想修改版本10中的Z文件的修改,也不希望修改版本11上的C文件的修改。我只想要提交r12时的“当前”整个文件,但只有那些文件参与提交。在这个例子中,我想要文件R,E和A以及自修订版9以来的所有更改。但我不想手动选择文件R,E和A.

在svn中有没有办法解决这个问题?除了必须单独获取所有文件并“手动”复制其最新版本(个人)?

P.S。:用例是什么?有时我已经准备好/需要将修改(12)复制到我们的测试分支,但我还没有准备好使用之前的修改(r10),尽管我需要一些先前修改的更新文件。

1 个答案:

答案 0 :(得分:0)

首先,回答您的直接问题:您需要“挑选合并”每个单独的文件。幸运的是,svn merge可以对单个文件以及目录路径起作用。

可以樱桃选择合并所有感兴趣的修订版,然后恢复你不想要的文件更改,但是然后合并信息是错误的,稍后合并将省略该修订版,即使有需要更多更改才能应用。

但是,更好的问题是,为什么首先只需要将一部分提交到您的分支上?如果您正在有效地使用SVN,那么每个提交将只包含您几乎总是想要一起或根本不想要的相关更改。你在一起做了一堆无关的改变吗?如果是这样,您应该考虑更改开发过程而不是解决它。