2014-07-04 39 views
6

是否可以通过提交消息在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: [email protected] 
Cc: [email protected] 

这里,[email protected][email protected]必须推向格里特时添加审阅。

我知道有一个special branch specifier可以添加评论者,但是希望在创建提交时使其更加自动化。这些更改是独立的,但如果我可以将它们组合在主题分支上,因为它们是相关的,这将是很好的。

+0

我想你可以创建一个推前勾对这个创造了特殊分支说明符从提交味精 – HiB

+0

@jthill git标签被添加,因为提交钩子也可能在这里工作,这需要git的知识。如果你不介意,我会回滚? – Lekensteyn

+0

我不介意。我说我的作品,你甚至不必说你的,这是你的帖子。我很容易认为大量的gerrit用户在这里也知道git足以回答这个问题,这足以扰乱跟随该标签的大量git-only用户,但不知道gerrit是不值得的。 – jthill

回答

7

这样做的方法很少。

  1. 这些线路只需添加到您的.git/config中

    [远程 “审查”]

    pushurl = SSH://用户名@格里特:29418 /项目

    push = HEAD:refs/for/master

    receivepack = git receive-pack --reviewer reviewer1 --reviewer reviewer2

    现在,当你要推的审查,只是做:混帐推审核和“reviewer1”和“reviewer2”将被添加到您的补丁集。

  2. 我想你也可以写一些脚本/钩子来自动化这个。提交后,只需grep提交的Change-id,并在下面的gerrit命令中使用它:

    ssh -p gerrit set-reviewers [--project(PROJECT)| -p (PROJECT)] [--add(REVIEWER)... | -a(REVIEWER)...] [ - ] {COMMIT | CHANGE-ID}

    举例:SSH -p 29418 gerrit.example.com格里特设置审阅-a [email protected] Iac6b2ac2

我希望它会帮助你:)

+0

(1)不可用,因为我只是想为提交添加不同的审阅者。 (2)可能是要看的东西。 – Lekensteyn

+1

如何添加审阅者组而不是单个审阅者? –

+0

@SazzadHissainKhan,显然不是。当我尝试推送时,至少我收到'致命的:用户'某个组'未找到'作为回应。 – Martin

5

无法设置每个提交审阅者,这些按推送应用(请参阅gerrit's git-receive-pack manual)。而不是执行git push origin HEADgit review(假设origin是格里特偏僻,HEAD你要推的分支),你可以运行下面添加两个审阅所有新提交:

git push origin HEAD:refs/for/master%[email protected],[email protected] 

也被应用到全部提交这不是你想要的。由于上述限制,让我们改变工作流程,先推送更改,然后设置一些评论者。


由于格里特Cc区分(只发送一个邮件通知)和评审(发送邮件,也标志着为用户审阅),我会如下修改提交信息:

component: make foo more bar 

Foo was not bar enough, this change adds more bar to make foo fit better 
in baz. 

[email protected] 
[email protected] 

Change-Id: I4724e283214e0bfbb85a8e3d8db4971618e2609a 

给定数目的提交,可以按照下面的步骤来添加单独的审阅者每次提交:

  1. 收集提交ID(或Change-Id多个)的列表。以主分支为基础的示例:git rev-list --reverse origin/master..
  2. 对于每个提交ID,请在提交消息中扫描R=...(审阅者)。对于给定犯提交信息可以git show --no-patch --format=%b COMMIT_ID
  3. 发现如果对提交信息存在审稿,增加他们的命令ssh -p 29418 [email protected] 'gerrit set-reviewers -a [email protected] 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..以扫描提交消息并添加审阅者。

0

结合gerrit流事件和set-reviewers,你可以做到这一点。其实,你首先需要得到CL的状态(创建,更新& ...),然后执行相应的操作,比如添加评论者,甚至提交CL。

  1. 从“gerrit stream-events”命令中获得gerrit事件。

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

如果您确实需要整个提交消息,“gerrit query”很有用。

过滤“patchset-created”,patchSet的编号为1(如果您只喜欢为新的patchSet执行此操作),请解析提交主题,并根据预定义获取评论者。

  1. 使用“gerrit set-reviewers”命令添加审阅者。

作为我的做法,使用python,这一切都很简单。

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

1

我把一个脚本放在一起,你可以传递你想添加的评论者的电子邮件地址,它会为你处理剩下的事情。你甚至可以在现有的提交者(电子邮件和名字)中找到模糊的地方,这样你就不必输入很多东西。

https://gist.github.com/andersonvom/924fdc5f92aefa5eca9c

使用叫它:

$ greview [<rev1> [<rev2> [...]]] 
+0

该脚本使用一个巧妙的方法来设置评论者推后:'git push --receivepack =“git-receive-pack --reviewer [email protected] --reviewer [email protected]”origin HEAD:refs/for /主/ topic' – Lekensteyn

0

发送审查的主分支更改[email protected]

git push ssh://review.example.com:29418/project HEAD:refs/for/master%[email protected] 

发送评论,但标注他们的主题名称为'bug42':

git push ssh://review.example.com:29418/project HEAD:refs/for/master%[email protected],topic=bug42 

而且CC其他两个政党:

git push ssh://review.example.com:29418/project HEAD:refs/for/master%[email protected],[email protected],[email protected] 

配置推宏来执行的最后一个动作:

git config remote.charlie.url ssh://review.example.com:29418/project 
git config remote.charlie.push HEAD:refs/for/master%[email protected],[email protected],[email protected] 

之后的.git/config中包含以下内容:

[remote "charlie"] 
    url = ssh://review.example.com:29418/project 
    push = HEAD:refs/for/master%[email protected],[email protected],[email protected] 

和现在发送一个新的改变审查查理,CC'ing爱丽丝和鲍勃是更容易:

git push charlie 
0

以下解决方案适用

SSH -p格里特设置审阅[--project(项目)| -p(PROJECT)] [--add(REVIEWER)... | -a(REVIEWER)...] [ - ] {COMMIT | CHANGE-ID}

举例:SSH -p 29418 gerrit.example.com格里特设置审阅-a [email protected] Iac6b2ac2