2012-05-02 25 views
4

我创建了一个挂钩,当开发人员将更新推送到其共享存储库时,它会发出通知电子邮件。此电子邮件包括修改过的文件列表,例如:Git plumbing命令查找给定修订版本中哪些文件已被更改

A __classes/Page/Activity.php 
M __config/Scheme.php 

,我产生使用bash的以下位:

$(git diff "$newrev"^ "$newrev" --name-status) 

这工作得很好。但是,我试图将所有这些移植到知名的post-receive-email hook。这个钩子有一个hooks.showrev配置指令,但是我认为这只允许在命令中使用修订号(%s一次。所以这是行不通的:

showrev = "git diff %s^ %s --name-status" 

必须有一个'管道'命令来做到这一点。任何人都可以将我指向正确的方向吗? :)

回答

2

如何使用以下?

showrev = "git show --name-status --pretty=format: %s" 

git show是瓷器而不是管道,但我认为这是你想要的。

+0

谢谢,它确实做我想做的!聪明,设置格式为空。 :)我现在试图让命令显示'[commit message] \ n \ n> [date] \ n> [hash]',但它还没有工作。我在命令行上使用'showrev ='git log -1 --format ='%b%n%n>%ad%n>%H'%s“'完成了这个操作,但是我收到了一些错误关于'%n'。 – Rijk

+0

这些确切的错误:'remote:printf:739:%n:invalid directive','remote:eval:1:语法错误:未终止的带引号的字符串'。任何想法如何解决这个问题? – Rijk

+0

@Rijk:尝试使用'%% n'代替'printf'格式的字符串,这就是你如何转义'%'符号。 –

1

git whatchanged -1 <rev>可能是一个很好的起点,并且有许多用于按摩输出格式的附加选项。不确定你可以得到上面引用的格式,但你应该能够得到可比较的结果。

相关问题