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

Используйте <div> вместо <span> или укажите класс для SPAN и дайте ему атрибут display: block.

728
задан 2 revs, 2 users 100% 31 January 2012 в 20:07
поделиться

16 ответов

Эти статьи могут помочь:

Редактирование : Сравнение Мерзавца и Подвижный знаменитостям, кажется, тенденция. Вот еще один:

345
ответ дан 2 revs, 2 users 74% 31 January 2012 в 20:07
поделиться

Я в настоящее время нахожусь в процессе миграции от SVN до DVCS (при блоггинге о моих результатах, мое первое реальное усилие по блоггингу...), и я провел немного исследования (=googling). Насколько я вижу, что можно сделать большинство вещей с обоими пакетами. Кажется, что мерзавец имеет еще много или лучше реализовал расширенные опции, я действительно чувствую, что интеграция с окнами немного лучше для подвижного с TortoiseHg. Я знаю, что существует Гепард Мерзавца также (я попробовал обоих), но подвижное решение просто чувствует себя более устойчивым.

Наблюдение, как они - оба открытый исходный код (право?) Я не думаю, что любой будет испытывать недостаток в важных функциях. Если что-то будет важно, люди попросят его, люди кодируют его.

я думаю, что для общих методов, Мерзавец и Подвижный более, чем достаточен. У них обоих есть большие проекты, которые используют их (Мерзавец-> ядро Linux, Подвижное-> проекты Mozilla Foundation, оба среди других, конечно), таким образом, я не думаю, что любой действительно испытывает недостаток в чем-то.

Однако я интересуюсь тем, что другие люди говорят об этом, поскольку это сделало бы большой источник для моих усилий по блоггингу;-)

4
ответ дан Erik van Brakel 31 January 2012 в 20:07
поделиться

Существует большое и исчерпывающее сравнение таблицы и диаграммы на мерзавце, Подвижном и Базар, законченный в руководство InfoQ о DVCS.

4
ответ дан Spoike 31 January 2012 в 20:07
поделиться

Когда-то в прошлом году я оценил и мерзавца и hg для моего собственного использования, и решил пойти с hg. Я чувствовал, что это было похоже на более чистое решение и работало лучше над большим количеством платформ в то время. Это была главным образом жеребьевка, все же.

Позже, я начал использовать мерзавца из-за мерзавца-svn и способности действовать как клиент Подрывной деятельности. Это выиграло меня, и я теперь переключился полностью на мерзавца. Я думаю, что это имеет кривую немного высшего образования (особенно, если необходимо ввести по абсолютному адресу вокруг внутренностей), но это действительно - большая система. Я собираюсь пойти чтение те две статьи сравнения, которые John отправил теперь.

5
ответ дан Greg Hewgill 31 January 2012 в 20:07
поделиться

Существует динамическая сравнительная таблица, законченная в versioncontrolblog, где можно сравнить несколько различных систем управления версиями.

Вот таблица сравнения между мерзавцем, hg и bzr.

8
ответ дан Spoike 31 January 2012 в 20:07
поделиться

Мерзавец является платформой, Подвижный “just” приложение. Мерзавец является имеющей версию платформой файловой системы, которая, оказывается, поставлется с приложением DVCS в поле, но как нормальное для платформенных приложений, это более сложно и имеет более грубые края, чем сфокусированные приложения. Но это также означает, что git’s VCS очень гибок, и существует огромная глубина вещей неуправления исходным кодом, которые можно сделать с мерзавцем.

, Который является сущностью различия.

Мерзавец лучше всего понят с нуля †“от формата репозитория. Разговор Мерзавца Scott Chacon’s является превосходной краткой информацией для этого. При попытке использовать мерзавца, не зная what’s происходящий под капотом, you’ll заканчиваются перепутанные в какой-то момент (если Вы не придерживаетесь только очень простой функциональности). Это может звучать глупым, когда все, что Вы хотите, является DVCS для Вашей ежедневной стандартной программы программирования, но гений мерзавца - то, что формат репозитория на самом деле очень прост, и Вы можете понимать git’s всю операцию довольно легко.

