2016-04-23 3 views
0

最近、git clean/smudgeフィルタについて読むと、自動的に画像を圧縮してプッシュする前に、&が私のレポにコミットする素晴らしい方法だと思った。画像圧縮にgit cleanフィルタを使う

問題は、画像を元の状態に解凍するために、きれいなフィルタと、反転した汚れフィルタがないことです。

でも、可能であれば、これは最初に画像を圧縮するという点を打破することになります。

これは私の.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 

あなたのケースでは、あなたはおそらく、ファイル拡張子がsmudge/cleanため.gitattributesをINS設定したいです。

Read here希望のファイルタイプをサポートするように設定して設定する方法。

+0

私はすでに '.gitattributes'をセットアップしています。しかし、クリーンコマンドを '%file_name'を使って変更するだけでいいのですか?そしてそれはどのように機能するのですか? "それは別のファイルを考えている" gitにどのように対処していますか? – CMCDragonkai

+0

また、私はこれらのコマンドがパイプであることを意図していると思いました。したがって、私のクリーンコマンドで ' - 'を使用します。 'gm'をパイプにする必要があります。 – CMCDragonkai

+0

すべての画像ファイルを処理したい場合は、.gitattributes '* .jpg filter_name'または' * .jpg filter = filter_name'で設定してください。 – CodeWizard