Cherry选择了Gerrit评论的补丁列表

时间:2018-12-04 11:59:33

标签: 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

但是我不想为我需要的所有补丁执行此操作。

2 个答案:

答案 0 :(得分:4)

您可以使用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>的更改。

答案 1 :(得分:0)

您可以使用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的信息。