从svn合并到git,逐个提交
我们公司有两个存储库,用于开发一个产品的svn存储库(trunk)和用于部署多个产品(团队)的git存储库(master)。我们的团队希望从svn子目录“trunk/web”合并到git子目录“master/product-a/web-dev” 这些存储库有不同的源代码和不同的树结构,但是我们想要合并的两个子目录中有几乎相同的源代码。而且,它们没有任何链接,我们现在需要手动合并。Git存储库由其他团队共享,我们不能从头开始构建它(不能进行可能会停止日常开发和部署的重大更改) 是否可以在指定的修订范围内(通过几个命令或一个长程序)自动从svn子目录合并到git子目录,逐个提交?我们需要合并commit-by-commit和commit注释,这样我们就可以通过在svn中使用的redmine问题编号来跟踪git上的更改从svn合并到git,逐个提交,git,svn,version-control,git-svn,Git,Svn,Version Control,Git Svn,我们公司有两个存储库,用于开发一个产品的svn存储库(trunk)和用于部署多个产品(团队)的git存储库(master)。我们的团队希望从svn子目录“trunk/web”合并到git子目录“master/product-a/web-dev” 这些存储库有不同的源代码和不同的树结构,但是我们想要合并的两个子目录中有几乎相同的源代码。而且,它们没有任何链接,我们现在需要手动合并。Git存储库由其他团队共享,我们不能从头开始构建它(不能进行可能会停止日常开发和部署的重大更改) 是否可以在指定的修订
非常感谢您的帮助。是的,可以使用
git svn
。设置:
git svn clone svn+ssh://user@svn.example.com/trunk
cd trunk
git remote add origin git@github.com:example/develop.git
git fetch origin
这将建立一个git存储库,其中一个分支名为git svn
(svn trunk),另一个分支名为master
(git develope)
然后要应用提交:
git checkout master
git svn fetch
git cherry-pick git-svn...git-svn~10
git push
…这将在主干上应用最后10次提交,并将它们提交到开发中。是的,这可以使用
git svn
。设置:
git svn clone svn+ssh://user@svn.example.com/trunk
cd trunk
git remote add origin git@github.com:example/develop.git
git fetch origin
这将建立一个git存储库,其中一个分支名为git svn
(svn trunk),另一个分支名为master
(git develope)
然后要应用提交:
git checkout master
git svn fetch
git cherry-pick git-svn...git-svn~10
git push
…这将在trunk上应用最后10次提交,并将其提交到Development。我通过以下步骤解决了此问题:
svn diff --git -r 12345 > /tmp/12345-fileName.txt
cd /path/to/local/git/repository & git apply /tmp/12345-fileName.txt
git commit
我知道这不是一个好的做法,但我必须在版本控制系统没有大的变化的情况下解决当前的问题。谢谢大家的建议。我通过以下步骤解决了问题:
svn diff --git -r 12345 > /tmp/12345-fileName.txt
cd /path/to/local/git/repository & git apply /tmp/12345-fileName.txt
git commit
我知道这不是一个好的做法,但我必须在版本控制系统没有大的变化的情况下解决当前的问题。谢谢大家的建议。听起来你需要看看git svn,这样你就可以让git与svn保持“同步”。它非常灵活,允许您设置要跟踪的内容。。。。但是它通常非常慢,因为必须一个版本一个版本地修改“a la svn”。为什么不简单地使用其中一个版本来完成所有工作?和Git一样,为什么不在Git中做所有事情呢?我们有两个存储库的原因是,我们的Git存储库(大于5GB)包括多个团队开发的多个产品,并且针对部署进行了优化,因此它需要多个修改才能在本地tomcat服务器上运行一个产品。svn存储库是为开发而修改的,我们使用它来开发每个团队的产品。听起来您需要了解git svn,以便使git与svn保持“同步”。它非常灵活,允许您设置要跟踪的内容。。。。但是它通常非常慢,因为必须一个版本一个版本地修改“a la svn”。为什么不简单地使用其中一个版本来完成所有工作?和Git一样,为什么不在Git中做所有事情呢?我们有两个存储库的原因是,我们的Git存储库(大于5GB)包括多个团队开发的多个产品,并且针对部署进行了优化,因此它需要多个修改才能在本地tomcat服务器上运行一个产品。svn存储库是为开发而修改的,我们使用它来开发每个团队的产品。感谢您的建议。是否可以从svn子目录“trunk/web”合并到git子目录“master/product-a/web-dev”?我们的svn存储库只针对一个产品,但git存储库包含多个产品。是的。我不太清楚细节,但它看起来是这样的:
git格式补丁trunk/web/&&git am-3--directory=master/product-a/web dev/
。有关信息,请参阅mangit格式补丁
和mangit am
。谢谢,我选择了这个解决方案。为了加速非常慢的git svn克隆,我只恢复了最后的版本:git svn clone-r12345:HEADsvn://...Thank 谢谢你的建议。是否可以从svn子目录“trunk/web”合并到git子目录“master/product-a/web-dev”?我们的svn存储库只针对一个产品,但git存储库包含多个产品。是的。我不太清楚细节,但它看起来是这样的:git格式补丁trunk/web/&&git am-3--directory=master/product-a/web dev/
。有关信息,请参阅mangit格式补丁
和mangit am
。谢谢,我选择了这个解决方案。为了加速非常慢的git svn克隆,我只恢复了最后的版本:git svn clone-r12345:HEADsvn://...