How to store a git config as part of the repository?
I'm using filters to mangle files during checkout like described here. Now the problem is that filter definition is only stored in my local configuration file:
$ cat .git/config
....
[filter "dater"]
smudge = /home/.../expand_date
clean = perl -pe \"s/\\\\\\$Date[^\\\\\\$]*\\\\\\$/\\\\\\$Date\\\\\\$/\"
If my coworkers want to benefit from this Date
expansion, they need to copy my filter definition. And if I change it, I need to notify them, etc..
So can I store this filter definition part of .git/config
in repository and make git use it?
There are 3 supported scopes of .gitconfig
file: --system, --global, --local
. You can also create a custom configuration file, and include it in one of the supported files.
For your needs custom - is the right choice. Instead of writing your filter in .git/config
you should save it in .gitconfig
file in your repository root:
your-repo/
│
├── .git/
│ ├── config
│
├── .gitconfig
│
Create the .gitconfig
with your filter and commit the changes. Then your colleagues will always keep it updated -- but they will have to include it manually. It is not possible to automatically include your custom configuration file through git alone, because it creates a security vulnerability.
To apply this configuration for a single repository, each user will need to run the following command in your-repo/
:
git config --local include.path ../.gitconfig
Reference: https://git-scm.com/docs/git-config#_includes
Be careful not to store personal data in the custom .gitconfig
, like user.*
, keep those in your global .gitconfig
.
You can not use .gitconfig
file in a git repository by default, but you can link to it so the git config will be versioned.
You can link to it like that:
[include]
path = ../.gitconfig
I have created a simple script gitconfig.sh
which do it for you (much faster than copy) + simple .gitconfig
file so if you want, take a look to this repo https://github.com/HoBi/dotfiles.
EDIT: I have deleted the file, but you can find it here https://github.com/tenhobi/dotfiles/blob/7e4376c006c508370b82bc7bd37173fab51dbd01/git/.gitconfig.sh