Gerrit:使用已有的git回购
问题描述:
我想将gerrit引入到我的软开发环境中。问题是,我已经有现有的git回购协议...... 我能够通过执行以下命令来安装格里特并获得现有的回购协议的副本:git clone --mirror ssh://some_machine/path/to/favourite/project.git project.git
Gerrit:使用已有的git回购
但现在,我需要将修改同步回原来的回购。有没有办法做到这一点,或者我需要完全转向由gerrit处理的新回购站,并且阻止已有的git回购站,以便开发人员无法检查其中的内容?
对不起,很新的格里特...
答
运行两个并行库,人们提交代码是痛苦的,因为有人需要保持同步。只要Gerrit实例用于游玩并且没有真正的提交,那么你很好,但是如果人们在那里做实际的工作,那么你应该在你想去的地方下定决心。
为了协调两个已经发散的存储库,克隆其中一个,将另一个存储库添加为新的远程,从分支的顶端合并,并推回。以下示例显示如何将分支branchname从gerrit.example.com复制到git.example.com。
$ git clone ssh://git.example.com/some/project
$ cd project
$ git remote add gerrit ssh://gerrit.example.com/some/project
$ git fetch gerrit
$ git checkout origin/branchname
$ git merge gerrit/branchname
$ git push origin HEAD:branchname
显然你必须解决合并导致的任何冲突。根据需要重复其他分支。
该示例将在分离头上创建合并提交。如果你喜欢,你可以先创建一个命名分支并合并到它。
谢谢Magnus! – krinker
我想你说的是我不能在一台机器上使用git repos,而在另一台机器上使用Gerrit,而且我不得不手动合并。我希望能够让Gerrit在不同的机器上使用已有的回购站,或者在不同的git服务器上同步回购站和回购站。 这里的问题是,我们有一个服务器,只有管理员可以触摸,我试图设置Gerrit实例来执行代码审查之前,我们检查到管理只有git回购。有点像拦截器。 Gerrit有没有办法在不同的机器上指向git repos?谢谢 – krinker
Gerrit要求直接访问文件系统。我不知道如果您将这个文件系统与直接访问这些扫描仪的东西分享,会发生什么情况。我认为一些行动将会很好。你的问题类似于http://stackoverflow.com/questions/21424563/is-two-way-sync-between-gerrit-and-github-com-possible/21434744#21434744中描述的多主站问题。也许你可以以不同的方式碎化,例如通过将一些乐曲完全转移到Gerrit中来尝试一些事情?或者切换到Gerrit,但在某些情况下只使用代码审查功能?这是一个很好的通用Git服务器。 –