svn - 是否可以将 Subversion 存储库作为 Git 子模块?

标签 svn git git-svn

有没有办法将 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/

相关文章:

svn - git svn clone 不检查所有目录

Git 和 SVN 在相同的代码库上

linux - 如何在git中获取删除的分支

svn - 有关使用 TortoiseGit 与 SVN 存储库交互的说明?

git - git 子模块的不同推/pull url

git - 整个团队收到 'too many unreachable loose objects' 消息

git - 如何在 IDEA JetBrains 中禁用 git add 命令的 --ignore-errors 选项?

git - 使用 TortoiseGit,我可以一步提交和 svn dcommit 吗?

svn - Subversion 的标准实践

bash - TortiseSVN svn+ssh 错误 : Unable to connect to a repository at URL . ..网络连接意外关闭