如果合并到分支 B 后分支 A 被删除怎么办?
What if branch A is removed after merge into branch B?
直截了当...
- I have branch A and two other branches B and C which were created based on branch A.
- I generally do changes on branch A and then manually merge changes on B and C if required.
- But what would happen if I do SVN Merge (A -> B) for few revisions and then branch A get deleted (may be a case A is no longer
required after some time)?
如有任何帮助,我们将不胜感激。
合并后删除分支怎么办?没有什么。合并已经发生,所以合并的历史仍然存在。 svn:mergeinfo
属性 甚至列出了被删除的分支。
如果您尝试合并已删除的分支会怎样?没有什么。你不能。 Subversion 会告诉你分支不再存在。
但是,Subversion 中的任何内容都不会被删除。您始终可以撤消操作——甚至是删除分支。假设您删除了修订版 1001 中的 foo
分支,您可以使用以下方法恢复它:
$ svn cp -r1000 $REPO/branches/foo@1000 $REPO/branches
-r1000
表示您对存储库的修订版 1000 感兴趣。由于您删除了修订版 1001 中的修订版,因此您正在谈论删除之前 的修订版。
URL末尾的@1000
叫做pinning。它是说您正在查看修订版 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 会将它们视为完全不同的文件。尝试合并只会导致心痛和情绪困扰。
直截了当...
- I have branch A and two other branches B and C which were created based on branch A.
- I generally do changes on branch A and then manually merge changes on B and C if required.
- But what would happen if I do SVN Merge (A -> B) for few revisions and then branch A get deleted (may be a case A is no longer required after some time)?
如有任何帮助,我们将不胜感激。
合并后删除分支怎么办?没有什么。合并已经发生,所以合并的历史仍然存在。 svn:mergeinfo
属性 甚至列出了被删除的分支。
如果您尝试合并已删除的分支会怎样?没有什么。你不能。 Subversion 会告诉你分支不再存在。
但是,Subversion 中的任何内容都不会被删除。您始终可以撤消操作——甚至是删除分支。假设您删除了修订版 1001 中的 foo
分支,您可以使用以下方法恢复它:
$ svn cp -r1000 $REPO/branches/foo@1000 $REPO/branches
-r1000
表示您对存储库的修订版 1000 感兴趣。由于您删除了修订版 1001 中的修订版,因此您正在谈论删除之前 的修订版。
URL末尾的@1000
叫做pinning。它是说您正在查看修订版 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 会将它们视为完全不同的文件。尝试合并只会导致心痛和情绪困扰。