Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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 你是如何从gerrit那里获取最新补丁的_Git_Gerrit - Fatal编程技术网

Git 你是如何从gerrit那里获取最新补丁的

Git 你是如何从gerrit那里获取最新补丁的,git,gerrit,Git,Gerrit,我想自动化一些测试,但这需要从gerrit中提取补丁。为了使自动化更加稳定,我想从gerrit中提取最新的补丁。也就是说,如果gerrit中的所有修补程序都合并到存储库中,我想提取将成为分支头的内容。这是不现实的。假设您有100个挂起的更改。如果您想要合并所有这些,那么在99%的情况下,您将最终陷入合并冲突 相反,您应该为每个变更创建自动化的构建,以尊重其依赖性。这允许您检查“如果这将被合并怎么办”的情况,理想情况下通过CI服务器进行评估。您可以尝试使用以下方法编写脚本: ssh{host}:{

我想自动化一些测试,但这需要从gerrit中提取补丁。为了使自动化更加稳定,我想从gerrit中提取最新的补丁。也就是说,如果gerrit中的所有修补程序都合并到存储库中,我想提取将成为分支头的内容。

这是不现实的。假设您有100个挂起的更改。如果您想要合并所有这些,那么在99%的情况下,您将最终陷入合并冲突


相反,您应该为每个变更创建自动化的构建,以尊重其依赖性。这允许您检查“如果这将被合并怎么办”的情况,理想情况下通过CI服务器进行评估。

您可以尝试使用以下方法编写脚本:

ssh{host}:{port}gerrit query——当前补丁集{change}| grep ref

查询: 请仔细阅读

然后你会得到一些参考:(在这种情况下,让我们拿90分)

git获取源引用/changes/90/{patch id from script}

git reset——硬取头或:git checkout取头


我希望它能满足你的动机。如果仍然卡住,我可以在某个地方进行讨论。

拉取似乎是不可能的(因为这些还不是git的一部分),但是如果您想获取更改(补丁),我可能可以帮助您。Gerrit补丁程序存储在git中,可以拉取。你知道列出所有叶子补丁的方法吗?pull=fetch+rebase。pull是fetch+merge或fetch+rebase,具体取决于配置。前者是默认值。我只想从gerrit身上拔出“头”。我想,如果有N个可能的头,那么可能会有一些自动的平局打破器,比如“最近的叶依赖”。您一般熟悉Gerrit工作流吗?我不知道你所说的“最近的叶依赖”是什么意思。每个补丁都存在于依赖树中。叶面补丁表示没有其他依赖于它们的补丁的补丁。好的。。在Gerrit的每一次开放变化中都有一片这样的叶子。只需一次更改就可以轻松构建该状态。但是将所有的叶子合并在一起(如果我没弄错的话,你想做什么)往往会导致合并冲突。我建议编辑您的问题并添加更多详细信息。我不想进行任何合并。