Я использую Gentoo Linux, и он имеет довольно сложную конфигурацию. Мой вопрос: разумно ли использовать git для контроля версий моих файлов конфигурации?
У меня дома есть несколько репозиториев git, я думаю, если я добавлю / home / ** к моему .gitignore, они не вызовут проблем.
Уточнение обновления:
Разумно ли использовать git для контроля версий файлов конфигурации моего системного уровня в корневом каталоге "/"?
Ответы:
Краткий ответ на ваш вопрос: да .
Я без колебаний рекомендую Git (или любое другое программное обеспечение для контроля версий) отслеживать файлы конфигурации. С тех пор я стал более продуктивным (в частности, для настройки новых установок) и больше доверял своим файлам конфигурации. С контролем версий у меня есть запись о том, какие изменения были внесены, и сообщение о фиксации предоставляет причину, по которой было сделано изменение. Если изменение имеет непреднамеренные побочные эффекты, я могу легко просмотреть журнал / историю, чтобы увидеть, какие изменения вызвали эффекты.
Лично я бы с осторожностью отслеживал все файлы в
/
корневом каталоге. Список игнорируемых путей может стать большим и громоздким. Я предпочитаю хранить каждый логический набор файлов в своем собственном хранилище.Я вручную использую Git для отслеживания моих личных файлов конфигурации / запуска, например, конфигурации Vim, функций Bash, псевдонимов и т. Д. - аналогично подходу, описанному в разделе Как отслеживать $ HOME с помощью git . Я храню каждый набор файлов в своем собственном хранилище и использую символические ссылки на домашний каталог.
Для файлов конфигурации системы я использую Git с Etckeeper для отслеживания файлов в моем
/etc
каталоге.Недостатки
Одна проблема, которую следует опасаться, - это то, что отслеживаемые файлы содержат жесткие ссылки . Когда Git используется для извлечения файлов или иного изменения рабочего дерева, он отменяет связь с файлами и затем воссоздает их . Смотрите Git, Dotfiles и Hardlinks для более полного объяснения.
Etckeeper
Etckeeper может использоваться для ведения полной истории изменений, внесенных в / etc. Он отслеживает метаданные файлов, которые системы контроля версий обычно не поддерживают, но это важно
/etc
, например, права доступа/etc/shadow
.Он подключается к менеджерам пакетов, таким как apt и yum и (в конфигурации по умолчанию), запускает до и после установки, поэтому все изменения
/etc
отслеживаются.Если пакет установлен или удален, все незафиксированные изменения в / etc будут зафиксированы перед операцией пакета, так что есть две фиксации:
Я использовал его с дистрибутивами на основе Debian и Red Hat и знаю, что он поддерживает управление пакетами Arch. Я не могу сказать, сколько автоматизации это добавит к системе Gentoo, но пакет для нее доступен .
Он также поддерживает передачу файлов конфигурации в удаленный репозиторий (который, разумеется, должен быть закрытым).
конфигурация
После установки пакета вам может понадобиться настроить его (
/etc/etckeeper/etckeeper.conf
), например, в системах Ubuntu система управления версиями по умолчанию изменена с Git на Bazaar. Вы также можете отключить ежедневные автоматические коммиты .Ежедневные автокоммиты
Изменения могут быть автоматически зафиксированы ежедневным заданием cron . Это может раздражать, так как хранилище может быть загромождено несколькими сообщениями автоматической фиксации.
Я раскомментирую соответствующую строку в
/etc/etckeeper/etckeeper.conf
:Игнорировать определенные файлы
Изменить,
/etc/.gitignore
чтобы указать любые файлы, которые не должны быть отслежены.Первый забег
После настройки выполните следующие команды:
Если ваш текущий каталог
etc
, вы можете запускать обычныеgit
команды, например,источник
etckeeper
во время ежедневной фиксации сначала проверяется,/etc
является ли он «нечистым», то есть у него есть незафиксированные файлы. Если нет, он не будет совершать. Так что, если ваш журнал коммитов полон ежедневных коммитов, есть вероятность, что ежедневно изменяются файлы, которые вы не добавили в.*ignore
файл :-)bzr init
--__-- ... Я рекомендую всегда запускатьсяetckeeper uninit -f
после установки.Я использую git для отслеживания определенных областей моего домашнего каталога. Лично я бы не пошел по пути отслеживания корневого каталога, но должен сказать, что восхищаюсь вашими амбициями. :)
Возможно, этот набор опыта может дать вам лучшее представление о том, что вы можете получить в:
влияние инициализации git-репозитория на корневой каталог linux 3 :)
Извиняюсь за «ответ», вместо того, чтобы просто кинуть ссылку в комментарии; однако, недостаточно реп, но хотел бы присоединиться.
редактировать
Вот это да! Очень хороший ответ @AnthonyGeoghegan. Я верю, что это не столько борьба, сколько я изначально предполагал.
источник
Я также использую,
git
чтобы хранить и поддерживать мойdotfiles
, но вgit bare repository
. Подробное руководство можно найти здесь . Я использую два репозитория, один для именованных точечных файлов моих пользователейmyconf
и один для названных точечных файлов rootrootconf
.Кроме того, вы можете использовать обе конфигурации на многих машинах, на разных дистрибутивах Linux или на виртуальных машинах: просто создайте новую ветку для отдельной конфигурации. Тогда вы избегаете смешивать код в одном и том же файле (например
.bash_alias
): не раздражает, если проверять текущий компьютер; нет ссылки не нужны!источник