如果两个客户git svn rebase和git推到同一git回购,竞争条件如何?

如果两个客户git svn rebase和git推到同一git回购,竞争条件如何?,git,github,git-svn,Git,Github,Git Svn,如果两个客户同时尝试svn重设基础和推送,那么svn重设基础和推送多个客户到同一Git回购是否容易受到竞争条件的影响 这里有更多信息:我正在设置一个基于GitHub的SVN项目镜像。要执行镜像,我将每隔几分钟(每分钟)运行此cron作业: 为了冗余,我希望另一台服务器运行相同的cron作业。但是面对这样的比赛条件,这会打破吗 两台服务器几乎同时重新设置基址。一个将git推送更改,另一个将尝试推送相同的更改 一台服务器重新调整,然后有一个SVN签入,然后另一台服务器重新调整并快速推送新签入,然后

如果两个客户同时尝试svn重设基础和推送,那么svn重设基础和推送多个客户到同一Git回购是否容易受到竞争条件的影响

这里有更多信息:我正在设置一个基于GitHub的SVN项目镜像。要执行镜像,我将每隔几分钟(每分钟)运行此cron作业:

为了冗余,我希望另一台服务器运行相同的cron作业。但是面对这样的比赛条件,这会打破吗

  • 两台服务器几乎同时重新设置基址。一个将
    git推送
    更改,另一个将尝试推送相同的更改
  • 一台服务器重新调整,然后有一个SVN签入,然后另一台服务器重新调整并快速推送新签入,然后第一台速度较慢的服务器尝试推送一个签入
如果后面的操作只是返回一个no-op(又称为“everythingup-update”),则需要它。如果冲突推送失败也可以,只要它的cron作业稍后在非冲突的tmie上再次运行,那么它就可以正常工作


不正常的是,任何一台服务器上的本地repo都可能进入需要手动干预的失败状态。如果可能出现这种故障,我应该如何更改上述命令以使其自我恢复?

我认为您在执行此操作时不会遇到任何特殊问题。默认情况下,使用Git推送到一个裸存储库不允许非“快速向前”推送,因此,如果存在任何类型的冲突,那么推送将暂时失败。(如果当时没有冲突,下一次将成功。)

通过运行以下序列,您可以轻松地手动测试这些情况:

Instance A            Instance B
----------            ----------
git svn rebase
                      git svn rebase
git push
                      git push


我知道这不是你所问的,但如果一开始只有一台SVN服务器,为什么你需要这种冗余呢?这是一个合理的问题。SVN repo位于由专业系统管理员维护的数据中心中,而镜像cron作业将位于由非常不专业的系统管理员维护的个人服务器上。。。我所以有一些冗余是好的。另外,我想让镜像服务器自由地停机一两天,而不会让镜像变得陈旧。我想你的意思是“默认情况下,使用Git将镜像推送到一个空存储库不允许非“快速向前”推送。”:-)
Instance A            Instance B
----------            ----------
git svn rebase
                      git svn rebase
git push
                      git push
Instance A            Instance B
----------            ----------
git svn rebase
                      git svn rebase
                      git push
git push