2010-05-20 70 views
2

我有一堆ruby腳本在git倉庫中,它似乎很難強制人們編寫正確的縮進代碼。如何確定執行過濾器時通過gitattributes過濾的文件?

我也有一個小的ruby腳本,它的代碼格式爲特定的標準,現在我想運行它作爲一個過濾器腳本,以便垃圾不會被提交到存儲庫。

echo "*.rb filter=rubyfilter" > .gitattributes 
echo "[filter \"rubyfilter\"]" >> .git/config 
echo " clean = /home/rasjani/bin/rbeauty" >> .git/config 
echo " smudge = /home/rasjani/bin/rbeauty" >> .git/config 

不髒伎倆git的一面,但在Ruby腳本,然後應該處理影響了文件:

如何/我在哪裏可以看那些呢?

回答

2

GitPro Book

GIT中描述僅用於文件的子目錄或子集應用於那些設置。這些特定的路徑設置稱爲Git屬性和設置無論是在你的目錄中的一個.gitattributes文件

git attributes手冊頁提到:

  • 在退房時,當塗抹命令被指定時,該命令從其標準輸入中輸入blob對象,並使用其標準輸出來更新工作樹文件。
  • 同樣,clean命令用於在簽入時轉換worktree文件的內容。

alt text

所以,你的腳本將處理每個*.rb文件(其中.gitattributes文件所在的目錄和子目錄)結賬,提交。

有關具體示例,請參閱此SO question
你可以用一個測試你自己的設置:

git checkout --force 

注:在提到這個SO questionsmudgeclean腳本只能修改一個文件的內容,不知道他們是什麼確切的文件處理。

+0

沒有真正回答這個問題,因爲我確實在尋找一種方法來真正獲取文件名,但無論如何我都會接受這個問題,因爲沒有其他答案。 – rasjani 2010-09-01 11:42:15

+0

@rasjani:「獲取文件名」,這正是我爲什麼鏈接到http://stackoverflow.com/questions/2059326/git-equivalent-of-subversions-url-keyword-expansion/2059393#2059393:一個過濾器驅動程序只能獲取文件的*內容*,而不能獲取其文件名。它將在結帳步驟中調用,並實際上「處理受影響的文件」。 – VonC 2010-09-01 12:05:26

+0

是的,完全理解這一點,這就是爲什麼我接受了答案。但問題的精神主要是關於如何獲取文件名,而不是關於內容,所以任何替代方式來存檔我問的東西都不會很好。 – rasjani 2010-09-03 06:07:27