自动并发git推送

时间:2017-03-12 04:36:22

标签: git git-push git-pull

我想设置一个简单的存储库,其中包含在Travis CI上编译的不同项目的输出。

我无法弄清楚如何从Travis控制台安全地推送到存储库是最简单的方法。如果有两个项目同时构建,并且两个项目碰巧同时推送,其中一个项目自然会因未更新的refs错误而失败。

由于每个提交中的路径都保证是唯一的([项目名称] / [提交ID]),我能想到的最好的是这样的脚本:

while $(git push) not ok {
    git pull --rebase
}

你能想到更好的事情吗?

1 个答案:

答案 0 :(得分:0)

解决方法是推送到两个不同的分支B1B2,并在服务器端有一个post-receive挂钩,将这些分支合并到master

由于每个提交中的路径都保证是唯一的,因此这些合并不会产生任何冲突并且可以自动化。

推送到两个不同的分支意味着不应该有任何并发​​问题。

由于远程是GitHub,另一种方法是在Travis-CI端合并这些分支,然后只推送一个分支。