IM寫了一個簡單的git pre-commit hook來運行要提交的文件中的Astyle(代碼美化器)。下面是代碼:我的git pre-commit hook沒有執行Astyle,也沒有設置變量。爲什麼?
#!/bin/sh
echo "git diff:"
FICHEROS=`git diff --name-only`
if [ -z "${FICHEROS}" ]; then
echo "Files not found"
else
echo "files are:"
echo "$FICHEROS"
cp $FICHEROS ${FICHEROS}_copy
echo "Running astyle"
/home/robgon/astyle/build/gcc/bin/astyle --indent=force-tab --pad-oper --pad-paren --delete-empty-lines --suffix=none --indent-namespaces --indent-col1-comments -n ${FICHEROS}_copy
echo "Formatted"
fi
當我嘗試提交文件,名爲「file1.c中」與git的承諾-a -m「測試1」,例如,我在控制檯中:
git diff:
Files not found
[master d3d2526] test1
1 file changed, 1 insertion(+), 1 deletion(-)
所以,git diff --name-only沒有在FICHEROS中設置輸出。如果預提交只嘗試運行的astyle,腳本跳過輸出和犯規格式化文件...
如果我運行的.git /鉤/從我的控制檯前的承諾,我得到:
git diff:
files are:
file1.c
Running astyle
Formato /home/robgon/gitTuto/gitRepo1/proj/file1.c_copy
Formatted
爲什麼git不能執行astyle並在預提交腳本中設置變量,並且當我從控制檯運行預提交時,它的工作原理?
如果我跑git的差異--cached --name-only,我沒有任何輸出在控制檯(在我自己的控制檯中運行這個命令)。腳本引發相同的輸出。 :( – RGonza
如果我在腳本的開頭運行git status,它會在鉤子腳本中運行'git status'? –
!!謝謝!我需要調查爲什麼我需要git狀態來運行git diff後來我在Git的一個新手 – RGonza