196

我在结帐期间使用过滤器来破坏文件,如此所述。现在的问题是过滤器定义只存储在我的本地配置文件中:

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

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

那么我可以将这个过滤器定义部分存储.git/config在存储库中并让 git 使用它吗?

4

2 回答 2

215

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

为您的需求定制——是正确的选择。与其编写过滤器,.git/config不如将其保存在.gitconfig存储库根目录中的文件中:

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

使用您的过滤器创建.gitconfig并提交更改。然后您的同事将始终保持更新——但他们必须手动将其包含在内。单独通过 git自动包含您的自定义配置文件是不可能的,因为它会产生安全漏洞。

要将此配置应用于单个存储库,每个用户都需要在 中运行以下命令your-repo/

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

参考:https ://git-scm.com/docs/git-config#_includes

注意不要将个人数据存储在自定义.gitconfig中,例如user.*,将它们保存在您的全局.gitconfig中。

于 2013-08-20T08:15:20.933 回答
26

.gitconfig默认情况下,您不能在 git 存储库中使用文件,但您可以链接到它,以便 git 配置将被版本化。

您可以像这样链接到它:

[include]
  path = ../.gitconfig

我创建了一个简单的脚本 gitconfig.sh,它为你做这件事(比复制快得多)+简单的.gitconfig文件,所以如果你愿意,可以看看这个 repo https://github.com/HoBi/dotfiles


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

于 2015-07-24T08:14:36.653 回答