通过提交消息添加审阅者

时间:2014-07-04 14:52:03

标签: git gerrit

是否可以通过提交消息在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.combob@example.net必须在推荐给gerrit时添加为审核者。

我知道有special branch specifier添加审阅者,但我想在创建提交时更自动化。这些更改是独立的,但如果我可以将它们分组到主题分支上是很好的,因为它们是相关的。

6 个答案:

答案 0 :(得分:9)

无法设置每个提交审阅者,这些是每次推送应用的(请参阅gerrit's git-receive-pack manual)。不是执行git push origin HEADgit 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

鉴于一些提交,可以按照以下步骤为每个提交添加单独的审阅者:

  1. 收集提交ID(或Change-Id s)的列表。假设主分支为基础的示例:git rev-list --reverse origin/master..
  2. 对于每个提交ID,在提交消息中扫描R=...(审阅者)。可以使用git show --no-patch --format=%b COMMIT_ID
  3. 找到给定提交的提交消息
  4. 如果存在提交消息的审阅者,请使用命令ssh -p 29418 user@host 'gerrit set-reviewers -a bob@example.net COMMIT_ID'(而不是COMMIT_ID)添加它们,您也可以使用Change-Id I4724e283214e0bfbb85a8e3d8db4971618e2609a作为示例)。
  5. 要执行上述步骤(连同自动检测用户,主机和端口设置),我写了一个Bash脚本:https://git.lekensteyn.nl/scripts/tree/git/gerrit-add-reviewers

    建议您的仓库中有一个.gitreview文件,其中一个远程指向Gerrit实例。然后从该git仓库中执行~/scripts/gerrit-add-reviews origin/master..以扫描提交消息并添加审阅者。

答案 1 :(得分:8)

其他方法很少。

  1. 只需将这些行添加到.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”将添加到您的补丁集中。

  2. 我认为你也可以编写一些脚本/钩子来实现自动化。提交后只需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

  3. 我希望它会对你有所帮助:)。

答案 2 :(得分:2)

我整理了一个脚本,您可以在其中传递要添加的审阅者的电子邮件地址,它将为您处理剩下的事情。您甚至可以在现有的提交者(电子邮件和姓名)中进行模糊查找,这样您就不必输入很多内容。

http://i.stack.imgur.com/XTdlJ.png

只需使用以下方法调用:

$ 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。

  1. 从&#34; gerrit stream-events&#34;获取gerrit事件命令。

  2. 将JSON格式事件解析为每一行。 在JSON事件中,我们可以获得项目,分支,Change-Id,CL-number,Commit(不是整个提交)的主题以及大量信息。

  3. 如果你真的需要整个提交消息,&#34; gerrit query&#34;很有用。

    过滤&#34; patchset-created&#34;,patchSet的数字为1(如果您只喜欢为新的patchSet执行此操作),解析提交的主题,并按预定义获取审阅者。

    1. 使用&#34; gerrit set-reviewers&#34;命令,添加评论者。
    2. 作为我的练习,使用python,这一切都很简单。

      它的流动就像一个小小的詹金斯。