Вышел (http://www.selenic.com/pipermail/mercurial/2010-November/035...) релиз распределенной системы управления версиями Mercurial 1.7. В новой версии представлено около ста изменений (http://mercurial.selenic.com/wiki/WhatsNew#A1.7_.282010-11-0...), связанных в основном с оптимизациями, устранением недоработок и добавлением несущественных улучшений.
Из достоинств Mercurial можно отметить (http://www.opennet.me/opennews/art.shtml?num=14934): независящее от объема кода высокое быстродействие; компактное хранение данных в проиндексированном и сжатом виде; распределенная модель разработки, допускающая произвольное слияние отдельных децентрализованных репозиториев; встроенные средства резервного копирования и проверки целостности; привычный CVS-подобный набор команд; большой выбор GUI- и web-интерфейсов; поддержка нескольких моделей организации репозитория: централизованная cvs-подобная, распределенная полу-иерархическая и иерархическая децентрализованная.
В качестве примера ...URL: http://www.selenic.com/pipermail/mercurial/2010-November/035...
Новость: http://www.opennet.me/opennews/art.shtml?num=28516
На работе юзаю Mercurial, ибо много кто сидит на винде. Для всего остального - только git.
обоснуй
> Для всего остального - только git.С чего так безапелляционно? Не холивара ради, а токмо образования для!
Сам с SVN на Mercurial перебрался недавно, пока доволен и счастлив. Любопытно было бы услышать мнение того, кто с обоими системами работал... ( Я про Mercurial и Git )
Почему безапеляционно ? Мне надо было с самим собой поспорить что-ли ? :-)Из-за простоты работы с ветками.
В mercurial аналога git checkout -b new_feature так и не нашёл. В mercurial для этого приходится клонировать репо, потом мержить в корневой, в общем ерунда какая-то. Знатоки Mercurial поправят, если это не так.
hg update -r new_feature
$ hg update -r new_feature
abort: unknown revision 'new_feature'!
> $ hg update -r new_feature
> abort: unknown revision 'new_feature'!Эта команда обновляет рабочий каталог на заданную ветку, тэг или номер набора изменений. Если такой ветки не было, она не создается (в отличие от git).
Начать с текущего набора изменений новую ветку можно с помощью "hg branch".
Или я неправильно понял проблему?
Ну вот собсно я потому гит и люблю, потому что одной командой создаётся ветка и можно с ней сразу работать.
В mercurial одной командой "hg branch" создается ветка и можно с ней сразу работать.
"hg update" позволяет переключаться между ветками. Другое действие — другая команда, логично же.А вообще, более похоже на ветки в git работает расширение bookmark (уже упоминали в соседнем комментарии). Но мне оно пока не пригождалось.
Возможно, я недостаточно хорошо читал документацию, но на мой взгляд в Mercurial работа с ветками сложнее, чем в git. Хорошо, что есть какие-то расширения, но просто нет желания тратить время, чтобы разбираться с ними, хотя бы потому, что уже умею всё это быстро делать с помощью другого инструмента.
т.е. "только git" в первом комментарии означало "знаю только git. вернее несколько команд из первых страниц мануала. об этом должен знать весь opennet.ru"
Вы несколько неверно поняли коммент, на который ответили. Он был написан для того, чтобы выразить предыдущему оратору уважение, и подчеркнуть, что моё мнение - это только моё мнение.ОК, допустим, что про git я знаю только "несколько команд из первых страниц мануала". Скажите в таком случае, почему мне их хватает для полноценной работы ? Я даже больше скажу: для работы с git хватит 7-ми команд. Хватит ли для полноценной (1:1) работы с Mercurial семи команд ? Без ковыряния с плагинами, естественно.
"весь opennet.ru" должен знать, на мой взгляд, что есть и другой инструмент, и по мнению многих он лучше.
> Хватит ли для полноценной (1:1) работы с Mercurial семи команд?Эммм…
init/clone
addremove
commit
pull
push
branch
update7 штук — более чем достаточно.
hg bookmark new_featureпользоваться гитом (создавать ветки через checkout) - себя не уважать.
$ hg bookmark new_feature
hg: unknown command 'bookmark'
Mercurial Distributed SCMНасчёт уважать-не уважать no comments, все вопросы к Линусу :-)
> $ hg bookmark new_feature
> hg: unknown command 'bookmark'
> Mercurial Distributed SCMНужно включить расширение bookmark в ~/.hgrc.
О методах работы с ветками в Mercurial и их отличие от Git можно почитать тут - http://pqr7.wordpress.com/2010/10/10/a-guide-to-branching-in.../
Надо сказать возможности Mercurial в этом вопросе мне кажутся шире.
Спасибо за информацию, обязательно почитаю !
Вот именно после этого мануала я окончательно убедился, что веток в меркуриале нет. Ибо такое нагромождение костылей ими считаться не может.
Забавно, как раз таки в меркуриале ветки самые естественные и ненапряжные, в отличие от (google detached HEAD problem)
> Забавно, как раз таки в меркуриале ветки самые естественные и ненапряжные, в
> отличие от (google detached HEAD problem)Ну-ну
Достало засилье похвальбы в адрес Git.
Mercurial по возможностям ну ничем не хуже. Только что-то можеть делаться чуть-чуть по-другому. К тому же, если надо - есть и расширения.
А в чём проблема с git под Windows?И как бы разница есть:
It is important to note that this is very different from most SCM systems that you may be familiar with. Subversion, CVS, Perforce, Mercurial and the like all use Delta Storage systems - they store the differences between one commit and the next. Git does not do this - it stores a snapshot of what all the files in your project look like in this tree structure each time you commit. This is a very important concept to understand when using Git.
http://book.git-scm.com/1_the_git_object_model.html
Врут - гит все равно пакует дельтами (и для того, что бы он работал с приемлемой скоростью - это необходимо), только меркуриал это делает всегда, а гит переодически (автоматом или через git-gc/git-repack). Но в любом случае в обоих системах это всего лишь деталь реализации (равзе что потребность в git-repack делает гит более убогим) - объектная модель у обоих на дельты не завязана, идентефикаторы (хеши) считаются от полных объектов.
как в hg изменить предыдущие коммиты? Аналог git rebase -i HEAD~3 ?
> как в hg изменить предыдущие коммиты? Аналог git rebase -i HEAD~3 ?Что-то из этого — http://mercurial.selenic.com/wiki/RebaseExtension, http://mercurial.selenic.com/wiki/TransplantExtension или http://mercurial.selenic.com/wiki/HisteditExtension
Inb4 следующих вопросов — http://mercurial.selenic.com/wiki/GitConcepts#Command_equiva...
А вообще переписывание истории как правило не нужно.
очень толковые ссылки. спасибо.