2017-07-24 107 views
1

这里是我的后收到钩:我该如何让Gitolite post-receive hook显示修改文件的完整路径?

#!/bin/bash 

while read oldrev newrev ref; do 
     git diff --name-only oldrev..newrev 
     git --work-tree=/tmp checkout HEAD -- plugin.yml 
     echo -e "Test complete maybe..." | tee >(exec logger) 
done 

这里是输出:

enter image description here

如果我更换oldrev..newrev通过OLDREV - NEWREV,输出为: enter image description here

我需要获取该文件(plugin.yml)被修改的文件夹。谢谢。

+0

是的,这应该是循环内的$ oldrev和$ newrev。在https://www.cyberciti.biz/faq/unix-linux-iterate-over-a-variable-range-of-numbers-in-bash/或https://www.cyberciti.biz/faq查看更多示例/ bash-for-loop/ – VonC

+0

是的,它显示了:D和最后一个问题:我怎样才能把这个路径放入变量?也许测试= $ {git diff --name-only oldrev..newrev}? –

+0

是的,除了它是test = $(),而不是$ {}。请参阅https://unix.stackexchange.com/a/4570/7490“命令替换” – VonC

回答

1

首先,每个钩子可以简单地检查它的execution path:这会给你回购的名称。

其次,我在your previous question中提到的git diff --name-only会给你推送文件的相对路径(包括mod1/2)。

git diff --name-only $1..$2 

由于后接收钩接收oldrevnewrevref在标准输入。

+0

-name-only不存在?真?这听起来很有趣.. –

+0

@AndrewGorpenko https://git-scm.com/docs/git-diff#git-diff---name-only – VonC

+0

代码更新和添加输出。 –

相关问题