Подтвердить что ты не робот

Почему вы используете Git над Mercurial? (Или наоборот.)

В настоящее время я использую Git, и мне это нравится, но я хотел бы узнать больше о Mercurial. Имеет ли он преимущества перед Git? Каковы преимущества Git над Mercurial?

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

4b9b3361

Ответ 1

(A) Топ 3 реальных причины Я использую Git, а не Mercurial по выбору:

  • историческая стохастичность/инерция
  • историческая стохастичность/инерция
  • историческая стохастичность/инерция

(B) Учитывая вышеизложенное, верхние 3 вещи, которые мне нравятся о Git над Mercurial:

  • индекс
  • легкие ветки
  • sane tagging (тег не является фиксацией, которая следует за фиксацией, которая помечена тегом)

(C) Три вещи, которые Mercurial имеет для нее над Git:

  • лучшая исходная документация (акцент на native, потому что книга ProGit просто выдающаяся, и любой, кто имеет жалобы на Git или Git модель, слишком сложный или запутанный должен идти прямо туда)
  • последовательная фиксация фиксации (только в области локального репозитория, но я полагаю, что иногда это может быть более удобным, чем вырезание и вставка SHA-1 во время игры?)
  • более яркий логотип/имя?

Я думаю, что все (большинство?) элементов в (B) являются результатом того, что я использую модель Git из-за (A) или может быть "исправлена" в Mercurial через плагины. Но факт остается фактом: Git работает так, как я хочу, чтобы он был из коробки, и я могу жить без каких-либо элементов (C) [при условии, что C (1) представляется не-проблемой из-за отличного ProGit книга]. И, таким образом, я продолжаю использовать Git над Mercurial.

Ответ 2

Я использовал как Mercurial, так и git, и я предпочитаю hg до git; это просто приятно. Стив Лош в своем блоге Реальная разница между Mercurial и Git подводит итог большинству моих чувств. Вот некоторые цитаты, которые я полностью согласен с:

Я думаю, что все еще остается очень важное, очень важное отличие: системы очень сильно отличаются.

Я лично считаю, что философия Mercurials легче работать. Легко для меня обернуть голову вокруг команд, когда они более модульные и менее монолитные.

Мне лично не нравится индекс. Я чувствую, что git поощряет людей проверять в наборах изменений, которые содержат код, который они никогда не тестировали (или даже не строили), потому что индекс является такой важной частью рабочего процесса git s.

Я нашел индекс болью для работы - если я хочу что-то подобное (и более мощным тоже), я буду использовать mq. В то же время - почему я должен быть вынужден иметь разные типы add s и т.д.? Почему я должен быть вынужден использовать git commit -a (и иметь git status - где git st? - показать странную информацию)?

Вполне серьезно, я лично могу приписать успех и широкое признание git ни к чему, кроме GitHub. Стив тоже завязывает это. Как люди могут пройти через это и "дать" нажимать на пользователей git?

Мне не нравится использовать git сам (хотя он намного лучше SVN или CVS), но GitHub - такой потрясающий сайт, который Ive решил переключить, чтобы использовать его.

Я буду продолжать использовать только git/GitHib, когда это необходимо, когда я хочу сделать патч тому, что там есть. Мои собственные проекты будут продолжать использовать Mercurial. Он чувствует себя лучше.

Ответ 3

Основная причина, по которой я использую mercurial, заключается в следующем:

  • Он поддерживается в более открытых хранилищах, которые я обычно использую (а именно, Bitbucket и Codeplex)
  • Он отлично работает в Windows

В противном случае, что касается самих операций VCS, они почти одинаковы.

(EDIT: Чтобы уточнить - я не говорю, что mercurial превосходен - по моему пониманию Git быстрее, чем mercurial в общем использовании, и я на самом деле не использовал Git настолько, чтобы комментарий. Но эти две причины: , почему я использую mercurial, а не git)

Ответ 4

Нет Mercurial и Git очень похожи.

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

Существуют небольшие различия.

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

Mercurial имеет расширения для большинства других целей

Большинство других вещей можно достичь, используя мощную модель расширения в Mercurial. Это также имеет преимущество легкой расширяемости, поскольку большая часть Mercurial-кода написана на Python, и вы можете запускать Extensions, как если бы они были родными командами Mercurial.

Некоторые ссылки

Дополнительную информацию и информацию см. в следующем обсуждении.

Ниже приведен краткий обзор различий между Git и Mercurial

Почему, я предпочитаю Mercurial над Git.

[Опять личное страстное и предвзятое мнение]

Команды действительно являются подмножеством того, что доступно в Git и кажется очень достаточным. Что-то еще, это похоже на излишество.

