Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自动并发git推送_Git_Git Push_Git Pull - Fatal编程技术网

自动并发git推送

自动并发git推送,git,git-push,git-pull,Git,Git Push,Git Pull,我想设置一个简单的存储库,其中包含在Travis CI上编译的不同项目的输出 我不知道如何从Travis控制台安全地推送到存储库。如果有两个项目同时生成,并且两个项目恰好同时推送,则其中一个项目自然会失败,并出现未更新的引用错误 由于每个提交中的路径都保证是唯一的([project name]/[commit id]),因此我能想到的最好的脚本如下: while $(git push) not ok { git pull --rebase } 你能想出更好的办法吗?一个解决办法是推到两

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

我不知道如何从Travis控制台安全地推送到存储库。如果有两个项目同时生成,并且两个项目恰好同时推送,则其中一个项目自然会失败,并出现未更新的引用错误

由于每个提交中的路径都保证是唯一的([project name]/[commit id]),因此我能想到的最好的脚本如下:

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

你能想出更好的办法吗?

一个解决办法是推到两个不同的分支
B1
B2
,并在服务器端有一个
post receive
钩子,将这些分支合并到
master

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

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


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

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

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

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


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

您是否将生成的工件推送到git repo?@Code学徒:是的,这就是想法。您需要处理这个问题。即使在拉动之后,另一个并发作业可能已经开始推动,并再次打乱了您的时间线。换句话说,您需要一个稍微聪明一点的脚本来检测情况,执行拉和重基/合并操作,然后重试推送,如果需要,再次处理情况。但是,如果它们完全分开,为什么不为每个工件设置一个存储库?@LasseV.Karlsen:这将需要更多部署密钥,更难维护/更改等。对于一个简单的“在此处下载每个项目的当前快照”类网站来说太麻烦了。您是否将生成的工件推送到git repo?@Code学徒:是的,这是个想法。您需要处理这个问题。即使在拉动之后,另一个并发作业可能已经开始推动,并再次打乱了您的时间线。换句话说,您需要一个稍微聪明一点的脚本来检测情况,执行拉和重基/合并操作,然后重试推送,如果需要,再次处理情况。但是,如果它们完全分开,为什么不为每个工件设置一个存储库?@LasseV.Karlsen:这将需要更多部署密钥,更难维护/更改等。对于一个简单的“在此处下载每个项目的当前快照”类型的网站来说太麻烦了。这将是一个很酷的解决方案,但不幸的是github不允许任何自定义挂钩,只允许WebHook,对于那些我需要另一台服务器来处理它们的网站来说。:-/我曾考虑让分支保持原样(即不将它们合并回主分支),但这看起来大错特错,更不用说随着时间的推移分支数量的增加了。@MiroKropacek您没有提到GitHub;)我已经编辑了我的答案。这将是一个很酷的解决方案,但不幸的是github不允许任何自定义挂钩,只允许Webhook,对于那些我需要另一台服务器来处理它们的挂钩。:/我曾考虑让分支保持原样(即不将它们合并回主分支),但这看起来大错特错,更不用说随着时间的推移分支数量的增加了。@MiroKropacek您没有提到GitHub;)我已经编辑了我的答案。