9

我是 git 新手,我希望能够在推送到源/主服务器后捕获提交消息,并根据字符串包含的内容运行 bash 脚本(在服务器上)。

例如,如果我的 git commit 消息说:[email] my commit message

如果提交消息包含[email]则执行指定的操作,否则不执行。

这是我正在考虑在post-receive挂钩中使用的示例 bash 脚本:

#!/bin/bash

MESSAGE= #commit message variable?

if [[ "$MESSAGE" == *[email]* ]]; then
        echo "do action here"
else
        echo "do nothing"
fi

基本上我只需要知道提交消息的变量名是什么,在上面的 bash 脚本中使用?另外,我不确定这是否是正确的钩子。

4

2 回答 2

28

我想我找到了自己问题的答案;可以使用以下git-log命令获取变量:

git log -1 HEAD --pretty=format:%s

所以,我的脚本是:

#!/bin/bash

MESSAGE=$(git log -1 HEAD --pretty=format:%s)

if [[ "$MESSAGE" == *\[email\]* ]]; then
        echo "do action here"
else
        echo "do nothing"
fi

我希望这可以帮助任何正在寻找答案的人。

于 2011-02-02T02:31:50.133 回答
1

你可能想要一个git 钩子

于 2011-02-02T01:47:09.003 回答