Когда-то давным давно, я впервые познакомился с системами контроля версий.
Наверное это была CVS. Git'а тогда еще в планах думаю не было. Возникла у
меня примерно в то далекое время логичная идея хранить все настройки в
какой-нибудь подобной системе. Так совпало, что тогда же я активно изучал
Emacs. И наткнулся тагда я на Version Control расширение. Именно оттуда я
узнал о более древней системе: RCS. Как ни странно, именно в эту систему
Emacs предлагает добавить файлы по умолчанию (C-x v v
).
Так вот, с тех давних пор у меня все хранилось в RCS. Вообще говоря это
достаточно удобно, если единственная задача: хранить историю изменений на одной
машине. Все управление через Emacs. Я даже не особо знаю ключи команд ci
и
co
.
Теперь же у меня фактически 4 компьютера, на которых я хотел бы иметь
одинаковые, хотя бы, пользовательские настройки. Например, для bash или того
же git. Для этого я задумал поместить все необходимые файлы из домашней
директории в git репозиторий. Но положить в git всю или часть домашней
директории похоже нехорошая идея. Однозначно будут глюки с git prompt. Если не
добавить все файлы в .gitignore
, то git prompt просто подвесит консоль:
сканирование всей домашней директории не быстрое дело. Думаю это не
единственная проблема.
Я решил воспользоваться следующей схемой. Нужные файлы скопировать в специальную папочку. В ней организовать git репозиторий. А в домашней директории создать ссылки на файлы из этой папки. Для автоматизации последней задачи я написал небольшой скриптик. Когда доработаю, выложу на github.
Еще одна проблема: специфичные настройки определенных машин. Например, PATH
в
Linux и OS X местами различаются (избыточности не хочется). В .gitconfig
у меня даже различие есть. Для решения этого вопроса я создал для каждой машины,
которой необходимы какие-то особенности, специальную ветку. Общие настройки
хранятся на master ветке. Неудобство этой схемы связанно с тем, что надо
постоянно сливать изменения с master'а в специфичные ветки. Может есть
какое-то более простое и элегантное решение?
Ну а системные настройки (/etc/
) я так и продолжаю хранить в RCS. Если будет
задача настройки нескольких одинаковых машин, то можно будет подумать на тему
синхронизации через git. Пока это не нужно. RCS хранит историю и этого
достаточно. Насколько знаю portage в gentoo можно настроить для сохранения
истории в RCS (см. /etc/dispatch-conf.conf
). Но сам я этой возможностью не
пользуюсь. Что-то там не состыковывается с моими привычками.