wiki:MercurialWhy

Зачем использовать Mercurial?

БОльшая гибкость по сравнению с CVS и SVN

Mercurial - это "распределенная" система управления версиями, основанная на принципах p2p. Нет разницы между "репозиториями" и "локальными копиями": каждая "локальная копия" является полноценным "репозиторием", а с каждым "репозиторием" можно работать то же, что обычно делают с "локальной копией".

Поэтому, если договориться, что один из экземпляров "репозитория" является главным, и обмен версиями должен делаться через него, получается такой же способ работы, как и с CVS или SVN. Но возможны и другие способы работы.

В частности, в Mercurial легко делается "клонирование" репозиториев, но и "слияние" репозиториев - это тоже рядовая, "нормальная" операция.

Легкий старт

Mercurial легко использовать "приватно", для "внутренних" целей. При этом нет надобности выставлять репозиторий напоказ, если нет желания. (Но это можно сделать потом, в любой момент, когда захочется.)

Допустим, захотелось завести для какой-либо деятельности папочку xxx с файлами и подфайлами. Тогда, чтобы поставить это дерево папок под управление версиями с помощью Mercurial, входим в режим командной строки, делаем папку xxx текущей и выполняем команду

hg init

после чего внутри xxx образуется папка .hg, которая и содержит все хозяйство Mercurial (т.е., собственно говоря, и является "репозиторием"), а все содержимое папки xxx, кроме папки .hg является "рабочей копией" (в которой уже нет папок .hg, что отличает Mercurial от CVS и SVN).

После этого можно производить разные действия над "рабочей копией" и запоминать её состояния в "репозитории" с помощью операций commit.

Легкое масштабирование

Mercurial хорошо работает с мелкими и "приватными" проектами. Но при этом он отлично справляется и с громадными проектами. Т.е. не возникает такая ситуация, когда все начинается хорошо, но через некоторое время происходит "взрыв" по времени работы или вдруг начинается экспоненциальный рост размеров репозитория.

Также, если проект был начат приватно, можно в любой момент поделиться с другими результатами работы, "клонировав" репозиторий. Например, команда

hg clone \\computer\home\sidorov\xxx2

создает "клон" репозитория, находящегося в текущей папке и помещает его в папку \home\sidorov\xxx2 в компьютере computer.

После этого Sidorov может начать работать со своим экземпляром репозитория.

Впоследствии можно делать слияние (merge) между разными экземплярами репозитория. Или даже легко перетаскивать информацию между репозиториями, не имеющими общего происхождения. Например, если два человека начали работу независимо, а потом решили объединить два репозитория вместе.

Обмен информации между репозиториями может делаться:

  • Через файловую систему (внутри одного компьютера или в локальной сети).
  • По протоколу Secure Shell (ssh).
  • По протоколу http или https.
  • По электронной почте или через любую другую систему передачи файлов (ftp, Skype).
Last modified 13 years ago Last modified on Sep 6, 2007, 4:24:12 PM