我们有两个存储库,一个用于当前代码,一个用于项目管理。
现在我们需要将代码分支到项目管理存储库。
SVN 给我一个错误,我在文档中发现 SVN 无法完成这项工作(不同的存储库),
所以我导出代码并签入到项目存储库。
问题:
- 如何将代码分支到另一个存储库?
- 就我而言,如何将更改从项目存储库移回当前存储库?(我还没有测试它,但我认为差异或补丁可能会起作用)
PS:我知道有一种主干/分支方式,但我们使用两个存储库。
我们有两个存储库,一个用于当前代码,一个用于项目管理。
现在我们需要将代码分支到项目管理存储库。
SVN 给我一个错误,我在文档中发现 SVN 无法完成这项工作(不同的存储库),
所以我导出代码并签入到项目存储库。
问题:
PS:我知道有一种主干/分支方式,但我们使用两个存储库。
TortoiseSVN 提供了“在此处复制和添加这些文件”功能,但从 SVN 1.5.5 开始,不支持此功能。我还没有用 1.6.0 测试过
将您的文件从 repo A 右拖动(不是普通的左拖动)到 repo B 中的目录并释放鼠标。将出现一个菜单,询问您要做什么。我认为有 4 个选项可供选择(除了正常的操作系统选项)。选择最合适的一种。
官方的 svn-book 引用了一个脚本,您可以使用它来简化此过程,称为svn_load_dirs.pl
. 看看在线手册
如果,责任,你的意思是存储库(thanx,Blair),你发现你不能分支到另一个存储库。但是如果你的代码和你的项目是相关的,那么将它们放在同一个存储库中是有意义的。你会想了解更多关于 svn 并更好地使用它。例如,“trunk”只是一个目录名称,因此您可以为项目使用一个,而为代码使用一个单独的名称。尽管使用这些特定的词,我们大多数人都希望“代码”在“项目”中。
无论如何,如果您离开存储库,您将丢失所有历史记录,并且您将失去所有分支或合并的机会。因此,您需要重新考虑您的组织。或者使用其他版本控制系统来满足您的需求。
@andrew-edgecombe 已经(间接)提到的“供应商分支”似乎是可能的。这个概念似乎在以后的 SVN 版本中得到了一些更新,因为1.8 版文档已经使用纯 SVN 命令提到了这个过程 - 使用以下命令制作远程存储库的副本(一个分支):
svn copy http://remote_v1 local
并稍后通过 2-URL 合并合并新更新:
svn merge http://remote_v1 http://remote_v2 local
我会说相同的 2-URL 合并也可以用于将本地更改合并回原始存储库。有关更多详细信息,请参阅链接文档中的“来自外部存储库的供应商分支”一章。
您应该将所有代码放在一个存储库中。
它可能看起来像这样:
name/trunk/src
name/branches/dev/src
或者,用你用的话说:
name/current-code/src
name/project/src
然后,您可以轻松地svn merge
来回。