如何将代码分支到SVN的另一个存储库?

时间:2009-03-31 01:24:24

标签: svn version-control repository branch

我们有两个存储库,一个用于当前代码,一个用于项目管理。

现在我们需要将代码分支到项目管理库。

SVN给我一个错误,我在文档中发现SVN无法完成这项工作(不同的存储库),

所以我导出代码并签入项目存储库。

问题:

  • 如何将代码分支到另一个存储库?
  • 就我的情况而言,如何将更改从项目存储库中移回 到当前的存储库? (我还没有测试过,但我认为差异或补丁可能有效)

PS:我知道有一种主干/分支方式,但我们使用两个存储库。

5 个答案:

答案 0 :(得分:6)

如果我做得对,你想将已经受版本控制的内容从存储库添加到另一个存储库?如果就是这样,你应该看看svnsync,它可以帮助你合并不同的存储库。

否则,保留两个存储库并添加external定义(链接)以使它们共存可能更简单。这样你就不必费心去打破任何东西了。

答案 1 :(得分:3)

TortoiseSVN提供“复制并在此处添加这些文件”功能,但从SVN 1.5.5开始,不支持此功能。我还没有用1.6.0测试它

将文件从repo A右键拖动(不是正常的左键拖动)到repo B中的目录中并释放鼠标。将出现一个菜单,询问您要执行的操作。我认为有4种选择可供选择(除了普通的操作系统选项)。选择最合适的那个。

答案 2 :(得分:1)

如果,责任,你的意思是存储库(thanx,Blair),你发现你不能分支到另一个存储库。但是,如果您的代码和项目是相关的,那么将它们放在同一个存储库中是有意义的。您将需要了解有关svn的更多信息并更好地使用它。例如,“trunk”只是一个目录名,因此您可以拥有一个用于项目,另一个用于代码。虽然,使用这些特定的词语,我们大多数人都希望“代码”在“项目”中。

无论如何,如果你走出存储库,你将失去所有历史记录,并且你失去了分支或合并的所有机会。所以你需要重新思考你的组织。或者使用不同的版本控制系统来完成您想要的任务。

答案 3 :(得分:1)

官方svn-book指的是一个脚本,您可以使用该脚本简化此过程,称为svn_load_dirs.pl。看看online manual

答案 4 :(得分:0)

您应该将所有代码放在一个存储库中。

看起来像这样:

name/trunk/src
name/branches/dev/src

或者,用你所说的话:

name/current-code/src
name/project/src

然后,您可以轻松地来回svn merge