14

Я использую Gentoo Linux, и он имеет довольно сложную конфигурацию. Мой вопрос: разумно ли использовать git для контроля версий моих файлов конфигурации?

У меня дома есть несколько репозиториев git, я думаю, если я добавлю /home /** к моему .gitignore, они не вызовут проблем.

Уточнение обновления:

Разумно ли использовать git для контроля версий файлов конфигурации моего системного уровня в корневом каталоге "/"?

3 ответа3

15

Краткий ответ на ваш вопрос: да.


Я без колебаний рекомендую Git (или любое другое программное обеспечение для контроля версий) отслеживать файлы конфигурации. С тех пор я стал более продуктивным (в частности, для настройки новых установок) и больше доверял своим файлам конфигурации. С контролем версий у меня есть запись о том, какие изменения были внесены, и сообщение о фиксации предоставляет причину, по которой было сделано изменение. Если изменение имеет непреднамеренные побочные эффекты, я могу легко просмотреть журнал / историю, чтобы увидеть, какие изменения вызвали эффекты.

Лично я бы с осторожностью следил за всеми файлами в каталоге / root. Список игнорируемых путей может стать большим и громоздким. Я предпочитаю хранить каждый логический набор файлов в своем собственном хранилище.

Я вручную использую Git для отслеживания моих личных файлов конфигурации / запуска, например, конфигурации Vim, функций Bash, псевдонимов и т.д. - аналогично подходу, описанному в разделе Как отслеживать $ HOME с помощью git. Я храню каждый набор файлов в своем собственном хранилище и использую символические ссылки на домашний каталог.

Для файлов конфигурации системы я использую Git с Etckeeper для отслеживания файлов в моем каталоге /etc

Недостатки

Одна проблема, которую следует опасаться, - это то, что отслеживаемые файлы содержат жесткие ссылки. Когда Git используется для извлечения файлов или иного изменения рабочего дерева, он отменяет связь с файлами и затем воссоздает их. Смотрите Git, Dotfiles и Hardlinks для более полного объяснения.

Etckeeper

Etckeeper может использоваться для ведения полной истории изменений, внесенных в /etc. Он отслеживает метаданные файла, которые обычно не поддерживаются системами контроля версий, но это важно для /etc , например, разрешения для /etc/shadow .

Он подключается к менеджерам пакетов, таким как apt и yum и (в своей конфигурации по умолчанию), запускает до и после установки, поэтому все изменения в /etc отслеживаются.

Если пакет установлен или удален, все незафиксированные изменения в /etc будут зафиксированы перед операцией пакета, так что есть две фиксации:

  1. «Сохранение незафиксированных изменений в /etc до запуска yum»
  2. «Внесение изменений в /etc после запуска yum»

Я использовал его с дистрибутивами на основе Debian и Red Hat и знаю, что он поддерживает управление пакетами Arch. Я не могу сказать, сколько автоматизации это добавит к системе Gentoo, но пакет для нее доступен.

Он также поддерживает передачу файлов конфигурации в удаленный репозиторий (который, разумеется, должен быть закрытым).

конфигурация

После установки пакета вам может потребоваться его настройка (/etc/etckeeper/etckeeper.conf), например, в системах Ubuntu система управления версиями по умолчанию изменена с Git на Bazaar. Вы также можете отключить ежедневные автоматические коммиты.

Ежедневные автокоммиты

Изменения могут быть автоматически зафиксированы ежедневным заданием cron. Это может раздражать, так как хранилище может быть загромождено несколькими сообщениями автоматической фиксации.

Я раскомментирую соответствующую строку в /etc/etckeeper/etckeeper.conf:

sed -i '/AVOID_DAILY_AUTOCOMMITS/s|^#* *||' /etc/etckeeper/etckeeper.conf

Игнорировать определенные файлы

Отредактируйте /etc/.gitignore чтобы указать любые файлы, которые не должны отслеживаться.

Первый забег

После настройки выполните следующие команды:

sudo etckeeper init
sudo etckeeper commit "Initial commit"

Если ваш текущий каталог и etc , Вы можете запускать обычные команды git , например,

sudo git status
sudo git log
3

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

Возможно, этот набор опыта может дать вам лучшее представление о том, что вы можете получить:

влияние инициализации git-репозитория на корневой каталог linux 3:)

Извиняюсь за "ответ", вместо того, чтобы просто кинуть ссылку в комментарии; однако, недостаточно реп, но хотел бы присоединиться.

редактировать

Вот Это Да! Очень хороший ответ @AnthonyGeoghegan. Я верю, что это не столько борьба, сколько я изначально предполагал.

0

Я также использую git для хранения и поддержки моих dotfiles , но в git bare repository . Подробное руководство можно найти здесь . Я использую два репозитория, один для моих пользовательских точечных файлов с именем myconf и один для корневых точечных файлов с именем rootconf .

Кроме того, вы можете использовать обе конфигурации на многих машинах, на разных дистрибутивах Linux или на виртуальных машинах: просто создайте новую ветку для отдельной конфигурации. Тогда вы избегаете смешивать код в одном и том же файле (например, .bash_alias): не раздражает, если проверять текущую машину; нет ссылки не нужны!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .