Вот уже больше чем пол года (а точнее с Mon Aug 11 20:34:22 2008 +0300) часть конфигов и прочие мелкие скриптики из $HOME/bin у меня лежат в Mercurial репозитории.
Непосредственно version controlled файлы/конфиги лежат в ~/.config/_managed. Там же лежит и скрипт, который для этих версионированных файлов/катаогов создает симлинки в $HOME. То есть $HOME/.zshrc — это симлинк на ~/.config/_managed/.zshrc.
Плюс имеется cron job, который напоминает письмом, если что-то было изменено и не закоммичено.
Выглядит всё это достаточно удобно. Единственное — при создании конфигов руками нужно “помнить”, что их нужно ложить не в $HOME.
Кроме просто версионирования, обычным hg clone привычные конфиги легко переносятся на другой хост.
Вот уже почти три месяца как в mailing-list-е Mercurial тянется флейм по поводу того, должна ли VCS конвертировать имена файлов в кодировку пользователя и обратно.
Тот же SVN хранит имена файлов в “своей” кодировке (UTF-8?). При чекауте имена всех файлов конвертируются в кодировку системы. При коммите соответственно наоборот. Таким образом можно счекаутить репозиторий на машине с любой локалью, поддерживающей кириллицу, и имена файлов останутся читаемыми.
Mercurial же понимает имена файлов как набор байт (подобно UNIX-овым файловым системам). То есть, репозиторий, созданный в другой локали (или на венде), будет чекаутиться криво. Аргументируется это поведение тем, что “make” сможет собрать такой проект, так как имена файлов будут в той же кодировке, что и Makefile.
Мне вот поведение SVN-а нравится больше… Исходники мало кто обзывает нелатинскими буквами. А вот хранить файлы, имена которые будут читаться только пользователем (например документы OpenOffice) вполне себе удобно.
Надо будет посмотреть, как ведут себя другие VCS (как минимум — git, darcs).
UPD: В Mailing list-е кинули ссылку на git-версию треда :)