2014-01-16 76 views
1

是否可以在git pre-commit hook腳本中修改已更改的文件(我想整理xml)?如果是的話,該怎麼做?現在我有這樣的腳本:git pre-commit:修改預提交腳本中的文件

files=`git diff --name-only --cached` 


was_xml=false 
for file in $files 
do 
    extension="${file##*.}" 
    xml="xml" 
    if [ "$extension" = "$xml" ] 
    then 
     tmp_file=$file"_xmlint" 
     echo $tmp_file >> fuck 
     xmllint --format --encode utf8 $file > $tmp_file 
     rm $file 
     mv $tmp_file $file 
     git add $file 
     was_xml=true 
    fi 
done 

if $was_xml ; then 
    git commit -m 'Xml cleanup' 
fi 

但它不工作...

回答

1

你可能想查找cleansmudge(見http://git-scm.com/book/ch7-2.html)。您可以在暫存文件的清理階段執行XML重新格式化。

+0

哦,謝謝!但我怎樣才能從乾淨的過濾器腳本獲得git文件名?我試過使用%1(我正在寫bash),但它不起作用。 –

+0

乾淨的過濾器被調用stdin上的文件內容,並將過濾後的結果放在標準輸出。它沒有得到正在使用.gitattributes工作的文件的文件名,您可以精確控制將要運行的文件。例如,如果您將重命名格式過濾器命名爲「indent-xml」,則可以將以下行添加到相應的.gitattributes文件中:''* .xml filter = indent-xml''。然後它會運行所有和只有你的XML文件。 – Wolf