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