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

4
我们有两个代码库,一个用于当前代码,另一个用于项目管理。
现在我们需要将代码分支到项目管理代码库。
SVN给我一个错误提示,我在文档中发现,SVN不能完成此操作(不同的代码库)。
所以,我将代码导出并检入到项目代码库中。
问题是:
- 如何将代码分支到另一个代码库? - 对于我的情况,如何将更改从项目代码库移回到当前代码库?(我尚未测试,但我认为diff或patch可能有效)
PS:我知道有一种主干/分支方式,但我们使用两个代码库。
6个回答

6
如果我理解正确,您想将已经在版本控制下的内容从一个存储库添加到另一个存储库? 如果是这样,您可能应该看一下 svnsync,它可以帮助您合并不同的存储库。
否则,保持两个存储库并添加外部定义(链接)以使它们共存可能更简单。 这样,您就不必太担心破坏任何东西。

3
TortoiseSVN提供了“将这些文件复制并添加到此处”的功能,但在SVN 1.5.5中不支持此功能。我尚未测试过它在1.6.0上的表现。
从仓库A中向右拖动(不是普通的左拖)您的文件到仓库B中的一个目录中,然后释放鼠标。会出现一个菜单询问您想要做什么。除了正常的操作系统选项外,有四个选项可供选择。请选择最合适的选项。

2

官方svn书籍提到了一个名为svn_load_dirs.pl的脚本,您可以使用它来使这个过程更加容易。请查看在线手册


1
如果你所说的 "responsibility" 意思是代码库(感谢 Blair),那么你会发现无法切换到另一个代码库。但如果你的代码和项目相关,则将它们放在同一个代码库中是有意义的。你需要学习更多关于 SVN 并更好地使用它。例如,“trunk” 只是一个目录名,因此您可以为项目和代码分别设置一个名称。尽管大多数人希望 "code" 在 "project" 中,但这并非必须。无论如何,如果你跳出一个代码库,你将失去所有历史和分支合并的机会。因此,你需要重新思考组织方式,或使用不同的版本控制系统来满足你的需求。

1
我知道如何以正确的方式解决它,但我们都会面临一些不容易改变的事情,比如组织结构。 - linjunhalida

0

通过“供应商分支”,这似乎已经是可能的,@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合并也可以用于将本地更改合并回原始存储库。请参阅链接文档中的“来自外部存储库的供应商分支”章节以获取更多详细信息。


-1

你应该将所有的代码放在一个仓库中。

它可能看起来像这样:

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

或者,用你的话说:

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

然后,您可以轻松地进行svn合并


5
因为没有应对问题,只是说“本来应该”的话被扣分。这位人无法控制公司代码存储在不同的代码库中。 - Sarah Vessels
1
在某些情况下,您没有直接在源存储库中创建分支的权限。例如一些开源项目。您仍然希望能够将代码与主干同步,并将自己的开发保留在不同的存储库中进行源代码控制。 - Max Kielland

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