Мерзавец и мерзавец

Я бы хотел знать:

  • В чем разница между Git и Mercurial?
  • Каковы плюсы и минусы их использования?
  • Насколько хороша поддержка Windows для обоих инструментов?

11 ответов

Решение

Некоторое время назад Google сделал анализ Git и Mercurial. Вы можете прочитать это онлайн на

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

Вы можете прочитать этот вопрос на stackoverflow:

Каковы относительные сильные и слабые стороны Git, Mercurial и Bazaar?

Во-первых, любой из них будет огромным шагом вперед по сравнению со старыми системами - это действительно неплохой вариант.

Git немного сложнее в использовании, но заметно быстрее и, возможно, более мощный.

Mercurial более дружественный и - благодаря TortoiseHg - намного проще в использовании в Windows.

В любом случае вы можете выбрать отличный хостинг (GitHub, Bitbucket, в конечном итоге Google Code), множество руководств и инструментов миграции из других систем. Если вам нужны пользователи Windows, я бы порекомендовал Mercurial - в противном случае, возможно, имеет смысл попробовать оба варианта и посмотреть, какой из них вы предпочитаете. Я считаю, что Mercurial более удобен, но Git не так уж и отстал и имеет некоторые пугающе крутые функции (ierebase -i)

У Git и Mercurial больше общего, чем они отличаются. Оба отлично.

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

Поддержка Windows... Я считаю, что есть интерфейсы GUI для обоих. Mercurial написан на Python, поэтому проблем нет.

Вот статья Эрика Синка о распределенных SCM:

Ртутный, Subversion и Уэсли Снайпс

Для системного администратора я считаю, что обратная совместимость, стабильность, надежность, безопасность и резервное копирование являются важными темами развертывания нового инструмента. Я могу дать вам некоторую информацию о Mercurial:

  • Обратная совместимость: Mercurial имеет установленную политику обратной совместимости. Правила гласят, что разные версии Mercurial всегда должны иметь возможность общаться друг с другом через HTTP(S) и SSH.

    Это означает, что вы можете безопасно обновлять клиенты без одновременного обновления сервера. Вы также можете сделать наоборот и обновить сервер в одиночку, но это, как правило, гораздо менее важно, так как новые функции появляются на клиентах и ​​часто ничего от сервера не требуют.

    Формат на диске иногда меняется - у нас было 4 изменения до сих пор. Когда это произойдет, старые клиенты откажутся работать с репозиторием на диске (но помните, что они все еще могут проталкивать / вытягивать по сети). Новые клиенты могут по-прежнему читать / записывать старые форматы репозитория и никогда не будут автоматически обновлять существующий репозиторий до нового формата в случае, если репозиторий используется совместно со старым клиентом, скажем, по NFS. В общем, мы стараемся сделать апгрейды безболезненными.

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

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

    Mercurial репозитории состоят из множества файлов revlog. Они предназначены только для добавления, что позволяет исправить некоторые формы повреждения оборудования, просто обрезая файлы. Вы всегда можете использовать hg verify в репозитории сделать Mercurial, перепроверить, что все в порядке.

  • Безопасность: Когда хранилища размещаются с использованием SSH, применяются все обычные правила контроля доступа - Mercurial не делает ничего особенного. Так что, если я могу войти в систему и прочитать файлы в вашем хранилище, то я также могу сделать клон. Если у меня также есть доступ для записи, то я могу нажать на хранилище. Поэтому управлять этим легко: просто настройте группу и убедитесь, что новые файлы доступны для записи членам группы.

    При размещении с HTTP(S), это интерфейсный веб-сервер, который обрабатывает аутентификацию. Мы предоставляем CGI (с разновидностями FastCGI, WSGI и ISAPI), который взаимодействует с хранилищем, но сценарий не выполняет аутентификацию. Это означает, что Mercurial легко интегрировать с существующими настройками: если вы уже используете Active Directory для аутентификации пользователей, то вы все готовы к использованию AD с Mercurial. Смотрите этот вопрос для получения дополнительной информации о AD и Mercurial.

    Наконец, вместо использования hgweb CGI скрипт, который мы поставляем, вы можете использовать что-то вроде RhodeCode. Это обсуждается далее в этом вопросе.

  • Резервное копирование: с дизайном только для добавления, вы можете почти просто скопировать "живой" репозиторий, чтобы сделать резервную копию. Однако может случиться так, что таким образом вы получите слишком много данных, поскольку программа резервного копирования может скопировать "журнал изменений", прежде чем скопировать "манифест", тогда как Mercurial записывает манифест до того, как записывает журнал изменений. Журнал изменений ссылается на манифест, поэтому резервная копия будет содержать запись без ссылки в манифесте. Бег hg verify обнаружит это и hg recover может откатить незавершенную транзакцию.

    Правильный способ делать резервные копии - это использовать hg clone, Это гарантирует, что вы скопируете непротиворечивый снимок, даже когда люди загружают данные в хранилище во время выполнения резервного копирования. Поскольку вы можете клонировать по сети, вы можете легко отправлять данные на удаленный компьютер для безопасного хранения.

какая разница между мерзавцем и мерзавцем?

Существует множество подробных исследований DVCS (см. Ссылки в ответах выше). Мне понравился этот недавний блог: http://stevelosh.com/blog/2010/01/the-real-difference-between-mercurial-and-git/ и вполне с ним согласен. Главный плюс для git сегодня (начало 2010 года), вероятно, github!:-)

Каковы плюсы и минусы их использования?

Если у вас нет особых требований, я бы сказал, что в 99% случаев оба очень хорошо выполняют то, что вам нужно.

Я слышал, что поддержка окон Git не была хорошей (то есть, требует Cygwin, которого нет у большинства разработчиков Windows), но после просмотра демонстрации TortoiseGit я бы сказал, что это больше не так.

Также я слышал, что вы можете легко уничтожить файлы / каталоги в Git, а не в Mercurial, но я обнаружил, что с convert --filemap это тоже легко! Также расширения в оболочке или Python могут быть очень мощными (для создания команд и т. Д.), А расширение очереди позволяет очищать историю, перебирая, как в Git.

В итоге различия, как правило, уменьшаются: взгляните на оба и выберите, какие из них будут хорошими. Если вы уже знаете, например, Subversion, Mercurial будет легче обрабатывать, так как подобные команды соответствуют больше, чем в Git.

Насколько хороша поддержка Windows для обоих инструментов?

Смотри выше.

Надеюсь, это поможет.

Ура,
Кристоф.

Мне нравятся распределенные системы контроля версий: Git против Mercurial против SVN:

Это набор инструментов, как и Unix, и содержит несколько слоев, таких как сантехника и порцелин, в то время как Mercurial - это больше всего один инструмент ala svn.

Я также обнаружил, что mecurial лучше работает на Windows, когда я начал изучать оба. Быть честным, мерзавец для окон сейчас довольно стабилен.

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

Хотя другие dcvss, вероятно, технически сопоставимы, github выглядит для меня настоящим культурным шагом вперед.

Найден распределенный SCM в GNOME -> http://live.gnome.org/DistributedSCM

Для предвзятого сравнения посмотрите, почему Git лучше, чем X

Другие вопросы по тегам