我正在努力让我的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提交,但我不知道如何在命令中使用它。
答案 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
之后没有任何内容。)