直截了当......
- 我有分支A和另外两个基于分支A创建的分支B和C.
- 我通常会对分支A进行更改,然后根据需要手动合并B和C上的更改。
- 但是如果我做SVN Merge(A - > B)进行少量修改然后分支A被删除会发生什么(可能是案例A不再是 一段时间后需要)?
醇>
任何帮助都会非常感激。
答案 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会将它们视为完全不同的文件。合并的尝试只会导致心痛和情绪困扰。