不,最好的办法是在专用的 git 存储库中设置 svn 存储库的镜像。
git svn clone -s http://subversion.example.com/ mysvnclone
cd mysvnclone
git remote add origin git@example.com:project.git
git push origin master
然后您可以将 git 存储库作为子模块添加到原始项目中
cd /path/to/gitproject
git submodule add git://example.com/project.git -- svn-project
git add svn-project
git commit -m "Add submodule"
svn:externals 和 git submodule 之间有一个概念上的区别,如果你从颠覆的角度来处理这个问题,可能会绊倒你。git 子模块与您提供的修订版挂钩。如果“上游”发生变化,那么您必须更新子模块的参考。
因此,当我们与上游颠覆重新同步时:
cd /path/to/mysvnclone
git svn rebase
git push
... git 项目仍将使用我们之前提交的原始版本。要更新到 svn HEAD,您必须使用
cd /path/to/gitproject/svn-project
git checkout master
git pull
cd ..
git add svn-project
git commit -m"Update submodule"