Ilya Strukov's site

Вы всё ещё копируете конфиги вручную? Тогда мы идём к вам

2012-09-02

Расскажу о том, как я храню конфигурационные файлы для vim, zsh и любых других программ, которыми регулярно пользуюсь. Описываемая идея проста и совершенно не нова. Она заключается в том, чтобы хранить все важные конфиги в git-репозитории. Зачем это делать? Во-первых, полезно сохранять историю изменений на случай, если что-то сломаешь и захочешь вернуться к предыдущей версии. Во-вторых, перенос конфигов на новую машину, а также их последующая синхронизация между машинами, при таком подходе сводятся к нескольким тривиальным командам. В-третьих, полученный репозиторий можно поместить на github обеспечив себя надёжным бэкапом и поделившись наработками с окружающими.

Теперь о технических деталях. Все конфиги я перенёс в одну директорию и расставил в нужных местах символические ссылки. Чтобы на каждой новой машине вручную не создавать множество ссылок, я написал Makefile, который делает это автоматически. Этот же Makefile заодно запускает установку плагинов к Vim при помощи Vundle. Кроме самих конфигов, я включил в репозиторий всякие вспомогательные скрипты, а также инструменты вроде oh-my-zsh и git-flow. Для последних очень удобно оказалось использовать git submodule.

В результате, чтобы скопировать все привычные конфиги на новую машину, я просто выполняю три команды:

git clone https://github.com/iley/profile.git
git submodule update --init
make

После любых изменений в конфигах я делаю коммит и синхронизирую репозитории при помощи git push и git pull.