我正在尝试使用 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 上运行它。该文件确实存在并根据权限打开。