Wednesday, October 24, 2007

Немного о mercurial

Так как в настоящее время я все больше для своих наработок использую  mercurial, то для тех, кто с этой rcs не знаком я написал некоторые рекоммендации (предполагается знание хотя бы cvs):


Коротко как использовать mercurial:


идея распределенного хранилища проста - каждая рабочая копия - это целиком хранилище. Для создания хранилища в рабочей копии используем команду


hg init <PATH>


Далее добавляем файлы и каталоги:


cd <PATH>


hg add *


Для помещения хранилища на удаленную машину (аналог клиент-сервера) используем:


hg push ssh://<machine>/<PATH>


но предварительно на удаленной машине надо сделать hg init <PATH>


(можно также использовать вместо push clone). После этого мы имеем 2 одинаковых репозитария. Для коммита в локальный репозитарий используем обычный hg commit. Для синхронизации - hg push. Следующее действие - извлечение рабочей копии из репозитария (checkout) делается следующим образом:


hg clone <PATH> <DEST>, где <PATH> может быть ssh://machine/<PATH>


в каталоге <DEST> создается рабочая копия репозитария и сам репозитарий (каталог .hg). Чтобы получить изменения из общего репозитария можно воспользоваться командой pull, которая делает обратное push - вытаскивает из удаленного репозитария копию и синхронизирует с локальным репозитарием:


hg pull <PATH>, как обычно <PATH> может быть удаленным (ssh)


Остальные команды похожи на cvs, но всегда надо помнить о том, что ты работаешь с _локальным_ репозитарием и о том, что локальный репозитарий необходимо синхронизировать командой push (commit) или pull (checkout) в зависимости от характера изменений.


Полезные ссылки:


3 comments:

  1. А ты git не пробовал?

    ReplyDelete
  2. Нет, мы искали rcs, чтобы его было удобно использовать для разнообразных целей, и чтобы он достаточно просто и легко ставился из портов FreeBSD. Тот же subversion тянет за собой весьма много зависимостей - для сравнения mercurial требует для работы (включая веб морду) только питон, а subversion тянет Neon, mod_dav, которые, в свою очередь, тянут еще кучу зависимостей. Это не очень удобно для наших задач.

    ReplyDelete
  3. This comment has been removed by a blog administrator.

    ReplyDelete