1

我正在努力让我的 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

我希望提交编号是某种保存提交 ID 的变量。

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

4

1 回答 1

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 上的可键入性更好。)

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

于 2011-02-22T20:09:14.533 回答