从svn合并到git,通过commit提交

时间:2017-05-11 18:09:55

标签: git svn version-control git-svn

我们公司有两个存储库,svn存储库(trunk)用于开发一个产品,git存储库(master)用于部署多个产品(团队)。我们的团队希望从svn子目录合并" trunk / web"到git子目录" master / product-a / web-dev"。

这些存储库具有不同的源代码,具有不同的树结构,但我们要合并的两个子目录内部几乎具有相同的源代码。此外,他们没有以任何方式链接,我们现在需要手动合并。 Git存储库由其他团队共享,我们无法从头开始构建(无法进行可能阻止日常开发和部署的重大更改)。

是否可以自动将svn子目录合并到指定的版本范围内,通过提交提交git子目录(通过一些命令或长程序)?我们需要通过提交和提交注释来合并提交,以便我们可以通过svn中使用的redmine问题编号跟踪git上的更改。

感谢您的帮助,谢谢。

2 个答案:

答案 0 :(得分:1)

我通过以下步骤解决了这个问题:

  1. 通过SVN为Git创建差异补丁

    svn diff --git -r 12345 > /tmp/12345-fileName.txt
    
  2. 修改补丁文本文件中的路径以解决SVN和Git之间的路径差异
  3. 在本地Git存储库上应用补丁

    cd /path/to/local/git/repository & git apply /tmp/12345-fileName.txt
    
  4. 承诺Git

    git commit
    
  5. 我运行了一个Java程序来生成并执行这些命令,并重复上述步骤,修订版修订,将特定范围的修订版本从SVN合并到Git。

    我知道这不是一个好习惯,但我不得不在版本控制系统没有大的改变的情况下解决正在进行的问题。谢谢大家的建议。

答案 1 :(得分:0)

是的,可以使用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 develop)。

然后申请提交:

git checkout master
git svn fetch
git cherry-pick git-svn...git-svn~10
git push

...这将在trunk上应用最后10次提交并提交它们进行开发。