让Gerrit始终拒绝提交

时间:2016-04-19 15:31:29

标签: git gerrit

在处理新功能时,我经常提交不属于功能本身的更改,但当时很有用(例如,小的更改使我的工作更容易测试)。

commit-msg挂钩会自动为每个新提交添加Change-Id,包括我的临时提交。这使我处于一种状态,我可能会意外地将我的分支推送到Gerrit,包括临时提交。

有没有办法去污染'一个提交,以便试图将其(意外地)推送到Gerrit将永远失败?

1 个答案:

答案 0 :(得分:0)

如果git commit --amend用于更改提交消息,并且Change-Id行已删除,则commit-msg挂钩会将其重新添加回来。

需要Change-Id行:

  • commit-msg挂钩会视为有效,因此不会尝试替换它或添加其他挂钩。
  • 格里特会拒绝。

commit-msg挂钩会查找与正则表达式^Change-Id:匹配的行,只要这些字符存在(包括冒号),就不会添加新的Change-Id

This commit can't be pushed to Gerrit.

Change-Id:

Gerrit firstly requires一个Change-Id与正则表达式^I[0-9a-f]{8,}.*$匹配,因此Gerrit会拒绝任何与此无法匹配的内容missing or invalid Change-Id line format in commit message footer

Change-Id: blah
Change-Id: I000
Change-Id: I1234567

对于新的更改,Gerrit subsequently requiresChange-Id匹配^I[0-9a-fA-F]{40}$,因此实际上任何短于40个字符的内容都将被拒绝,并显示消息invalid Change-Id

Change-Id: I12345678
Change-Id: I012345678901234567890123456789012345678