2016-04-23 57 views
0

最近當我讀到git clean/smudge過濾器時,我認爲這是一種自動壓縮圖像的好方法,我在推動之前添加&提交到我的回購。使用git清潔過濾器進行圖像壓縮

的問題是,我只能有乾淨的過濾器,而不是逆轉塗抹過濾器將圖像解壓縮到原來的狀態。

但即使我能,這將是擊敗預壓縮圖像的點擺在首位。

這是我.gitconfig

[filter "compress-jpg"] 
    clean = gm convert -compress JPEG - - 
[filter "compress-png"] 
    clean = gm convert - - 

這是我.gitattributes

*.jpeg filter=compress-jpg 
*.jpg filter=compress-jpg 
*.png filter=compress-png 

令我驚訝,我後來發現的git認爲所有文件的結賬後已被修改。

這種問題的解決方案是什麼?
git是乾淨的還是污跡只能用於完美可逆的東西?

有沒有什麼辦法讓git的壓縮並存儲到索引之前更換我在工作樹中的文件?

這樣的話,git會不會在文件被檢出後修改。

回答

0

您需要將文件名傳遞給腳本。

既然你不傳遞文件名,它處理所有的文件。

例如:

git config --global filter.<name>.clean script_file %file_name 

在你的情況,你可能要設置的文件擴展插件的.gitattributessmudge/clean

Read here如何配置,並將其設置爲支持您想要的文件類型。

+0

我已經設置了'.gitattributes'。但是你是否僅僅通過改變clean命令來使用'%file_name'就可以工作?它是如何工作的?它如何處理「git認爲它是另一個文件」? – CMCDragonkai

+0

我還以爲這些命令是爲了管道。因此在我乾淨的命令中使用' - -'。有必要將'gm'製作成管道。 – CMCDragonkai

+0

如果您希望處理所有圖像文件,請將其設置在.gitattributes'* .jpg filter_name'或'* .jpg filter = filter_name'中。 – CodeWizard