В чем разница между Mercurial и Git?

Я работаю над Mercurial, но source-control в основном считаю, что обе scm системы эквивалентны. Оба scm они работают с одними и теми dvcs же абстракциями: серией снимков scm (наборов изменений), составляющих source-code-management историю. Каждая ревизия знает, откуда hg она взялась (родительская git ревизия), и может иметь много git-commands дочерних ревизий. Недавнее hg расширение hg-git обеспечивает scm двусторонний мост между Mercurial sccs и Git и как бы демонстрирует sccs этот момент.

Git уделяет большое source-control внимание изменению этого hg графа истории (со всеми вытекающими source-code-control отсюда последствиями), тогда comparison как Mercurial не поощряет source-code-control переписывание истории, but it's easy to do anyway и source-code-control последствия этого в точности sccs соответствуют вашим ожиданиям source-code-control (т. е. , если я изменю набор hg изменений, который у вас scm уже есть, ваш клиент увидит git-commands его как новый, если вы его revision-control отмените). Итак, Mercurial sccs имеет предвзятость в отношении неразрушающих sccs команд.

Что касается легких sccs веток, то Mercurial поддерживает scc репозитории с несколькими ветвями с тех пор dvcs ..., я всегда думаю. Репозитории source-control Git с несколькими ветвями source-code-management - это именно то, что: несколько scc разнородных направлений разработки source-code-management в одном репозитории. Затем mercurial Git добавляет имена к этим source-code-control цепочкам и позволяет удаленно scm запрашивать эти имена. Расширение source-code-management Bookmarks для Mercurial добавляет mercurial локальные имена, а с Mercurial git-commands 1.6 вы можете перемещать git эти закладки при нажатии mercurial / вытягивании ..

Я использую git-commands Linux, но очевидно, что TortoiseHg comparison быстрее и лучше, чем эквивалент revision-control Git в Windows (из-за лучшего mercurial использования плохой файловой revision-control системы Windows). И http://github.com, и http://bitbucket.org предоставляют git-commands онлайн-хостинг, услуга Bitbucket dcvs отличная и отзывчивая (я scc не пробовал github).

Я выбрал comparison Mercurial, поскольку он выглядит git-commands чистым и элегантным - меня dvcs оттолкнули сценарии оболочки source-code-management / Perl / Ruby, которые я version-control получил с Git. Попробуйте vcs взглянуть на git-instaweb.sh file, если хотите source-control понять, что я имею в виду: это git сценарий оболочки, который генерирует scm сценарий Ruby, который, как мне source-code-control кажется, запускает веб-сервер. Сценарий mercurial оболочки генерирует другой mercurial сценарий оболочки для запуска vcs первого сценария Ruby. Также mercurial есть немного Perl, на всякий vcs случай.

Мне нравится blog post, который git сравнивает Mercurial и Git sccs с Джеймсом Бондом и МакГайвером dcvs - Mercurial в чем-то более source-code-control сдержанный, чем Git. Мне mercurial кажется, что людей, использующих sccs Mercurial, не так-то просто hg впечатлить. Это отражается dvcs в том, как каждая система source-code-control выполняет то, что Линус назвал comparison "the coolest merge EVER!". В Git вы можете объединиться mercurial с несвязанным репозиторием, выполнив git следующие действия:

git fetch 
GIT_INDEX_FILE=.git/tmp-index git-read-tree FETCH_HEAD
GIT_INDEX_FILE=.git/tmp-index git-checkout-cache -a -u
git-update-cache --add -- (GIT_INDEX_FILE=.git/tmp-index git-ls-files)
cp .git/FETCH_HEAD .git/MERGE_HEAD
git commit

Эти команды git кажутся мне довольно загадочными. В dcvs Mercurial мы делаем:

hg pull --force 
hg merge
hg commit

Обратите git внимание на то, что команды revision-control Mercurial просты и совсем source-code-management не особенные - единственная git-commands необычная вещь - это флаг git --force для hg pull, который необходим, поскольку version-control в противном случае Mercurial scm прекратит работу, когда вы hg извлечете из несвязанного mercurial репозитория. Именно такие scc различия делают Mercurial source-control более элегантным.

git

version-control

mercurial

comparison

dvcs

2022-03-10T20:43:32+00:00