еще Для некоторых ориентированных на техническую особенность сравнений, лучшими статьями, которые я лично видел, является Dustin Sallings’:

, Он на самом деле использовал и DVCSs экстенсивно и понимает их обоих хорошо †“и закончил тем, что предпочел мерзавца.

73
ответ дан 3 revs, 2 users 96% 31 January 2012 в 20:07
поделиться

Большая разница находится в Windows. Подвижный поддерживается исходно, Мерзавец не. Можно получить очень похожий хостинг к github.com с bitbucket.org (на самом деле еще лучше, как Вы получаете свободный частный репозиторий). Я использовал msysGit некоторое время, но перемещенный в Подвижный и, очень довольный им.

51
ответ дан mmiika 31 January 2012 в 20:07
поделиться

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

другая возможная причина для выбора того является приложением или сервисом, который только поддерживает одну из системы.. Например, я в значительной степени принял решение изучить мерзавца из-за github..

11
ответ дан dbr 31 January 2012 в 20:07
поделиться

Еще одно интересное сравнение ртути и git: Mercurial против Git . Основное внимание уделяется внутренним компонентам и их влиянию на процесс ветвления.

2
ответ дан 22 November 2019 в 21:31
поделиться

I think the best description about "Mercurial vs. Git" is:

"Git is Wesley Snipes. Mercurial is Denzel Washington"

22
ответ дан 22 November 2019 в 21:31
поделиться

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

Git уделяет большое внимание изменению этого графа истории (со всеми вытекающими отсюда последствиями) тогда как Mercurial не поощряет переписывание истории, , но это все равно легко сделать , и последствия этого будут именно такими, какими вы должны их ожидать (то есть, если я изменю уже имеющийся у вас набор изменений, ваш клиент будет видеть его как новый, если вы у меня вытащите). Итак, Mercurial имеет предвзятость в сторону неразрушающих команд.

Что касается легких ветвей, то Mercurial поддерживает репозитории с несколькими ветвями с тех пор ..., я всегда думаю. Репозитории Git с несколькими ветвями - это как раз то, что: несколько разногласий в разработке в одном репозитории. Затем Git добавляет имена к этим цепям и позволяет удаленно запрашивать эти имена. Расширение Bookmarks для Mercurial добавляет локальные имена, а с Mercurial 1.6 вы можете перемещать эти закладки при нажатии / вытягивании.

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

Я выбрал Mercurial, так как он выглядит чистым и элегантным - меня оттолкнули сценарии оболочки / Perl / Ruby, которые я получил с Git. Попробуйте заглянуть в файл git-instaweb.sh , если хотите понять, что я имею в виду: это сценарий оболочки , который генерирует Ruby ], который, как мне кажется, запускает веб-сервер. Сценарий оболочки генерирует другой сценарий оболочки для запуска первого сценария Ruby. Также есть немного Perl , для хорошей меры.

Мне нравится сообщение в блоге , в котором Mercurial и Git сравниваются с Джеймсом Бондом и МакГайвером - Mercurial как-то ниже - ключ, чем Git. Мне кажется, что людей, использующих Mercurial, не так-то просто впечатлить. Это отражается в том, как каждая система выполняет то, что Линус назвал «самым крутым слиянием КОГДА-ЛИБО!» . В Git вы можете объединиться с несвязанным репозиторием, выполнив следующие действия:

git fetch <project-to-union-merge>
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

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

hg pull --force <project-to-union-merge>
hg merge
hg commit

Обратите внимание, что команды Mercurial просты и совсем не особенные - единственная необычная вещь - это флаг - force для hg pull , который является необходимо, поскольку в противном случае Mercurial прекратит работу, когда вы извлечете из несвязанного репозитория. Именно такие различия делают Mercurial более элегантным.

