2010-01-19 128 views
3

由于我们的SVN仓库管理不善,我们最终创建了一个名为Stable的分支,其中包含我们代码的稳定版本(分支实际上是从最后一个版本的标签开始的,而不是中继)。SVN:我如何将一个分支移动到另一个分支的顶部?

基本上,由于我们的新程序员发生了一些变化,他们并没有真正知道他们在干什么,基本上干线已经'感染'了。

我想要实现的是将稳定分支作为主干,丢弃自分支发生以来的所有这些更改,但是我需要确保保留所有历史预分支。

该分支是否包含分支发生之前的所有历史记录? (在这种情况下,我认为我可以移动树枝成为树干?)

所有教程我可以找到关于合并的讨论..但我很紧张,因为如果我的理解是正确的,如果有变化在没有发生冲突的后备箱中,我会在稳定的版本中结束这些。

所以问题是什么是这种情况的最佳选择?

在此先感谢您的意见!

回答

2

在你的情况下,我会建议使用合并回滚你的树干上的变化。您可以按照与使用trunk作为合并的源和目标的合并命令相反的顺序指定修订号。例如,在为主干的工作目录(请注意,你可能更愿意使用库URL):

svn merge [email protected] [email protected] . 

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

请记住,您使用版本控制的原因之一是,您可以保留更改的历史记录并在必要时将其回滚。即使你现在不这么认为,干线上的错误承诺也许是你将来想要提及的。

+0

接受此回滚似乎是最明智的选择,只是因为我们需要这些更改。谢谢! – rcknight 2010-01-19 11:55:34

2

是的,该分支包含复制之前的所有历史记录...所以您可以删除当前的主干,并将分支复制或重命名为主干,并且您应该很好。

svn log --help

每个日志信息只会打印一次,即使是明确要求为修订中涉及到的不止一个。日志默认遵循复制历史记录。使用-stop-on-copy禁用此行为,这对确定分支点很有用。

1

有几个选项:

  1. 您可以move您在SVN的目录,如果(几乎)你组织你的本地目录。所有的历史将被保留。 (这当然会包括你的'移动')

  2. 如果你想让仓库进入一个错误状态,那么你可以使用administration features来删除不需要的变更集和将它们手动添加到适当的位置。这可能是乏味的,如果他们在其他地方被引用,您可能需要查看您的修订版本号。

在此期间,我建议与团队决定strategy避免混淆。

0

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

  • 你真的真的很讨厌这样的程序员,想删除他的所作所为的所有痕迹
  • 您必须将仓库

管理权限,你可以尝试非常仔细到做一个svnadmin dump -rX:Y转储回购,直到被感染的版本,删除当前的回购,并恢复它与没有感染之一。

相关问题