我有一个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
但是我不想为我需要的所有补丁执行此操作。
答案 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的信息。