2013-08-20 223 views
83

我在结帐时使用过滤器来破解文件,如所述的here。 现在的问题是,过滤器定义只存储在我的本地配置文件:将git配置存储为存储库的一部分

$ cat .git/config 
.... 
[filter "dater"] 
     smudge = /home/.../expand_date 
     clean = perl -pe \"s/\\\\\\$Date[^\\\\\\$]*\\\\\\$/\\\\\\$Date\\\\\\$/\" 

如果我的同事想从这个Date扩张中受益,他们需要复制我的过滤器定义。如果我改变它,我需要告诉他们,等。

所以我可以的.git/config这个过滤器定义的一部分存储在库中,使git的使用呢?

回答

85

有3个支持范围.gitconfig文件:--system, --global, --local。您还可以创建自定义配置文件,并将其包含在其中一个受支持的文件中。

根据您的需求定制 - 是正确的选择。相反,在.git/config写你的过滤器,你应该在.gitconfig文件保存在你的仓库根:

your-repo/ 
│ 
├── .git/ 
│ ├── config 
│ 
├── .gitconfig 
│ 

创建.gitconfig您的筛选器并提交更改。然后你的同事会一直保持更新 - 但他们必须手动包含它。 仅通过git无法自动将自定义配置文件包含在内,因为它会创建安全漏洞。

为一个单一存储应用此配置中,每个用户都需要在your-repo/运行下面的命令:

git config --local include.path ../.gitconfig 

要小心,不要储存在自定义.gitconfig个人数据,如user.*,让那些在您的全球.gitconfig

+14

我想避开,通知它需要包括在回购的'.gitconfig'每个可能的用户他的'〜/ .gitconfig'。没有人会记得它。有没有办法让git总是读取repo的'.gitconfig'。 –

+6

@ZaarHai:我猜不是,因为那样会很危险。 (想象一下,使用“有趣”的东西来克隆别名命令的回购,例如导出你的主目录的内容)。如果你已经得到的东西像'configure'脚本或类似的用户必须运行,你可以有一个集中的包括(或提示用户)。 – Hasturkun

+1

如何让git使用repo自带的.gitconfig文件?我创建了一个,但没有被解析。 –

11

不能使用默认.gitconfig文件在一个Git仓库,但你可以链接到它,因此混帐配置将进行版本控制。

您可以链接到它这样:

[include] 
    path = ../.gitconfig 

我创建了一个简单的脚本gitconfig.sh该为你做它(远远超过拷贝更快)+简单.gitconfig文件,所以如果你想要,拿看看这个回购https://github.com/HoBi/dotfiles


编辑:我已删除的文件,但你可以在这里找到https://github.com/HoBi/dotfiles/blob/7e4376c006c508370b82bc7bd37173fab51dbd01/git/.gitconfig.sh

+1

您的链接已死亡... – Sebastian

+0

@XmlmXmlmX固定。 :-) – HoBi

+0

@HoBi似乎你已经从GitHub中删除了你的gitconfig.sh,你为什么不再需要它? –

相关问题