是否可以合并仅作为前合并的子集存在的特定修订?

时间:2014-03-08 08:17:44

标签: svn version-control merge

在我的方案中,我有三个分支b1b2b3。 我在b1中创建了三个文件A,B和C,并单独提交,生成此日志:

svn log ^/branches/b1
------------------------------------------------------------------------
r14
C created
------------------------------------------------------------------------
r13
B created
------------------------------------------------------------------------
r12
A created
------------------------------------------------------------------------

然后我更改为分支b2并合并b1

中的更改
svn merge ^/branches/b1

导致r15

svn log ^/branches/b2
------------------------------------------------------------------------
r15
Merged from b1: A,B,C
------------------------------------------------------------------------

现在我想将仅修订版r12 合并到分支b3。我可以使用svn log -g ^/branches/b2查看所有修订版12,13和14。 当我执行merge命令时,只写入mergeinfo:

svn merge -c 12 ^branches/b2
--- Recording mergeinfo for merge of r12 into '.':
 U   .

但我希望将文件A从b2合并到b3的确切修订版。 如果我做对了,这是不可能的,因为b2路径中不存在r12。因此,实现我想要的只有两种方式:

  • 将r12从b1合并到b3
  • b1的每个修订单独合并并提交到b2,然后选择那里的“新”修订

我已经看到了这个:SVN. Merge every single branch revision separately让我了解了如何实现一个简化后一种选择的脚本。

是不是有可能用svn“本地”实现这个?

由于

1 个答案:

答案 0 :(得分:0)

  

我可以使用svn log -g ^/branches/b2

查看所有修订版12,13和14

但是(我的样本)

>svn log -g -q -v
------------------------------------------------------------------------
r9 | Badger | 2014-03-09 02:01:44 +0600 (Вс, 09 мар 2014)
Changed paths:
   M /branches/b2
   A /branches/b2/A.txt (from /branches/b1/A.txt:8)
   A /branches/b2/B.txt (from /branches/b1/B.txt:8)
   A /branches/b2/C.txt (from /branches/b1/C.txt:8)
------------------------------------------------------------------------
r8 | Badger | 2014-03-09 02:00:16 +0600 (Вс, 09 мар 2014)
Changed paths:
   A /branches/b1/C.txt
Merged via: r9
------------------------------------------------------------------------
r7 | Badger | 2014-03-09 01:59:56 +0600 (Вс, 09 мар 2014)
Changed paths:
   A /branches/b1/B.txt
Merged via: r9
------------------------------------------------------------------------
r6 | Badger | 2014-03-09 01:59:38 +0600 (Вс, 09 мар 2014)
Changed paths:
   A /branches/b1/A.txt
Merged via: r9
------------------------------------------------------------------------
r3 | Badger | 2014-03-09 01:56:48 +0600 (Вс, 09 мар 2014)
Changed paths:
   A /branches/b1 (from /trunk:2)
Merged via: r9
------------------------------------------------------------------------
r4 | Badger | 2014-03-09 01:57:41 +0600 (Вс, 09 мар 2014)
Changed paths:
   A /branches/b2 (from /trunk:3)
------------------------------------------------------------------------
r2 | Badger | 2014-03-09 01:55:10 +0600 (Вс, 09 мар 2014)
Changed paths:
   A /trunk/Main.txt
------------------------------------------------------------------------
r1 | Badger | 2014-03-09 01:52:47 +0600 (Вс, 09 мар 2014)
Changed paths:
   A /branches
   A /tags
   A /trunk
------------------------------------------------------------------------
合并后在b2中记录存在修订版b8 必须表示没有

    输出中的
  • Merged via: r9
  • 与受影响文件中的b2路径无关

合并到的良好迹象,但不属于分支修订版

如果您希望将合并更改从一个特定修订更改为另一个节点,则必须才能使用来自节点的修订版本(在您的情况下为b1)