在我们的分布式开发团队中,我们有一个远程放置的集中式SVN存储库,用于提交源代码的多个团队.为了提高本地性能,我们决定使用Gerrit(当然是Git而不是SVN)进行代码审查,因此我们将Git的主设备设置为与远程SVN存储库互操作的"HUB".
通常,此问题的解决方法是git-svn.但是,通过git-svn克隆的分支具有不同的文件夹结构,而不是传统的".git",Gerrit无法识别.
所以我们采用一种看起来有点天真的方法..
在与SVN工作副本完全相同的目录中,git克隆对应的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存储库拉到与没有git-svn的SVN工作副本相同的目录中,是否有任何问题?
两个系统几乎可以互相忽略,这并不是真正的“问题”。
(除非 git 需要忽略任何.svn/目录或唯一.svn/文件夹,如果您使用的是最新的 SVN 1.8)
http://remote.svn.repository/some_project 但是您的 git 存储库在克隆到该存储库之前必须已获得所有最新更改(以便 gerrit 使用)。
而且您无法使用 git-svn 保留作者和日期,我认为手动同步也不能,这意味着您的代码审查系统(gerrit)在这种情况下可能不那么高效(即在不知道作者的情况下审查更改) )。