gerrit中commit-msg挂钩解释
1.gerrit code review 提供的此钩子实现是一个简短的shell脚本
change-id在提交消息的页脚中自动插入全局唯一标签。存在时,gerrit使用此标记来跟踪基准的提交
在将钩子安装到项目的用户本地Git存储库中之后,该钩子所提交的修改信息如下:
原本提交信息为:
Improve foo widget by attaching a bar.
we want a bar ,because it improve the foo by providing more
itwangxiaobai to the project.
Signed-off-by:wangxiaobai <itwangxiaobai@163.com>
通过在页脚中插入新的‘Change-Id’行:
Improve foo widget by attaching a bar.
we want a bar ,because it improve the foo by providing more
itwangxiaobai to the project.
Change-Id: Ic8aaa0728a43936cd4c63.......
Signed-off-by:wangxiaobai <itwangxiaobai@163.com>
钩子实现是在插入合理的Change-Id之前的任何Singed-off-by或Acked-by放置在所述端由作者提交消息,但是,如果没有这样的信息而只是插入一个空行,并添加Change-Id在的底部信息
如果change-id消息页脚中已经存在一行,则脚本将不再执行任何操作,而是使现有脚本保持change-id不变,这允许修改现有提交,或者允许用户从web上查看现有更改中复制change-id后手动插入。
2.如何获取
要获取commit-msg脚本,请使用scp,wget或curl从gerrit服务器将其下载到本地系统
您可以使用以下任一命令:
$ scp -p -P 29418 <您的用户名>@<您的gerrit审查服务器>:hooks/commit-msg<您的Git的本地路径>/.git/hooks/
$ curl -Lo <您的Gitd本地路径>/.git/hooks/commit-msg<您的Gerrit http URL>/tools/hooks/commit-msg
确保挂钩文件是可执行文件:
$ chmod u+x ~/duhproject/.git/hooks/commit-msg
实施方式:
挂钩Change-Id通过在本地Git存储库中创建虚拟提交对象并从中获取SHA-1哈希来生成唯一行。与其他任何Git提交一样,以下属性也包含在计算中:
- 正在提交的树的SHA-1
- 父提交的SHA-1
- 作者的姓名,电子邮件地址,时间戳
- 提交者的姓名,电子邮件地址,时间戳
- 建议的提交消息(在Change-Id插入之前)
因为哈希计算中包括树和父提交的名称以及提交者时间戳,所以输出 Change-id足够唯一。