首页 文章

更改默认gerrit commit-msg

提问于
浏览
2

我想更改默认的Gerrit commit-msg挂钩以自动添加Signed-off-by . 但是,我在Gerrit服务器中找不到文件commit-msg,似乎在gerrit.war文件中包含了commit-msg .

有什么办法可以更改默认的Gerrit commit-msg钩子吗?

4 回答

  • 0

    你可以在这个位置找到 commit-msg

    gerrit.war
        WEB-INF/lib/gerrit-server-server.jar
            com/google/gerrit/server/tools/root/hooks/commit-msg
    

    gerrit.warWEB-INF/lib/gerrit-server-server.jar 是存档的,因此您必须解压缩它并在更改后重新打包

  • 0

    不,没有 . 您需要开发自己的补丁集创建和草稿发布的挂钩,以便在$ GERRIT_SITE / hooks中使用 . 重要的是要记住,这些钩子需要创建一个新的补丁集(提交)来添加签名关闭信息 .

  • 0

    还有另一种方法可以帮助获取自己的commit-msg钩子而不是Gerrit的默认钩子 . 这个想法是提供另一个版本的钩子,然后让Gerrit提示Shel命令为你获取该版本 .

    以下是如何制作它 .

    • 使用Nginx或Apache设置文件服务器,并将自己的 commit-msg 挂钩放入该服务器 . 执行此操作后,您将获得该 commit-msg 挂钩的URL

    • 使用shell命令在Gerrit的配置文件 gerrit.config 中配置名为 gerrit.installCommitMsgHookCommand 的项目,该命令可以下载 commit-msg 钩子

    • 重启Gerrit服务器

    例如,我的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

    当我在提交消息中将提交提交到我的Gerrit服务器而没有Change-Id行时,我将得到以下提示:

    remote:处理更改:refs:1,done
    remote:错误:提交消息页脚中缺少Change-Id
    远程:
    remote:提示:要自动插入Change-Id,请安装钩子:
    remote:gitdir = $(git rev-parse --git-dir); wget -qO $
    / hooks / commit-msg http://myservername/hooks/commit-msg; chmod a x $ / hooks / commit-msg
    远程:然后修改提交:
    remote:git commit --amend

    通过阅读Gerrit文档中的项目gerrit.installCommitMsgHookCommand的描述,您可以清楚地看到它的工作原理 .

  • 3

    在服务器端立即更改提交消息,这是一个非常糟糕的主意 . 考虑到SHA-1也来自提交消息,因此,假设您只想在将更改提交给树时添加Signed-off-by . 你将得到一个不同的SHA-1,用户在提交中仍然会有之前的SHA-1 ...你知道我要去哪里吗?

相关问题