Ответ 5

Я предпочитаю git, потому что:

  • Он (кажется) быстрее для меня.
  • Дополнительные встроенные инструменты .
  • Более высокая доступность справки, вопросов и обсуждение (даже на этом сайте).
  • GitHub невероятно полезен.
  • В настоящее время существует много активных/передовых разработок с использованием git, особенно в сообществах Javascript и Ruby.

Ответ 6

Я использую Mercurial, потому что code.google.com поддерживает его. Я также использую его, потому что он написан (в основном) на Python и легко расширяется. Он также легко устанавливается во многих операционных системах. Некоторые люди, с которыми я работаю, боятся командной строки и любят использовать инструмент GUI, поэтому я указываю их на TortoiseHg.

Оба имеют свои плюсы и минусы. Используйте то, что вам более удобно.

Бонусная ссылка:

gitvsmercurial.com

gitvsmercurial.com через Wayback Machine

Post Mortem

С момента написания этого ответа я стал главным пользователем git, главным образом из-за GitHub. Я также начал использовать Subversion на работе. Я бы предпочел не использовать Subversion.

Ответ 7

Когда я просматривал DVCS несколько лет назад:

  • bzr был привязан к Python 2.4 и не будет устанавливать/запускать на 2.5 из коробки.

  • git поддержка в Windows была в лучшем случае отрывочной.

Осталось hg. Я был очень доволен hg. Сообщество hg, похоже, обращает внимание на UX, что делает меня, пользователя, счастливым. git UX, казалось, долгое время начинал двигаться к "простоте использования", что не заставляет меня выглядеть благосклонно на нем.

Есть несколько вещей, которые, как мне кажется, требуют hg: выделяются гибкие метаданные и большая файловая легкость. Тем не менее, эти аспекты не мешают моему регулярному использованию, и если мне это действительно нужно, я могу писать/изменять расширения без значительного печали.

Ответ 8

6 одного, 1/2 десятка другого. Я переключился с Mercurial на Git, потому что другой парень в моей команде предпочитает это. Однако, я думаю, он предпочитает это только потому, что сначала узнал об этом.

Ответ 9

Вы можете достичь эквивалентных вещей с обоими, но это не означает, что различия поверхностны.

Используя Git ежедневно в течение нескольких лет, а Mercurial ежедневно около месяца, я нахожу, что есть и другое отличие для обоих.

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

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

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


Еще одна вещь: я очень сильно полюбил первое знакомство с Mercurial Python API (так как я являюсь пользователем Python). Я думал, что у меня будет отличное время для написания расширений. Затем я увидел предупреждения, что API не будет гарантированно оставаться совместимым.

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

Ответ 10

В то время как есть некоторые различия в юзабилити (моя основная говядина с Git не включает цвет по умолчанию: по умолчанию по умолчанию у Hg нет пейджера, цвета, взлома для colordiff, чистка - только потому, что структура расширения не означает вы не должны отправлять их и включать их повсюду), важная причина, по которой я столкнулся с Git, заключается в том, что в сообществах это имеет много общего. Несмотря на то, что Hg вначале возглавлял проект Mozilla, Git стал стандартом для сообществ arbales, упоминающих (в частности, javascript и веб-инфраструктуру), Gnome, ядро, очевидно, и длинный хвост случайных проектов, которые я нахожу полезными.

Просто потому, что есть сетевые эффекты, это не значит, что маркетинг решил все. Git набор инструментов является генеративным и ужасно эффективным (он используется во множестве резервных копий, архивов и данных); Расширения Hg также должны быть генеративными, но больше на уровне ui-улучшений. Git начались некоторые полезные стандарты, такие как быстрый импорт. Я думаю, именно поэтому он привлек больше типов системных застройщиков, которые являются хорошим семенем как для улучшения git, так и для их заполнения в git.

Ответ 11

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

IOW: Mercurial не существовало, когда я начал использовать Git, поэтому я никогда не принимал сознательного решения между ними.

Однако есть несколько вещей, которые мне нравятся:

  • каждый отдельный проект, который меня волнует, использует Git, а те немногие, которые не используют Git, предоставляют двухсторонний шлюз
  • GitHub, Codaset, Assembla, Codebase, Gitorious, Repo.Or.Cz (ветвь моба FTW), Unfuddle, ProjectLocker, SourceForge, TuxFamily
  • область постановки aka. Индекс
  • легкий доступ к низкоуровневой "сантехнике" (я сделал некоторые безумные вещи, которые мне пришлось бы написать расширение Python для Mercurial. В Git я просто вызвал команды.) Например. Я объединил два репозитория, у которых не было общей истории, похожей на Самое крутое слияние с.