Пытаюсь вот сформулировать свое мнение касательно "Git vs Mercurial" и понял что немного не хватает информации. Жуйк, есть ли какие-то ситуации, которые в hg делаются значительно проще чем в git? Простоту будем мерять в степени необходимости выполнения "неочевидных" комманд в git-решении.
Это не вброс, не флудите, плз. Если есть желание устроить СО на тему Git-vs-Mercurial — создам отдельный потс
Replies (195)
-
@ComradeDOS, насколько я понимаю это не одно и то же. Функциональность хуков очень ограничена, когда расширения меркуриала могут очень много что менять, например, как хранится информация в репозитории.
-
@Shchvova, Скажем так — с помощью хуков можно сделать многое. Если нужно больше лезь внутрь.
-
@Sectoid, да, еще еще меркуриал нормально использует ветки. Звучит тупо, но гит в этом плане просто говно... Ну общим, вот что умные люди пишут jhw.dreamwidth.org/18 · Reply
-
@ComradeDOS, Ребейз? Шикарно, после этого можно про тормознутость меркуриала даже не заикаться.
-
@Sectoid, ну общим, отошли от темы. Меркуриал лучше гита банально тем что он мержит умнее.
Читать jhw.dreamwidth.org/42 · Reply -
@xl0, ага. а критерием кривости/ровности является степень похожести на git. git лучшевсех потому что это git и он лучшевсех. какая срань.
-
@LittleChris, ну, я написал уже 4 конкретных факта чем лучше меркурил гита, на что получил ответ "говно, т.к. не так как в гите"
-
@LittleChris, Я зибил и просто использую миррор в гит по работе. С кроме работы hg не встречаю.
-
@Kim, хомячки вообще зло. и даже на топливо для биореактора едва годятся.
-
@balodja, Последнего. В git help commit есть описание того, что тебе нужно. ;)
-
@Shchvova, есть ещё класс юзеров «гит охуенный потому, что гитхаб охуенный».
-
@ComradeDOS, наваяешь на хуках git аналог hg-git.github.com — тогда и поговорим.
-
@Shchvova, Это те которые ведут диалог в формате "Ты хуй, hg это единственно верная система". Все уже увидели две ссылки с описанием одной и той же проблемы. ТС наверно даже сделал пометку, что Git does not records family history in the repository и дальше его не интересует, как ты называешь собеседников, долбаёбами которые дрочат на и далее по тексту.
-
@Kim, вы чота путаете, тезис таков: «git — уёбищное говно, пушо здесь он неудобный, а тут — кривой, а вот этого не умеет в принципе. я с вас удивляюсь, хули вы все на него фапаете»
-
@ComradeDOS, Ты же таким образом склеишь два коммита, если я правильно понял.
-
@LittleChris, Ну понятно же, что кроме "не умеет в принципе" про историю — остальное были аргументы уровня "мне удобно спать на потолке, а кто не согласен — болен на голову".
-
@trminator, с некоторой натяжкой можно принять. а почему именно http?
-
@Kim, «мне удобно набивать в 1,5 раз больше команд при рутинных операциях из-за прибитой 150мм гвоздями staging area, получая профит от её использования раз в месяц; а кто не согласен — болен на голову»
-
@Sectoid, я так понимаю, libgit2.github.com пишется гитхабовцами от нехер делать?
-
@Sectoid, особенно интуитивно выводится команда git request-pull например
-
@LittleChris, А что это за комманда? за 3+ года использования ни разу не сталкивался.
/me пошел читать man. -
@balodja, датышо? сирьёзна?
«а, да, еще в меркуриале нету необходимости делать рибейз... Вообще это ущербная идеология править историю, не?» — где тут про удалённую историю?
И кстати, иногда может появиться крайняя нужда отредактировать удалённую историю: файл с паролями засунули, выложили бинарь, или просто файло с нарушением лицензии. А какую колбасу нам предложит hg на этот случай? -
@LittleChris, выгружает в рабочую копию ветку bar, очевидно же. еще раз — курим модель.
-
@fractal, можно mq использовать, можно strip+import, можно histedit.
-
@LittleChris, что именно — это? семнатика checkout — в man git-checkout, модель счас сходу не скажу, но в мане тоже есть.
-
@LittleChris, git checkout [-p|--patch] [<tree-ish>] [--] [<paths>...]
ы? -
@LittleChris, открывайте дверь! Это акция "знай shell или кипятильник в жопу!"
-
@LittleChris, также как и тебе — за решение задач. а если хуево знаешь инструмент — решаешь их ты тоже хуево.
-
@Sectoid, ви гойворите так, будто в hg нет этого вашего rebase.
-
@Sectoid, или беру нормальный инструмент, но ведь это не рассматривается, не так ли?
-
@LittleChris, инструмент, которым невозможно выполнить требующуюся мне манипуляцию — говно и не нужен.
-
@LittleChris, да, наслышан уже. правда не тестировал — насколько точно соответствуют?
-
@LittleChris, его для другого пишут. чтобы была возможность безопасно взаимодействовать с гит-репами из долгоживущих процессов. Существующая libgit написана из расчета использования в короткоживущих утилитах, и имеет в связи с этим немалые утечки памяти
-
@Sectoid, они оба являются одним и тем же — перемещаемым указателем на вершину DAG ревизий. hg-git пушит в git remote именно bookmarks
-
@Sectoid, очевидно, что
re-entrant, with sane error handling
сплошь выдумка и маркетинг. ну кому это может понадобиться?
designed with a solid and consistent API
compiled with minimal external dependencies (currently only zlib) -
@LittleChris, она немножко статическая, является частью проекта git.
-
@LittleChris, а теперь еще раз прочитай сообщение, на которое отвечаешь.
-
@Sectoid, или ты имел в виду, что она вкомпилена в git статически и на диске её запросто может не быть?
-
@LittleChris, я имел в виду, что в силу того, что она статическая и не особо предназначена для внешнего использования — ее нечасто вкладывают в пакеты в дистрибутивах.
-
@Sectoid, когда сроки поджимают, а инструмент требует прочесть и усвоить тонны манов чтобы просто работать с ним, он выкидывается нахер.
-
@LittleChris, ну, я ж говорю — херовый из тебя работник, даже инструментарий первой необходимости не знаешь в базовом объеме. в сад.
-
@Sectoid, а всё почему? а всё потому, что в кишках у git говно и черви, которое даже в либу толком не завернёшь. вот 5 лет прошло, прежде чем хоть что-то вменяемое появилось.
-
@ComradeDOS, stackoverflow.com
but the downside of it is that you cannot push updates made to your git repo to a hg repo with git-hg
а hg-git умеет пушить коммиты в репозитории git -
@LittleChris, если честно — мне не сильно интересно что в кишках, пока оно решает мои задачи. что до качества кода — да, оно не везде высокое.
-
@LittleChris, Диагноз по тому простому факту, что если тебя поджимают сроки, то свой инструментарий ты должен давно уметь. То есть ситуация "завтра дедлайн, а мне надо прочитать тонны манов" — невозможна. //К.О.
-
@Kim, это был не «мой инструментарий». это «инструментарий, которым приказал пользоваться заказчик (потому что он оплатил пару приватных реп в гитхабе) и который выбирал не я».
А ситуация была «доработать и внедрить workflow сегодня, а лучше вчера». учитывая тот факт, что мой стаж работы с git составлял пару месяцев и 5 команд из туториала на гитхабе, а git был и моложе на пару лет, и ещё большее говно, чем сейчас, задача была практически невыполнима вовремя. Следующий (и все последующие) проект я положил под mercurial и не пожалел об этом ни разу за все полтора года, которые я с ним работал. -
@Sectoid, надо понимать, вам не составит труда переписать github.com так, чтобы оно использовало эти самые низкоуровневые команды?
-
@Sectoid, кроме того, у git отсутствуют extension points. задача «добавить ключ к произвольной команде» или «пищать в спикер каждый третий вызов любой команды» не решается средствами git api, а решается (пере)определением алиаса в шелле (см. git achievements сотоварищи).
-
@Sectoid, и вот здесь вопрос.
Зачем тратить ресурсы на «изучать модель», если пользуясь нормальными DVCS (veracity, hg, bzr) этого делать не нужно? -
@dr-Chaos, ложь чуть более чем полностью. Начинается это с того что она тащит с собой пол cygwin-а, perl, vim и еще кучу ненужного говна. В инсталлере msysgit или как там его куча каких-то странных опций вроде работы с EOL, каки-то идиотские git shell-ы, и т.д. И заканчивая тем что какой-нибудь невозможностью откатить все измененные файлы. Частично в таком случае помогает создание staging area и удаление её тут-же, но не всегда.
-
@overmind88, в сраче много шума. правда в результате эта тему к нему и скатилась, увы(
-
@LittleChris, посмотрел пример — принципиальной сложности не вижу. на bash подойдет?)
-
@Sectoid, я не говорил что оно не работает. Оно работает но через одно место. И судя по мануалу progit.org ничего и не поменялось...
Если два отсутствующие локально коммита на сервере уже зажевало в pack файл, то сливаться будет он весь... А если repack-а давно не было то при pull-е будет огромная куча GET-запросов.. Сюда же добавить что репозитории для этого дела нужно заводить с отдельными ключами плюс заниматься непонятно каким извращением с WebDAV-ом. А так да, вроде и работает. -
@overmind88, дада, мы уже выяснили, что чтобы быть нормальной, название vcs должно начинаться с «git».
-
@Sectoid, впрочем, если сможете хранить репозиторий в реляционной БД (sqlite например, но подойдёт любая) — пишите хоть на баше, хоть на брейнфаке
-
@ComradeDOS, github.com
hg convert . .git/hgcheckout
В отличие от этой поделки, hg-git не использует /usr/bin/git. Вообще.
hg -R .git/hgcheckout push $HG_REPO -
@LittleChris, Зря. Если бы использовал, то работал бы быстрее и потреблял меньше памяти. ;)
-
@Sectoid, Как я понял авторы что на <jhw.dreamwidth.org>, что на <jhw.dreamwidth.org> жалуются на то, что mercurial в истории сохраняет имена веток, а git хранит имена только для текущих бранчей. Из-за этого (смотри вторую ссылку, там проще расписано) нельзя понять какая ветка истории всегда принадлежала ветке release, а значит нельзя, например, удобно разобрать какие изменения пришли извне твоей линии разработки и которые надо будет, соответственно, описать в обзоре перед релизом.
-
@dion, Не, ну господа. Больше года назад в git-е появился CGI, который нормально работает не с файлами, а с объектами репозитория (git-http-backend). С WebDAV с тех же пор возиться не надо, т.к. аутентификация будет та что укажешь веб серверу. Ну и под винду уже месяца 3 как можно negotiate аутентификацию использовать, т.к. curl виндовый допилили, до этого ntlm приходилось юзать.
-
@dion,
Например непонятно зачем в системе второй перл, vim и еще кучу говна...
А hg использует петон, установленный в системе? -
@overmind88, можно и так.. на оффициальном сайте можно выбрать либо в виде одного exe-ника (созданного py2exe) либо чтобы был нужен пистон.
-
@Sectoid, немного оффтоп, но думаю, пригодится: сводная табличко «фатальных недостатков» Git и Mercurial — blog.develop7.info/200 · Reply