Раньше у меня были файлы конфигурации системы в одном каталоге для лучшего управления, но теперь мне нужно использовать для него некоторый контроль версий.
Но проблема в том, что git не понимает символические ссылки, которые указывают на вне репозитория, и я не могу инвертировать роль (имея реальные файлы в репозитории и символические ссылки на их правильном пути), поскольку некоторые файлы читаются перед загрузкой ядра.
Я думаю, что могу использовать unison для синхронизации файлов в репо и их путей, но это просто непрактично. И жесткие ссылки, вероятно, будут неработающими. Любая идея ?
Вы можете использовать --work-tree
флаг и --git-dir
флаг (git help git
, установите для обоих абсолютные пути и создайте псевдоним), чтобы папка .git находилась вне каталога с поддержкой версий.
Если вручную - это единственный способ редактирования этих файлов, вы можете поместить канонические версии в каталог конфигурации системы и настроить в git обработчик после фиксации, который будет копировать их в их «реальные» местоположения.
В Debian и производных дистрибутивах вы можете использовать etckeeper справляться /etc
. Это так же просто, как установить etckeeper, запустить etckeeper init
один раз и работает etckeeper commit
когда ты что-то изменил.
Я не знаю, доступен ли etckeeper напрямую для Arch Linux, но есть успех отчеты в сети.
Etckeeper использует git-хуки для обработки метаданных, таких как разрешения, права собственности и символические ссылки.
Делайте жесткие ссылки, а не мягкие ссылки.
У меня та же проблема, я использую etckeeper, и он копирует мои файлы в / etc, что мне не нужно.
Итак, вместо
ln -s /srv/www/site/apache.conf srv_site.com
делать
ln /srv/www/site/apache.conf srv_site.com
и это работает! : D