Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 有没有可能;附加“;从一个subversion存储库到另一个subversion存储库的修订?_Svn_Version Control - Fatal编程技术网

Svn 有没有可能;附加“;从一个subversion存储库到另一个subversion存储库的修订?

Svn 有没有可能;附加“;从一个subversion存储库到另一个subversion存储库的修订?,svn,version-control,Svn,Version Control,不久前,我们将Subversion存储库移动到一个新服务器(“B”),希望旧服务器(“A”)退役 嗯,服务器/存储库A实际上从未退役,而且在我不知道的情况下,许多受源代码管理的项目中的一个从未更新过其工作副本引用。换句话说,该项目(以及该项目本身)的所有更改都已提交到旧服务器 新服务器上的特定项目没有任何更新,因此实际源代码中不存在任何冲突。但是,很明显,修订数字会不一致 是否可以将提交到存储库A的更改合并到存储库B中 本质上,我所要求的与这个问题类似,只是这是针对Subversion的,而不是

不久前,我们将Subversion存储库移动到一个新服务器(“B”),希望旧服务器(“A”)退役

嗯,服务器/存储库A实际上从未退役,而且在我不知道的情况下,许多受源代码管理的项目中的一个从未更新过其工作副本引用。换句话说,该项目(以及该项目本身)的所有更改都已提交到旧服务器

新服务器上的特定项目没有任何更新,因此实际源代码中不存在任何冲突。但是,很明显,修订数字会不一致

是否可以将提交到存储库A的更改合并到存储库B中

本质上,我所要求的与这个问题类似,只是这是针对Subversion的,而不是git,实际上没有任何分支,只有一组全部提交到主干(在错误的存储库中)的更改

我不需要连续同步,这只是旧存储库最终真正退役之前的一次性操作。我更愿意为这个有问题的项目提供整个修订历史,也就是说,不只是将最新版本作为一个大规模修订提交

为了防止问题不完全清楚,这里有一个视觉效果:

Repository A
  Project X:  Rev 1 -> Rev 2 -> Rev 3
  Project Y:  Rev 4 -> Rev 5 -> Rev 6

Repository B:
  Project X:  Rev 1 -> Rev 2 -> Rev 3 -> Rev 4 -> Rev 5 -> Rev 6
                                           |        |        |
Expected outcome for Repository A:         v        v        v
  Project X:  Rev 1 -> Rev 2 -> Rev 3 -> Rev 7 -> Rev 8 -> Rev 9
  Project Y:  Rev 4 -> Rev 5 -> Rev 6
我只想把A的树的一部分的所有修订(并且只有那一部分)复制到B的存储库中,而不去管其他的事情。如果有必要,我同意X的修订看起来像B上的新修订


解决方案?

您可以使用
svnadmin dump
获取整个存储库的转储,然后使用
svndumpfilter
仅生成特定存储库路径的转储。然后使用
svnadmin load
将结果文件导入到新存储库中


以下是一些示例:

只要两个存储库中的更改不重叠,您可以执行以下操作:

svnadmin dump——增量-r4:6/repository/B | svnadmin load/repository/A

在存储库A中创建修订版7、8和9,保留作者、时间戳等

--incremental
确保转储的更改与版本3相关,后者应该与存储库A中已有的内容相匹配


(为了安全起见,我会先用存储库a的一次性副本来测试这一点。)

对于任何遇到这一点的人来说:这确实有效,但如果您只是为存储库的一部分添加了
——drop empty revs
选项,那么为svndumpfilter添加该选项非常重要,否则,您将得到大量的空修订。