Давным-давно, к<del>огда я был маленьким, </del> мне довелось поработать на Первом канале в интернет-отделе. Там один из моих коллег на своих серверах пользовал mercurial для отслеживания всех изменений, сделанных как коллегами так и собственных.
На тот момент я как-то не придал этому особого внимания, ибо - нафиг надо? подправил конфиг и нужно не забыть сделать hg commit, а если файла в списке отслеживаемых нет, то hg add file, а потом уже hg commit да ещё и с пояснением что и нафига было сделано, если изменение нетривиальное. Конечно, это развивает некоторую дисциплину, ибо нужно помнить об hg и писать что-то внятное.
Идея хорошая. И вот не так давно, один <a href="https://fbt.fleshless.org/" target="_blank">хороший человек</a> воскресил в памяти эту мысль. Собственно, я этим и занялся.
Для работы был выбран тот же самый mercurial, как наиболее простой трекер изменений в файлах, в плане общения с человеком. Можно было бы взять git, он очень быстрый и очень популярный, но работать с ним не всегда просто, git капризен. Можно было взять, конечно, svn... он простой и довольно деревянный... Вобщем, не долго думая я выбрал hg, ибо в данном конкретном случае мне нужно от vcs минимум - просто коммит и в случае чего вытянуть предыдущую версию файла и чтобы все конфликты были не конфликтными :)
Во всём есть свои подводные камни, соответственно, и тут тоже. Мне хотелось, чтобы было 2 репозитория - один эталонный и один оперативный.
Эталонный реп я завёл в /root/system, а вот с оперативным возник некоторый казус - клонировать пустой реп в / mercurial отказывался, мотивируя это тем, что / не пустой... в принципе это логично :) Этот момент обходится методом клонирования пустого репозитория в пустой каталог, а далее перенос .hg в корневой каталог. Да, у нас отслеживается не все файлы, но в этом и идея - отслеживать только то в системе, что нужно, главное - нечаянно не закоммитить всё что есть в системе.
Дальше принцип работы простой - меняем конфиг, добавляем его, если он не добавлен, дальше - коммитим в оперативный реп. Работаем-работаем, если всё устраивает, то делаем hg push в основной реп.
Закрывая этот пост, скажу, что такой подход (с vcs), конечно, важен тем, кто привык держать систему в руках. Например, некторым арчеводам, гентуводам, слакерам, а товарищам убунтоводам, или сусеводам, и прочим вендузятникам - проще сработать каким-нибудь акронисом, чтобы потом просто раскатать всю систему из бэкапа разом и не париться, там всё равно принцип - "сломал - переустанови" и проблемы пытаются залечить ребутом...