gpt4 book ai didi

php - 在 webhook 触发后尝试在服务器上运行 git pull,但无法正常工作

转载 作者:行者123 更新时间:2023-12-04 02:26:43 24 4
gpt4 key购买 nike

我们有一个 PHP 脚本,它基于 github webhook 触发以在特定分支上执行 git pull。我可以轻松地手动运行命令,但是当我们尝试让脚本自动执行时,我们不断收到错误。

["error: cannot lock ref 'refs\/remotes\/origin\/dev': ref refs\/remotes\/origin\/dev is at bc75782f3b77b5c03a254cecbf4e16856e2f4155 but expected faa849975f836d8ea4f69c098f1b369aef879c43","From #####:#####\/#####"," ! faa8499..bc75782  dev        -> origin\/dev  (unable to update local ref)"]

不知道该怎么办,有什么想法吗?

谢谢!

最佳答案

鉴于显示的哈希 ID,您似乎有两个或更多脚本或多或少同时运行。其中一个首先开始并看到提交 bc75782f3b77b5c03a254cecbf4e16856e2f4155 - 可能还有一些其他提交 - 尚未在本地存储库中,但在远程存储库中,并开始检索它们。

此时,other 脚本(或其中之一)启动。它也联系远程 Git 并发现提交 bc75782f3b77b5c03a254cecbf4e16856e2f4155。它也看到这个提交还没有在本地 Git 存储库中。因此它开始检索任何必要的提交。

大约在第二个 脚本快要完成的时候,第一个 脚本也完成了。它让您的(本地)Git 将您的(本地)origin/devfaa849975f836d8ea4f69c098f1b369aef879c43 更新为 bc75782f3b77b5c03a254cecbf4e16856e2f4155,以便记住远程 Git 它正在与名称 origin 交谈,bc75782f3b77b5c03a254cecbf4e16856e2f4155 作为 its dev。这成功完成,第一个脚本现已完成。

第二个脚本现在也尝试用 bc75782f3b77b5c03a254cecbf4e16856e2f4155 替换旧的 origin/dev 值。但是 origin/dev 不再包含旧值:它现在有 bc75782f3b77b5c03a254cecbf4e16856e2f4155。这会产生您观察到的 fatal error :第二个脚本的运行失败;它无法更新 origin/dev,因为其他人先于它更新。

主要解决方案是避免如此频繁地运行脚本,这样它就不会与其他运行脚本的实例竞争。第二个是忽略此特定错误,同时不忽略任何其他更新失败,因为像这样的良性竞争不是。 Git 似乎应该认为这是一个非 fatal error ,因为存储在 origin/dev 中的值是 Git 想要存储在 origin/dev 中的值。

关于php - 在 webhook 触发后尝试在服务器上运行 git pull,但无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67083722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com