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
合并两个git存储库,一个是git cvs克隆,一个是git svn克隆_Svn_Git_Cvs_Transition - Fatal编程技术网

合并两个git存储库,一个是git cvs克隆,一个是git svn克隆

合并两个git存储库,一个是git cvs克隆,一个是git svn克隆,svn,git,cvs,transition,Svn,Git,Cvs,Transition,我使用的代码来自CVS控制的存储库(@sourceforge)。我没有直接使用它,而是使用其他人制作的git克隆。在我的克隆中,我有几个修改 与此同时,上游项目已切换到SVN(@googlecode)。我能够自己创建一个自动更新的git克隆 现在,我想将之前对CVS/git的修改应用到SVN/git中。不幸的是,对于相同的提交,SHA是不同的。假设您的修补程序是一个单一的线性序列,您可以使用和轻松地完成这项工作。首先将新存储库切换到您的更改应该从中产生的版本,并创建一个新分支来保存您的更改: c

我使用的代码来自CVS控制的存储库(@sourceforge)。我没有直接使用它,而是使用其他人制作的git克隆。在我的克隆中,我有几个修改

与此同时,上游项目已切换到SVN(@googlecode)。我能够自己创建一个自动更新的git克隆


现在,我想将之前对CVS/git的修改应用到SVN/git中。不幸的是,对于相同的提交,SHA是不同的。

假设您的修补程序是一个单一的线性序列,您可以使用和轻松地完成这项工作。首先将新存储库切换到您的更改应该从中产生的版本,并创建一个新分支来保存您的更改:

cd $NEWREPO
git checkout -b my-changes $SPROUT_POINT
然后使用“git format patch”导出要迁移的提交的范围R1..R2,并使用“git am”将其应用到新存储库中:

(cd $OLDREPO; git format-patch -k --stdout R1..R2) | (cd $NEWREPO; git am -k)

我建议首先将修补程序应用于与它们最初从中萌生的CVS修订相对应的修订版,因为这样应该不会产生任何冲突。然后,如有必要,在新存储库中使用,将提交移动到相应Subversion分支的尖端。

其他选项是从CVS repo中提取更改,并在SVN repo上重新设置更改的基础。像这样(在svn回购中完成的一切)

最后一个
git-rebase
应该基于cvs上游执行所有提交,并将它们“连接”到最后一个SVN

在图形中:

cvs-repo: A -- B -- C -- D (last_cvs_commit) -- E -- F (your changes)

svn-repo: G -- H -- I -- J (last_svn_commit)
(其中A--B--C--D与G--H--I--J相同,只是有不同的散列

您使用更改签出分支并运行:

git rebase --onto J D
将情况改变为:

svn-repo: G -- H -- I -- J (last_svn_commit) -- E' -- F' (your changes, rebased)

应该是“git checkout-b my changes$SPROUT\u POINT”,而不是“git co…”谢谢;已更改。我想不是每个人都使用与我相同的别名:-)谢谢。这可能也可以,我还没有测试过,因为以前的方法对我有效。
svn-repo: G -- H -- I -- J (last_svn_commit) -- E' -- F' (your changes, rebased)