如果在合并到分支B后删除分支A怎么办?

时间:2015-03-16 08:38:35

标签: svn tortoisesvn

直截了当......

  
      
  1. 我有分支A和另外两个基于分支A创建的分支B和C.
  2.   
  3. 我通常会对分支A进行更改,然后根据需要手动合并B和C上的更改。
  4.   
  5. 但是如果我做SVN Merge(A - > B)进行少量修改然后分支A被删除会发生什么(可能是案例A不再是   一段时间后需要)?
  6.   

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:2)

如果在合并后删除分支怎么办?没有。合并已经发生,因此合并的历史仍然存在。 svn:mergeinfo属性甚至列出了已删除的分支。

如果您尝试合并已删除的分支会发生什么?没有。你不能。 Subversion会告诉你分支不再存在。

但是,Subversion中的任何内容都不会被删除。您始终可以撤消操作 - 甚至删除分支。我们假设你删除了修订版1001中的foo分支,你可以用它来恢复它:

$ svn cp -r1000 $REPO/branches/foo@1000 $REPO/branches

-r1000表示您对存储库的修订版1000感兴趣。由于您删除了修订版1001中的修订版,因此您在讨论删除之前的修订版

网址末尾的@1000称为固定。它说你在修订版1000的时候正在查看存储库的结构,当时该分支仍然存在。

或者,您可以在删除分支时撤消修订版1001的合并:

$ svn co --depth=immediates $RSVP/branches

immediates会为您提供分支名称,但不会显示其内容。

$ cd branches
$ svn merge -c -1001

这将删除修订版1001中的更改​​,这是删除分支时的修订版。请注意,svn cp删除之前使用了修订版,并且在删除发生时使用了修订版。

分支已经重新创建后,您可以继续进行合并,就像没有发生任何事情一样。

有一件事你无法svn add将分支添加回来:

$ svn co --depth=immediates $RSVP/branches
$ cd branches
$ svn mkdir foo
$ ...   # Copying the files back in
$ svn add -R .

这将创建一个名为foo new 分支,在您的主干或分支之间没有共享历史记录。这些文件名称相同,但Subversion会将它们视为完全不同的文件。合并的尝试只会导致心痛和情绪困扰。