About Blog PGP Key

All articles, tagged with “vcs”

Конфиги в $HOME

Вот уже больше чем пол года (а точнее с 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 привычные конфиги легко переносятся на другой хост.

Mercurial support for Project Hosting on Google Code

Должна ли VCS конвертировать имена файлов

Вот уже почти три месяца как в mailing-list-е Mercurial тянется флейм по поводу того, должна ли VCS конвертировать имена файлов в кодировку пользователя и обратно.

Тот же SVN хранит имена файлов в “своей” кодировке (UTF-8?). При чекауте имена всех файлов конвертируются в кодировку системы. При коммите соответственно наоборот. Таким образом можно счекаутить репозиторий на машине с любой локалью, поддерживающей кириллицу, и имена файлов останутся читаемыми.

Mercurial же понимает имена файлов как набор байт (подобно UNIX-овым файловым системам). То есть, репозиторий, созданный в другой локали (или на венде), будет чекаутиться криво. Аргументируется это поведение тем, что “make” сможет собрать такой проект, так как имена файлов будут в той же кодировке, что и Makefile.

Мне вот поведение SVN-а нравится больше… Исходники мало кто обзывает нелатинскими буквами. А вот хранить файлы, имена которые будут читаться только пользователем (например документы OpenOffice) вполне себе удобно.

Надо будет посмотреть, как ведут себя другие VCS (как минимум — git, darcs).

UPD: В Mailing list-е кинули ссылку на git-версию треда :)