SVN:如何将一个分支移动到另一个分支的顶部?

3
由于我们的SVN仓库管理出现一些问题,我们最终创建了一个名为“Stable”的分支,其中包含我们代码的稳定版本(实际上,该分支是从上一个发布的标签开始创建的,而不是从主干开始)。
基本上,主干被我们的新程序员所做的一些更改所“感染”,但他们并不知道自己在做什么。
我想要达到的目标是将稳定分支变成主干,丢弃自分支以来的所有更改,但是我需要确保保留所有分支前的历史记录。
分支是否包含分支之前的所有历史记录?(如果是这样,我认为我可以将分支移动到成为主干?)
我能找到的所有教程都在谈论合并... 但我对此感到紧张,因为如果我的理解是正确的,如果主干中有没有冲突的更改,我最终会在稳定构建中得到这些更改。
所以问题是,在这种情况下,我的最佳选择是什么?
提前感谢您的回答!
4个回答

2
是的,分支包含了复制之前的所有历史记录...因此您可以删除当前的主干,然后将分支复制或重命名为主干,这样就可以顺利进行了。
svn log --help中得知:
每个日志消息只打印一次,即使该修订版本的多个受影响路径被显式请求。默认情况下,日志遵循复制历史记录。使用--stop-on-copy禁用此行为,这对于确定分支点非常有用。

2

针对您的情况,我建议您使用合并操作将您的主干版本回滚。您可以使用反向顺序指定修订版本号,并将主干作为合并命令的源和目标。例如,在主干的工作目录中(请注意,您可能更喜欢使用存储库URL):

svn merge .@Y .@X .

将回滚从版本X到版本Y所做的更改。此外,请注意svn合并命令有一个--dry-run选项,以便您在实际进行任何更改之前可以验证将要执行的操作。

请记住,使用版本控制的原因之一是可以保留更改历史记录并在必要时回滚它们。即使您现在认为不需要,主干上的错误提交也可能是您将来想要参考的内容。


接受这个决定,因为回滚似乎是最明智的选择,以防我们将来需要这些更改。谢谢! - rcknight

1

有几个选项:

  1. 您可以像组织本地目录一样在SVN中移动您的目录。所有历史记录都将被保留。(当然,这将包括您的“移动”)

  2. 如果您想将存储库带回到不会出现此错误的状态,则可以使用管理功能删除不需要的更改集并手动将它们添加到适当的位置。这可能很繁琐,如果它们在其他地方被引用,您可能需要查看修订号。

同时,我建议与团队决定一个策略以避免混淆。


0

我喜欢你描述这个程序员变化的方式。所以,如果:

  • 你真的非常讨厌这个程序员,并想要删除他所有的痕迹
  • 你有管理员访问存储库的权限

你可以尝试非常小心地执行 svnadmin dump -rX:Y 命令来转储存储库直到“感染版本”,然后删除当前存储库,并使用“未感染”的存储库进行恢复。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接