Git config с разделением по проектам
Возникла потребность настраивать по-разному конфиги гита для разных проектов (email контактный поменять, хотя бы, или хук на прогон тестов повесить).
Ну и понятно, что как-то эти конфиги подкладывать туда-сюда – не слишком увлекательно. К счастью, в свежих версиях гита – есть инклюды. В том числе – по условию – includeIf. Вот ими и стоит воспользоваться.
Основной конфиг git
Общая концепция такова – в основном конфиге ~/.gitconfig – перечислить (под условиями) конфиги “зависимые”, а все специфичные настройки прописать уже в них. Ничего экстраординарного, в общем.
Примерно вот так у меня это выглядит, по условию включается конфиг из файла gitconfig-project-1:
Важный момент – директорию после gitdir: нужно указывать без отделения пробелом.
Вложенный конфиг git
А вот так – выглядит сам файл ~/.config/git/gitconfig-project-1
Тут уже как раз и переопределены email, хуки (для этого проекта активирован автопрогон тестов в pre-push хуке) и конфиг ssh (там специфические настройки для доступа к репозиторию по ключу).
Разделение credentials
Раз уж зашла речь о разделении конфигов и о доступе – можно сразу настройки доступа по http(s) разбить немного.
Включаются они так: git config --global credential.helper store. И после этого лежат в ~/.git-credentials в открытом виде!
Разделить их для разных репозиториев внутри одного хоста – можно так (на примере github): git config --global credential.github.com.useHttpPath true
И тогда в .git-credentials будут отдельные записи лежать:
Но, безусловно, удобней (да и безопасней, пожалуй) – пользоваться доступом с ssh ключами.
Комментарий недоступен
Редактор сожрал :)
Ты дтф с хабром перепутал
Точно :( Впредь - обязуюсь!
Буханка хлеба.jpg
Это батон-плетёнка.