Git поддерживает значения конфигурации на трех уровнях:
- Глобальные настройки для системы (хранятся в
/etc/git-core
) - Пользовательские глобальные настройки (хранятся в
~/.gitconfig
) - Локальные настройки репозитория (хранятся в
$REPO/.git/config
)
Эти параметры охватывают большую часть основы, но я ищу способ справиться с четвертым уровнем. У меня есть (очень) большая коллекция репозиториев, для которых мне нужно использовать значение, отличное user.email
от моего обычного. Эти репозитории часто создаются и обрабатываются с помощью автоматических сценариев, а настройка локальных настроек для каждого репозитория обременительна.
Все эти репозитории находятся под определенным префиксом пути в моей локальной системе. Есть ли способ установить значение конфигурации где-нибудь, которое будет унаследовано всеми репозиториями по этому пути? (Вроде как .htaccess
настройки одинаково наследуют всю файловую систему.) Возможно, есть способ установить условные значения в глобальном конфигурационном файле? Какие еще меры могут быть приняты в среде UNIX для работы с таким набором репозиториев, как мой?
.gitconfig
в каждом каталоге, который они создают. Например, репо IIRC Android может сделать это, но вы должны внимательно прочитать источник, чтобы узнать. (Я не совсем уверен, я не делал этого в течение некоторого времени.)Ответы:
Я не нашел способа настроить git на этом четвертом уровне. Кажется, единственный способ - переопределение значений конфигурации для каждой команды
git -c key=value
.Мое настоящее хакерское решение - определить функцию оболочки, которая служит оберткой для git. При вызове он передает аргументы в системную команду git, но не до проверки текущего рабочего каталога и добавления дополнительного аргумента в команду, если это применимо.
источник
command git -c user.email=alternate@credentials.org user.name="Alter Ego" "$@"
или как я должен идти об этом? Искал высоко и низко, и единственная ссылка на этот флаг -c, который я нашел, была вашей, спасибо, очень признателен.command git -c user.email=alternate@credentials.org -c user.name="Alter Ego" "$@"
Вы можете настроить адрес электронной почты для git с помощью переменной среды
GIT_AUTHOR_EMAIL
. Если вы комбинируете это с выполнением сценариев bash при входе в конфигурацию каталога или конкретной оболочки с помощью zsh, вы можете легко изменить настройки для каждого каталога или родительского каталога, например, если вы войдете в каталог,~/work
вы можете автоматически настроить переменные среды, чтобы изменить свой адрес электронной почты. адрес.источник
Смотрите решение на основе конфигурации git:
http://gik.firetrot.com/index.php/2018/05/06/git-configuration-across-multiple-repositories/
Добавьте в файл «~ / .gitconfig»:
Создайте файл «~ / .gitconfig-project1 ″ с содержимым:
источник
Основываясь на ответе Калеба, мы можем определить модифицированную
git
команду, которая постоянно правильно конфигурирует все репозитории в этом каталоге, так что все будущие использования vanilla git будут использовать новую конфигурацию. Я используюhub
, что является еще одним git-оберткой, поэтому я заменил свойalias git=hub
на this и вызвалhub
в своей функции - если вы не используетеhub
, замените всеhub
вызовы наcommand git
:В отличие от ответа Калеба, который работает только в оболочке (и если явно не получен, только в интерактивной оболочке), он также влияет на другие интерфейсы git, которые правильно читают конфигурацию git, например, на emacs magit.
источник