列出通过 git-review 下载的本地分支的相关 Gerrit 补丁集编号
List associated Gerrit patch set number for local branch downloaded via 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 哈希值),然后将哈希值与本地分支的 HEAD
(git rev-parse HEAD
) 的散列。或者只是将本地 HEAD
的散列与 git ls-remote
匹配并从那里提取补丁集编号,但我希望有一种更简洁的方法。
您可以使用ssh 查询接口和commit 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
请求 JSON 输出和 (b) 使用 JSON 查询工具(例如 jq
:
$ 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"
使用 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 哈希值),然后将哈希值与本地分支的 HEAD
(git rev-parse HEAD
) 的散列。或者只是将本地 HEAD
的散列与 git ls-remote
匹配并从那里提取补丁集编号,但我希望有一种更简洁的方法。
您可以使用ssh 查询接口和commit 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
请求 JSON 输出和 (b) 使用 JSON 查询工具(例如 jq
:
$ 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"