2016-11-04 47 views
1

我有一個自定義.gitattributes項,像這樣:定製git的清潔過濾器會修改提交的文件,但沒有工作目錄

*.csproj text filter=csprojsort 

相應的過濾器設置像這樣的的.git /配置:

[filter "csprojsort"] 
    clean = "path/to/repo/csprojsort.exe" 

在提交包含更改的.csproj文件時,篩選器按預期執行,按字母順序對文件進行排序,然後繼續提交更改。如果我執行git show path/to/file.csproj,則會顯示更改。

但是,該文件不會在我的工作目錄中更改,並且git不能識別當前狀態不同步。只有當我簽出另一個分支,然後簽出原始分支時,磁盤上的文件纔會更新。

任何線索背後是什麼?謝謝。

回答

1

這聽起來像過濾器按預期工作。該文檔說明clean過濾器是「...用於在簽入時將工作樹文件的內容轉換爲blob」,這正是您所看到的行爲。它不會修改您的工作目錄中的文件。

一個塗抹過濾器則正好相反:當您檢查出文件,將數據寫入到文件之前塗抹過濾器運行。

+0

謝謝,基於你的評論,我想我明白乾淨是什麼意思(行結局等)。我將以其他方式實現這個排序功能, – TKR

相關問題