Git Post Commit Hook获取提交号码

时间:2011-02-22 19:40:07

标签: git bash post-commit post-commit-hook

我正在努力让我的post-commit钩子更改文件以获得提交编号,以便我的应用程序可以在错误处理中使用它。

我能够构建perl脚本来更改文件,但我想知道如何从钩子中获取提交ID。目前我的钩子看起来像这样:

#!/bin/sh
#
# An example hook script that is called after a successful
# commit is made.
#
# To enable this hook, rename this file to "post-commit".

#: Nothing
perl -pi -e 's/[A-Za-z0-9+]$/commit-number/' ../../config/commit.git

我希望commit-number是某种包含提交ID的变量。

编辑:我发现git rev-parse HEAD将生成我需要的HEAD提交,但我不知道如何在命令中使用它。

1 个答案:

答案 0 :(得分:3)

您可以将命令的输出用作$(...)的字符串或反引号`...`。因此,您的脚本可能如下所示:

 perl -pi -e 's/[A-Za-z0-9+]$/'$( git rev-parse HEAD )/ ../../config/commit.git

 perl -pi -e 's/[A-Za-z0-9+]$/'` git rev-parse HEAD `/ ../../config/commit.git

(我更喜欢第一个,因为它更好地嵌套并且更具可读性。而且它在Stackexchange上可以更好地打字。)

顺便问一下,你确定你的正则表达式是正确的吗?现在它用最后一个提交ID替换最后一个字符(如果它是字母数字字符或+)。也许+应该在]之后? (如果你只想匹配git-commit-IDs,你可以使用s/[a-f0-9]+/ - 没有大写,而f之后没有任何内容。)