背景
在我们的分布式开发团队中,我们有一个远程放置的集中式 SVN 存储库,用于多个团队在那里提交源代码。为了提高本地性能,我们决定在我们的代码审查过程中使用Gerrit(当然是 Git 而不是 SVN),因此我们将 Git 的 master 设置为与远程 SVN 存储库互操作的“HUB”。
问题
通常,解决此问题的方法是 git-svn。但是,通过 git-svn 克隆的分支具有不同的文件夹结构,而不是传统的“.git”,Gerrit 无法识别。
目前的解决方法
所以我们采取了一种看起来有点幼稚的手段..
- 查看远程 SVN 存储库。
在与 SVN 工作副本完全相同的目录中,git clone 对应的 git 存储库。所以在这个目录中除了“.svn”之外还有一个“.git”。
$ svn co http://remote.svn.repository/some_project
$ cd some_project
$ git clone --no-checkout git_reop ./tmp
$ mv ./tmp/.git ./ # Move .git directory to SVN working copy.
$ rm -rf ./tmp
$ git reset --hard HEAD # This is tricky to tell git I want to use this directory as unstaged.
问题
如果在 SVN 和 Git 之间使用共享存储库,只需将 Git 存储库拉到与 SVN 工作副本相同的目录中,而不使用 git-svn,是否有任何问题?