Git のスマッジ/クリーン フィルターを使用して、環境によって異なるファイルを作成しようとしています。
私のレポには、次のファイルがあります。
/root/scripts/data.config.local
/root/scripts/data.config.staging
/root/scripts/data.config.production
開発者のマシンでチェックアウトが発生したときに、data.config.local ファイルを「data.config」として /root/scripts ディレクトリにコピーする必要があります。
私のグローバル .gitconfig には、次のフィルター定義があります。
[filter "copyEnv"]
clean = "rm -f c:\\code4x\\git\\rgpstage\\scripts\\gg_data.config"
smudge = "cp c:\\code4x\\git\\rgpstage\\scripts\\gg_data.config.local c:\\code4x\\git\\rgpstage\\scripts\\gg_data.config"
スクリプトを別のスクリプト ファイルに移動するなど、これらのフィルターでさまざまなバリエーションを試しました。スマッジ用の別のスクリプト ファイルは次のようになります。
#! /usr/bin/bash
cp "C:\Code4X\GIT\rgpstage\scripts\gg_data.config.local" "C:\Code4X\GIT\rgpstage\scripts\gg_data.config"
フィルター アクションに使用するアプローチ (インラインまたはファイル) に関係なく、次の出力が得られます。
error: cannot feed the input to external filter c:\removeGGData
error: external filter c:\removeGGData failed
cp: cannot stat `C:\\Code4X\\GIT\\rgpstage\\scripts\\gg_data.config.local': No such file or directory
error: cannot feed the input to external filter c:\copyGGData
error: external filter c:\copyGGData failed 1
error: external filter c:\copyGGData failed
Git 1.8を使用して、これをWindows 7で実行しています。ファイルは存在し、アクセス許可に関して開かれています。