Коя разпределена система за контрол на ревизиите да изберете: Git, Bazaar или Mercurial?

През последните две седмици правех бавно сравнение на три разпределени системи за контрол на ревизиите: Git, Bazaar и Mercurial.

Прочетох много рецензии и сравнения, но е ясно, че трябва да опитате всичко сами за задачите си.

В исторически план Git е най-познатата система за мен, тъй като я използвам най-дълго. Следователно постът ще бъде до голяма степен Git-ориентиран.

Запознах се с Bazaar благодарение на отличния блог "Market Day".

Меркуриал трябваше да опита, тъй като е православен (и заслужено).

Никога не претендирам за дълбочината на анализа или опит за развихряне на холивар, но просто ще изразя натрупаното. Ако съм пропуснал възможност, моля поправете ме.

Относно камбанарията, от която гледам обекта. Търся система не за дома (моите собствени проекти се намират на различни системи и всичко е наред), а да поддържа системата на няколко типа UNIX плюс Windows. Приблизителният брой файлове в клона на проекта е около шест хиляди. Сила на звука

250 мегаграма (уви, има редица двоични файлове). Размерът на хранилището не се тревожи особено, когато става въпрос за разумни цифри.

Git

Това е скалпел. Времето за обучение и потапяне в системата е малко по-дълго от това на състезателите, но след като свикнете, разбирате кой инструмент имате в ръцете си. Потребител начинаещ с Git в ръце изглежда като дете, което реже наденица с хирургически скалпел.

Това, което наистина харесвам в Git, е наличието на система за подреждане (междинна връзка между работните файлове и хранилището). Много е удобно, когато можете да подготвите не целия файл за фиксиране, а само част от него.

Много удобна система за скриване за съхраняване на временно време на работа и превключване между тях, без да се създава клон, когато трябва да разсеете за минута експеримент.

Невъобразимо мощната команда за пребазиране е много завладяваща, която може да направи всичко с историята на проекта (включително да го развали). Тоест, Git не превръща свещеността в историята в религия. Даден е механизмът за неговото модифициране, но отговорността за резултата се прехвърля върху потребителя. Никой няма да ви забрани с обикновен ключ - променете да коригирате синтаксисната грешка в текста на последния фиксиращ файл (и всеки друг коммит) или да изтриете който и да е ангажимент от историята, но дали имате нужда от него или не, е въпрос на личен подход да работиш. От моя личен опит като човек, участващ в издаването на издания, ще кажа, че понякога наистина трябва да можете да промените историята, уви. В Perforce трябва да направя много ръчна работа поради това.

В крайна сметка има хубав бонус под формата на висококачествен публичен хостинг github.com.

От минусите, които ме докосват, това е просто отвратителен порт за Windows. Използвам версията, изградена на MinGW. Засега непобеден бъг за мен е фактът, че по някаква причина някои от основните UNIX помощни програми, които са част от Git дистрибуцията за Windows, при стартиране очевидно се опитват да определят наличието на всички логически устройства (C:, D: и др.) в системата. Добре е, когато няма мрежови устройства, но когато ги има, тогава такова проучване отнема досадни 2-3 секунди всеки път, когато стартира (причината беше разкрита чрез анализ на мрежовия трафик, тъй като първоначално мислех, че имам вирус). На домашния компютър всичко е наред - няма мрежови устройства.

Но въпреки всички пречки, с помощта на git-p4 установих добър механизъм за интеграция с централизирано изпълнение на някои от нашите разработчици, които често работят офлайн. Човекът се синхронизира, докато е онлайн и актуализира локалното хранилище на Git. След това той работи тихо офлайн чрез Git и след това отново онлайн изпраща всичко, направено от Git, на Perforce.

Базар

Готина система. Работи половин оборот извън кутията, но само там, където има Python, така че на някои от нашите принудителни UNIX-и бях за ужас.

Докато не открих специални семантични недостатъци, които ми пречат да работя.

Наистина ми харесва подходът, когато всеки клон като такъв живее в отделна директория, тоест има свой собствен набор от работни файлове (въпреки че може да няма).

По някакъв начин не можах да намеря безплатен хостинг за Bazaar в движение.

Жива

Пайтон отново, така че автоматично всичко е шоколад в системи, където е, но тъжно там, където не е.

Един от добрите бонуси е фактът, че Google е направил хостинг поддръжка за тази система. Както пише в доклада им за това защо са избрали Mercurial, а не Git, както разбирам, в него се казва, че основните причини са по-лесното интегриране на Mercurial в системата за http услуги (Git може да използва и http, но по-бавно), и логическата близост на синтаксиса на Mercurial command до Subversion (тук, разбира се, Git е засега).

Като цяло за себе си досега съм решил: ако за дом за семейство или където има Windows и Linux, то това несъмнено е Bazaar или Mercurial (можете да хвърлите монета), но все пак за използване в много хетерогенни системи и където е необходимо да можете да управлявате историята, докато Git.