考虑Gerrit的更改,例如更改1234
,具有以下补丁集
# Gerrit change 1234 (https://mygerrit.somewhere.net/#/c/1234/)
1 (original commit)
2 (some amendments)
3 (some amendments)
我使用git-review
检查更改补丁集2
:
$ git review -d 1234,2
Downloading refs/changes/00/1234/2 from gerrit
Switched to branch "review/foo_bar/1234"
问题:
在分支review/foo_bar/1234
上(上面review
命令后没有变化),是否有可能查询与分支关联的Gerrit补丁集编号?即。
$ ... ?
2
我自己提出的唯一方法是使用git ls-remote
来识别给定更改的所有补丁集编号(及其关联的SHA哈希值),然后将哈希值与哈希值进行比较本地分支的HEAD
(git rev-parse HEAD
)。或者只是将本地HEAD
的哈希值与git ls-remote
匹配,然后从中提取补丁集编号,但我希望采用更简洁的方法。
答案 0 :(得分:1)
您可以使用ssh查询界面和提交ID查询gerrit。例如,如果我的gerrit遥控器是......
$ git remote -v
gerrit ssh://lars@review.openstack.org:29418/openstack/tripleo-quickstart.git (fetch)
...然后我可以像这样做一个gerrit查询:
ssh -p 29418 lars@review.openstack.org gerrit query $(git rev-parse HEAD)
只是为了踢,我抓住了补丁集415754
,它让我:
$ git log -1
commit c5852f3f29f0a08236261772e8cd892eba381597 (HEAD -> review/leif_madsen/415754)
如果我运行上述ssh ...
查询,我会收到一大堆文字,内容包括:
patchSets:
number: 1
revision: a8eedf9e6c87f6542ea1802a493d9d5caa7acaa2
[...]
patchSets:
number: 2
revision: c5852f3f29f0a08236261772e8cd892eba381597
[...]
只需查找与您当前的提交ID匹配的补丁集。在这种情况下,您可以看到我有补丁集2。
您可以通过以下方式自动执行此操作:(a)使用--format json
和(b)使用JSON查询工具(例如jq
)请求JSON输出:
$ ssh -p 29418 lars@review.openstack.org gerrit query \
$(git rev-parse HEAD) --patch-sets --format json |
head -1 | jq '.patchSets[] |
select(.revision=="'"$(git rev-parse HEAD)"'").ref'
在这种情况下,产生输出:
"refs/changes/54/415754/2"