如果两个客户端都尝试svn-rebase并同时推送,那么从多个客户端到同一个Git仓库的svn-rebasing-and-push是否容易受到竞争条件的影响?
以下是更多信息:我正在设置一个SVN项目的GitHub托管镜像。要进行镜像,我将每隔几分钟运行一次这个cron作业(每this article个):
git svn rebase
git.exe push origin master
为了冗余,我想让另一台服务器运行相同的cron作业。但面对这样的竞争条件,这会打破吗?
git push
更改,另一个将尝试推动相同的更改。如果后面的操作只返回no-op(又名“Everything up-to-date”),则需要。如果冲突的推送失败也是可以的,只要它的cron作业稍后在非冲突的tmie中再次运行,那么它将正常工作。
不正常的是,任一服务器上的本地存储都可能进入需要手动干预的失败状态。如果可能出现这种类型的故障,我应该如何更改上面的命令以使它们自我恢复?
答案 0 :(得分:2)
我认为你不会遇到任何特殊问题。默认情况下,使用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