是否可以通过提交消息在Gerrit中添加审阅者?请考虑以下提交消息:
component: make foo more bar
Foo was not bar enough, this change adds more bar to make foo fit better
in baz.
Change-Id: I4724e283214e0bfbb85a8e3d8db4971618e2609a
Cc: alice@example.com
Cc: bob@example.net
此处,alice@example.com
和bob@example.net
必须在推荐给gerrit时添加为审核者。
我知道有special branch specifier添加审阅者,但我想在创建提交时更自动化。这些更改是独立的,但如果我可以将它们分组到主题分支上是很好的,因为它们是相关的。
答案 0 :(得分:9)
无法设置每个提交审阅者,这些是每次推送应用的(请参阅gerrit's git-receive-pack manual)。不是执行git push origin HEAD
或git review
(假设origin
是gerrit remote,而HEAD
你要推送的分支),你可以运行以下内容添加两个评论者对于所有新提交:
git push origin HEAD:refs/for/master%r=alice@example.com,r=bob@example.com
这适用于所有提交,这不是您想要的。由于上述限制,我们首先更改工作流程以推送更改,然后设置一些审阅者。
由于Gerrit区分Cc
(仅发送邮件通知)和审阅者(发送邮件,但也将用户标记为审阅者),我将按如下方式修改提交邮件:
component: make foo more bar
Foo was not bar enough, this change adds more bar to make foo fit better
in baz.
R=alice@example.com
R=bob@example.net
Change-Id: I4724e283214e0bfbb85a8e3d8db4971618e2609a
鉴于一些提交,可以按照以下步骤为每个提交添加单独的审阅者:
Change-Id
s)的列表。假设主分支为基础的示例:git rev-list --reverse origin/master..
R=...
(审阅者)。可以使用git show --no-patch --format=%b COMMIT_ID
ssh -p 29418 user@host 'gerrit set-reviewers -a bob@example.net COMMIT_ID'
(而不是COMMIT_ID
)添加它们,您也可以使用Change-Id
I4724e283214e0bfbb85a8e3d8db4971618e2609a
作为示例)。要执行上述步骤(连同自动检测用户,主机和端口设置),我写了一个Bash脚本:https://git.lekensteyn.nl/scripts/tree/git/gerrit-add-reviewers
建议您的仓库中有一个.gitreview
文件,其中一个远程指向Gerrit实例。然后从该git仓库中执行~/scripts/gerrit-add-reviews origin/master..
以扫描提交消息并添加审阅者。
答案 1 :(得分:8)
其他方法很少。
只需将这些行添加到.git / config
即可[remote“review”]
pushurl = ssh:// user @ gerrit:29418 / project
push = HEAD:refs / for / master
receivepack = git receive-pack --reviewer reviewer1 --reviewer 评论者2
现在,当您想推送评论时,只需: git push review ,“reviewer1”和“reviewer2”将添加到您的补丁集中。
我认为你也可以编写一些脚本/钩子来实现自动化。提交后只需grep提交的Change-id,并使用下面的gerrit命令:
ssh -p gerrit set-reviewers [--project(PROJECT)| -p (项目)] [ - 添加(评论员)... | -a(评论员)......] [ - ] {COMMIT | CHANGE-ID}
示例:ssh -p 29418 gerrit.example.com gerrit set-reviewers -a anuj@example.com Iac6b2ac2
我希望它会对你有所帮助:)。
答案 2 :(得分:2)
我整理了一个脚本,您可以在其中传递要添加的审阅者的电子邮件地址,它将为您处理剩下的事情。您甚至可以在现有的提交者(电子邮件和姓名)中进行模糊查找,这样您就不必输入很多内容。
只需使用以下方法调用:
$ greview [<rev1> [<rev2> [...]]]
答案 3 :(得分:2)
将主分支上的更改评论发送至charlie@example.com:
git push ssh://review.example.com:29418/project HEAD:refs/for/master%r=charlie@example.com
发送评论,但使用主题名称'bug42'标记它们:
git push ssh://review.example.com:29418/project HEAD:refs/for/master%r=charlie@example.com,topic=bug42
另外还有其他两方:
git push ssh://review.example.com:29418/project HEAD:refs/for/master%r=charlie@example.com,cc=alice@example.com,cc=bob@example.com
配置推送宏以执行上一个操作:
git config remote.charlie.url ssh://review.example.com:29418/project
git config remote.charlie.push HEAD:refs/for/master%r=charlie@example.com,cc=alice@example.com,cc=bob@example.com
之后.git / config包含以下内容:
[remote "charlie"]
url = ssh://review.example.com:29418/project
push = HEAD:refs/for/master%r=charlie@example.com,cc=alice@example.com,cc=bob@example.com
现在向查理发送一个新的审查更改,CC'ing alice和bob更容易:
git push charlie
答案 4 :(得分:1)
有一个非常好的Git-review工具,可以简化Gerrit的生活。除了其他语法糖优势之外,它还允许您通过命令行添加审阅者,如:
git review --reviewers someone@someone.com someoneelse@someone.com
当然,您可以从中创建git别名,使其更简单:
#git review --reviewers someone@someone.com someoneelse@someone.com
git publish
它没有直接回答你的问题&#34;如何从提交消息&#34;添加审阅者,但它可以用于,例如,创建自定义预提交挂钩并首先提取电子邮件并推送他们要认真第二
答案 5 :(得分:0)
结合gerrit stream-events和set-reviewers,你可以做到这一点。
实际上,您首先需要获取CL的状态(创建,更新&amp; ...),然后执行相应的操作,例如添加审阅者,甚至提交CL。
从&#34; gerrit stream-events&#34;获取gerrit事件命令。
将JSON格式事件解析为每一行。 在JSON事件中,我们可以获得项目,分支,Change-Id,CL-number,Commit(不是整个提交)的主题以及大量信息。
如果你真的需要整个提交消息,&#34; gerrit query&#34;很有用。
过滤&#34; patchset-created&#34;,patchSet的数字为1(如果您只喜欢为新的patchSet执行此操作),解析提交的主题,并按预定义获取审阅者。
作为我的练习,使用python,这一切都很简单。
它的流动就像一个小小的詹金斯。