将git config存储为存储库的一部分

Zaa*_*Hai 134 git

我使用的过滤器等中记载到结账时裂伤文件在这里.现在的问题是过滤器定义只存储在我的本地配置文件中:

$ cat .git/config
....
[filter "dater"]
        smudge = /home/.../expand_date
        clean = perl -pe \"s/\\\\\\$Date[^\\\\\\$]*\\\\\\$/\\\\\\$Date\\\\\\$/\"
Run Code Online (Sandbox Code Playgroud)

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

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

Ale*_*ruk 143

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

根据您的需求定制 - 是正确的选择..git/config您应该将其保存.gitconfig在存储库根目录中,而不是编写过滤器:

your-repo/
?
??? .git/
?   ??? config
?
??? .gitconfig
?
Run Code Online (Sandbox Code Playgroud)

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

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

git config --local include.path ../.gitconfig
Run Code Online (Sandbox Code Playgroud)

小心不要将个人数据存储在自定义中.gitconfig,例如user.*,将这些数据保存在全局中.gitconfig.

  • 我想避免通知每个可能的用户它需要在他的`〜/ .gitconfig`中包含repo的`.gitconfig`.没有人会记住它.有没有办法让git始终读取repo的`.gitconfig`. (31认同)
  • @ZaarHai:我猜不是,因为那会很危险.(想象一下克隆一个repo,用一些"有趣"的东西来命名命令,例如导出你家里的内容).如果你有类似用户必须运行的`configure`脚本或类似脚本,你可以设置include(或提示用户). (8认同)
  • 如果Git没有假设您正在编写分发在您需要关注安全威胁的组织之外的代码,那就太棒了.有时,系统可用性和自动化的优先级高于安全性. (8认同)
  • @Mieszko 和 @Synoli,我经常向我的项目添加 Makefile,并在需要时插入项目正确运行所需的“make setup”命令。它是明确的,因此没有道德问题和语义,因此不存在关注点分离的问题。但它的缺点是让每个人在克隆项目时都要记住运行它,但如果您对所有可能需要的项目都这样做,它就会变得很容易记住。 (5认同)
  • @HenryBlyth在`git config`上似乎有一个`--file`选项,然后你可以将它设置为指向repo的`.gitconfig`.我还没有测试过,但它似乎回答了你的问题.你可以在文档上阅读它.http://git-scm.com/docs/git-config#FILES (4认同)
  • 如何告诉 git 使用存储库自己的 .gitconfig 文件?我已经创建了一个,但它没有被解析。 (2认同)
  • 您可以将命令偷偷添加到团队通常使用的任务中(假设您正在使用任务运行器)。 (2认同)
  • @Mieszko 你不觉得向你的同事泄露意想不到的代码来欺骗他们执行它在道德上是有问题的吗? (2认同)
  • @Synoli 我是在讽刺,因为从关注点分离的角度来看,这是一个坏主意。尽管如此,如果不保密并执行合法规则,这将是合乎道德的。 (2认同)

ten*_*obi 17

.gitconfig默认情况下,您无法在git存储库中使用文件,但您可以链接到该文件,以便对git配置进行版本控制.

您可以像这样链接到它:

[include]
  path = ../.gitconfig
Run Code Online (Sandbox Code Playgroud)

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


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

  • @tenhobi 有一些配置可能会让每个人都感兴趣,可以在项目中共享。我将通过项目编码流程对别名执行此操作 (5认同)
  • @NoviceC 如果你想要的话,这里有这个文件。https://github.com/HoBi/dotfiles/blob/7e4376c006c508370b82bc7bd37173fab51dbd01/git/.gitconfig.sh 我开始相信,你不应该在你的git项目中存储 .gitconfig 或 gitconfig.sh - 这些是个人设置,应存储在“~/”文件夹中的全局设置中。每个人可能都有不同的需求,所以为什么要为 git repo 中的配置打扰每个人呢。:-) (3认同)