Назад | Перейти на главную страницу

Использование символических ссылок с git

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

Но проблема в том, что 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