Eclipse 如何同步SVN和Git存储库?
我的客户使用SVN,我的公司使用Git(中央裸Git回购)。因此,我的任务是同步两台服务器。我不能使用SubGit,因为我不能在任何一台服务器上进行任何修改 我成功地使用git svn将svn下载到我的本地git repo(使用Ortoisegit)。但我不知道如何设置到中央Git存储库的远程上游(在Eclipse中使用Egit) 是否可以设置一个远程分支,这样我就可以将本地Git中的SVN内容签入到中央Git repo中?怎么做Eclipse 如何同步SVN和Git存储库?,eclipse,git,svn,version-control,Eclipse,Git,Svn,Version Control,我的客户使用SVN,我的公司使用Git(中央裸Git回购)。因此,我的任务是同步两台服务器。我不能使用SubGit,因为我不能在任何一台服务器上进行任何修改 我成功地使用git svn将svn下载到我的本地git repo(使用Ortoisegit)。但我不知道如何设置到中央Git存储库的远程上游(在Eclipse中使用Egit) 是否可以设置一个远程分支,这样我就可以将本地Git中的SVN内容签入到中央Git repo中?怎么做 谢谢。如果我理解正确,您无法更新SVN和Git存储库中的挂钩。这
谢谢。如果我理解正确,您无法更新SVN和Git存储库中的挂钩。这会使任务复杂化很多,因为如果有人在同一时刻向SVN提交,您不能拒绝Git,反之亦然 我认为,git svn不是一个解决方案,因为在向svn发送提交(“git svn DCOMIT”)时,它将git commit SHA-1更改为添加
git svn id:
签名。结果,当您将提交C推送到Git存储库时,您将该提交拿到Git svn repsository,运行“Git svn dcommit”,它将其转换为svn,并添加Git svn id:
signature以提交消息,从而更改提交SHA-1,这样您将在Git svn存储库中获得另一个提交C'。在这之后,C'应该被发送回Git存储库,然后推送C的用户应该下载C'并在其工作副本中用C'替换C'。因此,您将无法轻松、透明地进行同步
使用SubGit,您可以通过创建一个安装了SubGit的“中间”Git存储库,将问题简化为2个Git存储库的同步。同步两个Git存储库是一项更简单的任务(互联网上有很多解决方案),但它仍然不是小菜一碟,因为两个不同的用户可以同时推送到两个存储库中(并且您不能放弃其中一个推送,因为您无法在存储库中创建挂钩)。如果这些更改相互冲突,您只能手动解决,恐怕这是您能做的最好的事情:创建一个带有2个远程的存储库,并使用脚本不断地从其中一个获取更改,然后将更改推送到另一个,反之亦然(并通知管理员,在同时发生冲突的更改时停止同步)
免责声明:我可能有偏见,因为我是SubGit开发人员之一