2011-02-22 75 views
0

我正致力于让我的post-commit hook将文件更改为具有提交编号,以便我的应用程序可以在错误处理中使用它。Git Post Commit Hook获取提交编号

我能够构建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提交,这是我需要的,但我不知道如何在命令中使用它。

回答

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之后没有任何内容。)

+0

反引号是不可键入的? `是反面的,对吧? – eckes 2011-02-22 20:10:44