Хранение git config как часть репозитория

Я использую фильтры для манипулирования файлами во время проверки, как описано здесь. Теперь проблема в том, что определение фильтра сохраняется только в моем локальном файле конфигурации:

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

Если мои коллеги хотят извлечь выгоду из этого расширения Date, им необходимо скопировать мое определение фильтра. И если я его изменю, мне нужно уведомить их и т.д.

Итак, могу ли я сохранить эту часть определения фильтра .git/config в репозитории и использовать git?

Ответ 1

Существует 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.

Ответ 2

Вы не можете использовать файл .gitconfig в репозитории git по умолчанию, но вы можете ссылаться на него, чтобы версия git была версией.

Вы можете ссылаться на него следующим образом:

[include]
  path = ../.gitconfig

Я создал простую script gitconfig.sh, которая делает это для вас (намного быстрее, чем копия) + простой .gitconfig файл, поэтому, если вы хотите, взгляните на это репо https://github.com/HoBi/dotfiles.


EDIT: я удалил файл, но вы можете найти его здесь https://github.com/HoBi/dotfiles/blob/7e4376c006c508370b82bc7bd37173fab51dbd01/git/.gitconfig.sh