有没有办法将 Subversion 存储库作为 Git 子模块添加到我的 Git 存储库中?
类似于:
git-svn submodule add https://svn.foo.com/svn/proj --stdlayout svn-project
其中 https://svn.foo.com/svn/proj
指向 Subversion 存储库。
我知道有 git-svn
允许与 Subversion 存储库交互。所以我在想,也许有一种方法可以使用 git-svn
checkout Subversion 存储库,然后将其用作子模块。
最佳答案
没有。最好的办法是在专用的 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 子模块与您提供的修订 Hook 。如果“上游”发生变化,那么您必须更新子模块的引用。
所以当我们与上游颠覆重新同步时:
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"
关于svn - 是否可以将 Subversion 存储库作为 Git 子模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/465042/