我们有两个团队:内部团队在办公室后面使用内部svn代理;外部团队在开放的互联网上使用git并希望合作但无法访问内部svn。内部团队必须保留在svn上,办公室网络不允许外部访问。
问题是:办公室团队如何将他们的svn变更转发给外部团队的git repo并从git repo返回到svn?
在办公室里,我们非常成功地使用了git svn,因此所有本地开发都在git上,从/向svn提取和提交。但是,我们无法弄清楚如何链接远程仓库,以便我们可以执行以下操作:
git checkout gitmaster
git merge svntrunk
git push
git checkout svntrunk
git svn fetch
git merge gitmaster
git svn dcommit
答案 0 :(得分:1)
Git-svn适用于单个用户,具有subversion的git接口,在git-svn克隆上进行协作最终会失败(即git-svn在从subversion获取更新时使用reabse并在当时使用当前用户作为作者)推动“承诺颠覆”。
您可以使用诸如SubGit,SmartGit或https://github.com/mrts/git-svn-bridge之类的新建应用程序解决问题
答案 1 :(得分:0)
由于您的内部团队可以使用外部git仓库,因此您可以将其设置为邮件开发存储库,并不时将压缩提交转储到svn。这假设您不会从svn端进行更改,并且会因技术原因(部署/发布)而保留更改。另一方面,如果你无法避免来自svn端的更改,使用git-svn保持与git-svn的同步可能很快成为一项重大任务,你可能想要检查@joran建议的其他选项
答案 2 :(得分:0)
所以,这是我在过去两周内成功使用并成功使用的内容:
现在将svn trunk同步到git-trunk我做:
git svn fetch
git checkout git-trunk
git merge git-svn
git push
并且将git-trunk同步到svn trunk我做:
git checkout git-trunk
git svn dcommit
到目前为止工作正常。外部团队在git-trunk上工作并且不担心颠覆,内部团队像往常一样处理颠覆,并且不知道某些提交来自git。我只需要记住偶尔同步更改。
我现在意识到创建git-trunk分支可能是多余的,可以将git-svn合并到master并且dcommit master。