列出通过git-review下载的本地分支的相关Gerrit补丁集编号

时间:2017-11-23 18:16:07

标签: git gerrit git-review

与使用git-review

下载的本地分支关联的Gerrit补丁集编号

考虑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哈希值),然后将哈希值与哈希值进行比较本地分支的HEADgit rev-parse HEAD)。或者只是将本地HEAD的哈希值与git ls-remote匹配,然后从中提取补丁集编号,但我希望采用更简洁的方法。

1 个答案:

答案 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"