Cherry 在审查 Gerrit 中挑选了一个补丁列表

Cherry pick a list of patch in review Gerrit

我在 Gerrit 上有一个正在审查的补丁列表(31 个补丁,一个接一个),我想知道如何在我的本地 git.

上一次拉取它们

我知道可以通过图形界面下载补丁:

Checkout: git fetch <url> refs/changes/78/141978/9 && git checkout FETCH_HEAD
Cherry Pick: git fetch <url> refs/changes/78/141978/9 && git cherry-pick FETCH_HEAD
Format Patch: git fetch <url> refs/changes/78/141978/9 && git format-patch -1 --stdout FETCH_HEAD
Pull git pull <url> refs/changes/78/141978/9
Patch-File 376aeb6.diff.base64  |   376aeb6.diff.zip
Archive tgz | tar | tbz2 | txz

我通常使用以下命令获取补丁并挑选它:

git fetch <url> refs/changes/78/141978/9 && git cherry-pick FETCH_HEAD

但我不想为我需要的所有补丁都这样做。

您可以使用 git cherry-pick 来获得一系列连续的补丁。

git fetch <url> refs/changes/78/141978/9 
git cherry-pick <first-patch-sha>^..<last-patch-sha>

fetch 命令将从远程存储库下载补丁,cherry-pick 命令将应用从 <first-patch-sha> 包含到 <last-patch-sha> 包含的更改。

您可以使用 REST api 和 Bash 脚本:

changes=$(curl -s --request GET --user USER:PASS "https://GERRIT-SERVER/a/changes/?q=owner:self+AND+status:open&o=CURRENT_REVISION" | sed 1d | jq --raw-output ".[].revisions[].ref")

for c in $changes
do
    echo ""
    echo $c
    echo ""

    git fetch URL $c && git cherry-pick FETCH_HEAD
done

有关 Gerrit 文档的更多信息 here