hg pull --force <project-to-union-merge>
hg merge
hg commit

Обратите внимание на то, что команды Mercurial просты и совсем не особенные - единственная необычная вещь - это флаг - force для hg pull , который необходим, поскольку Mercurial прерывает работу в противном случае, когда вы извлекаете из несвязанного репозитория. Именно такие различия делают Mercurial более элегантным.

hg pull --force <project-to-union-merge>
hg merge
hg commit

Обратите внимание на то, что команды Mercurial просты и совсем не особенные - единственная необычная вещь - это флаг - force для hg pull , который необходим, поскольку Mercurial прерывает работу в противном случае, когда вы извлекаете из несвязанного репозитория. Именно такие различия делают Mercurial более элегантным.

238
ответ дан 22 November 2019 в 21:31
поделиться

Есть одна огромная разница между git и mercurial ; способ представления каждого коммита. git представляет коммиты как снимки состояния, а mercurial представляет их как различия.

Что это означает на практике? Что ж, многие операции в git выполняются быстрее, такие как переключение на другой коммит, сравнение коммитов и т. Д. Особенно, если эти коммиты находятся далеко.

AFAIK нет преимущества подхода mercurial.

17
ответ дан 22 November 2019 в 21:31
поделиться

Когда дело доходит до работы с ветвями (особенно краткосрочными), есть довольно существенные различия.

Это объясняется в этой статье (Объяснение ветвей) , в которой сравнивается Mercurial с Git.

7
ответ дан 22 November 2019 в 21:31
поделиться

Также сравнение от google (хотя оно немного устарело, сделано в 2008 году)

http://code.google.com/p/support/wiki/DVCSAnalysis

11
ответ дан 22 November 2019 в 21:31
поделиться

Если вас интересует сравнение производительности Mercurial и Git, прочтите эту статью . Вывод такой:

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

2
ответ дан 22 November 2019 в 21:31
поделиться

Они почти идентичны. Самое важное различие, с моей точки зрения (то есть, причина, которая заставила меня выбрать одну DVCS вместо другой) - это то, как эти две программы управляют ветвями.

Чтобы начать новую ветку, в Mercurial вы просто клонируете репозиторий в другой каталог и начинаете разработку. Затем вы выполняете извлечение и слияние. В git вам нужно явно дать имя новой тематической ветви, которую вы хотите использовать, затем вы начинаете кодировать используя тот же каталог.

Короче говоря, каждой ветке в Mercurial нужен свой собственный каталог; в git вы обычно работаете в одном каталоге. Переключение ветвей в Mercurial означает смену директорий; в git это означает попросить git изменить содержимое директории с помощью git checkout.

Честно говоря, я не знаю, возможно ли сделать то же самое с Mercurial, но поскольку я обычно работаю над веб-проектами, использование одного и того же каталога с git кажется мне гораздо более удобным, поскольку мне не нужно перенастраивать Apache и перезапускать его, и я не захламляю свою файловую систему при каждом ветвлении.

Edit: Как отметил Deestan, в Hg есть именованные ветки, которые могут храниться в одном репозитории и позволяют разработчику переключаться между ветками в пределах одной рабочей копии. git-ветки не совсем то же самое, что и именованные ветки Mercurial: они постоянные, а не отбрасываемые, как в git. Это означает, что если вы используете именованную ветвь для экспериментальных задач, даже если вы решите никогда не сливать ее, она будет храниться в репозитории. Это причина, по которой Hg поощряет использование клонов для экспериментальных, краткосрочных задач и именованных ветвей для долгосрочных задач, как для релизных ветвей.

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

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

С моей личной точки зрения, модель git глубоко связана с концепцией именованных ветвей и переключением между одной ветвью и другой в одном каталоге; hg может делать то же самое с именованными ветвями, но при этом поощряет использование клонов, что лично мне не очень нравится.

20
ответ дан 22 November 2019 в 21:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: