在处理新功能时,我经常提交不属于功能本身的更改,但当时很有用(例如,小的更改使我的工作更容易测试)。
commit-msg
挂钩会自动为每个新提交添加Change-Id
,包括我的临时提交。这使我处于一种状态,我可能会意外地将我的分支推送到Gerrit,包括临时提交。
有没有办法去污染'一个提交,以便试图将其(意外地)推送到Gerrit将永远失败?
答案 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 requires与Change-Id
匹配^I[0-9a-fA-F]{40}$
,因此实际上任何短于40个字符的内容都将被拒绝,并显示消息invalid Change-Id
:
Change-Id: I12345678
Change-Id: I012345678901234567890123456789012345678