4

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

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

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

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

问题:

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

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

4

6 回答 6

6

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

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

于 2009-03-31T01:53:43.843 回答
3

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

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

于 2009-03-31T01:57:55.143 回答
2

官方的 svn-book 引用了一个脚本,您可以使用它来简化此过程,称为svn_load_dirs.pl. 看看在线手册

于 2009-03-31T21:30:09.660 回答
1

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

无论如何,如果您离开存储库,您将丢失所有历史记录,并且您将失去所有分支或合并的机会。因此,您需要重新考虑您的组织。或者使用其他版本控制系统来满足您的需求。

于 2009-03-31T01:38:22.117 回答
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 合并也可以用于将本地更改合并回原始存储库。有关更多详细信息,请参阅链接文档中的“来自外部存储库的供应商分支”一章。

于 2022-02-04T11:01:49.200 回答
-1

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

它可能看起来像这样:

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

或者,用你用的话说:

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

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

于 2009-03-31T01:39:34.593 回答