我想更改默认的Gerrit commit-msg挂钩以自动添加Signed-off-by。但是,我在Gerrit服务器中找不到文件commit-msg,似乎在gerrit.war文件中包含了commit-msg。
有什么办法可以更改默认的Gerrit commit-msg钩子吗?
答案 0 :(得分:3)
还有另一种方法可以帮助获取自己的commit-msg钩子而不是Gerrit的默认钩子。 这个想法是提供另一个版本的钩子,然后让Gerrit提示Shel命令为你获取该版本。
以下是如何制作它。
commit-msg
挂钩放入该服务器。执行此操作后,您将获得该commit-msg
挂钩gerrit.installCommitMsgHookCommand
中配置名为gerrit.config
的项目,该命令可以下载commit-msg
挂钩例如,我的Gerrit服务器中gerrit.installCommitMsgHookCommand
的值为:
gitdir=$(git rev-parse --git-dir);
wget -qO ${gitdir}/hooks/commit-msg http://myservername/hooks/commit-msg;
chmod a+x ${gitdir}/hooks/commit-msg
当我在提交消息中将提交提交到没有Change-Id行的Gerrit服务器时,我将收到以下提示:
远程:处理更改:参考:1,完成
remote:错误:提交消息页脚中缺少Change-Id
远程:
remote:提示:要自动插入Change-Id,请安装钩子:
remote:gitdir = $(git rev-parse --git-dir); wget -qO $ {gitdir} / hooks / commit-msg http://myservername/hooks/commit-msg; chmod a + x $ {gitdir} / hooks / commit-msg
远程:然后修改提交:
remote:git commit --amend
通过阅读Gerrit文档中项目gerrit.installCommitMsgHookCommand的描述,您可以看到它的工作原理。
答案 1 :(得分:0)
不,没有。您需要开发自己的补丁集创建和草稿发布的挂钩,以便在$ GERRIT_SITE / hooks中使用。重要的是要记住,这些钩子需要创建一个新的补丁集(提交)来添加签名关闭信息。
答案 2 :(得分:0)
您可以在此位置找到commit-msg
:
gerrit.war
WEB-INF/lib/gerrit-server-server.jar
com/google/gerrit/server/tools/root/hooks/commit-msg
gerrit.war
和WEB-INF/lib/gerrit-server-server.jar
是存档的,因此您必须解压缩并再次更改重新包装后
答案 3 :(得分:0)
在服务器端立即更改提交消息是一个非常糟糕的主意。考虑到SHA-1也是由提交消息组成的,因此,假设您只想在将更改提交给树时才添加Sign-off。您最终将获得不同的SHA-1,并且用户在提交中仍将具有先前的SHA-1 ...您知道我要去哪里吗?