Хранение git config в составе репозитория

148

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

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

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

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

Заар Хай
источник
Эта ссылка может оказаться полезной для автоматического обмена конфигурацией для всей команды.
mljrg

Ответы:

163

Есть 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.

Александр Янчарук
источник
40
Я хочу избежать уведомления каждого возможного пользователя о том, что он должен включить репо .gitconfigв его ~/.gitconfig. Никто не будет помнить это. Есть ли способ заставить git ВСЕГДА читать репо .gitconfig.
Заар Хай
9
@ZaarHai: я думаю, нет, потому что это было бы опасно. (Представьте себе, что вы клонируете репо с псевдонимами команд с чем-то «интересным», например, экспортируете содержимое вашего домашнего каталога). Если у вас есть что-то вроде configureскрипта или чего-то похожего, что пользователи должны запускать, вы можете установить включение (или предложить пользователю).
Hasturkun
4
@HenryBlyth, кажется, есть --fileопция git config, вы можете затем установить ее на репо .gitconfig. Я еще не проверял, но, кажется, отвечает на ваш вопрос. Вы можете прочитать это на документах. git-scm.com/docs/git-config#FILES
theUnknown777
12
Замечательно, если Git не предполагал, что вы пишете код, распространяемый за пределами вашей организации, где вы должны заботиться об угрозах безопасности. Иногда юзабилити и автоматизация системы имеют более высокий приоритет, чем безопасность.
Джорди
2
Вы можете незаметно добавить команду к задаче (при условии, что вы используете обработчик задач), обычно используемой вашей командой.
Мешко
19

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

Вы можете сделать ссылку на это так:

[include]
  path = ../.gitconfig

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


РЕДАКТИРОВАТЬ : я удалил файл, но вы можете найти его здесь https://github.com/tenhobi/dotfiles/blob/7e4376c006c508370b82bc7bd37173fab51dbd01/git/.gitconfig.sh

tenhobi
источник
@XmlmXmlmX исправлено. :-)
tenhobi
@HoBi похоже, что вы сейчас удалили свой gitconfig.sh из GitHub, по какой-либо причине, почему вы его больше не хотели?
Новичок C
1
@NoviceC Есть файл, если хочешь. github.com/HoBi/dotfiles/blob/… Я пришел к выводу, что вам не следует хранить .gitconfig или gitconfig.sh в вашем git-проекте - это личные настройки, которые должны храниться в ваших глобальных настройках в ~/папке. И у всех могут быть разные потребности, так зачем всем беспокоиться о своем конфиге в git repo. :-)
Tenhobi
@tenhobi есть некоторые конфиги, которые могут быть интересны всем для участия в проекте. Я сделаю это для псевдонимов, с потоком кодирования проекта
Z. Khullah