All streams
Search
Write a publication
Pull to refresh
223
0
Александр Соловьёв @ingspree

Уверенный пользователь ПК

Send message
Хз, давно не читал статей про хг. По идее эта должна давать какое-то впечатление, но текста тут много:

stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/
> Я делаю всё через комманд лайн, кроме очевидно неудобных вещей.

Мне удобно смотреть историю и в хг, и в гите. И в сабвершене не испытывал проблем. Но базар прячет еë, и это раздражает. Это не шоу-стоппер.

> Вы патч мастер? Вам сливают всё, а вы мерджите? Не могу ничего посоветовать ибо не знаю вашего процесса. Просто выглядит подозрительно.

Не понимаю, что выглядит подозрительно? За последнюю неделю я завершил какое-то количество тикетов и они ждут, пока до них доберëтся гейткипер, а некоторые еще в процессе (потому что я переключался на саппорт/проблемы на лайве).

> :: Я не могу клонировать или не клонировать по желанию
> В смысле? готово — делаешь merge \ pull не готово — не делаешь. Что значит должен? В транк не должны попадать недоделки. Для этого есть бранчи фич. Клонировать (сделать branch) можно в любой момент и с любой ветки.

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

То, что в базаре репозиторий и ветка — это синонимы — это плохо. Очень плохо. Я могу иметь один репозиторий и много веток одновременно и в меркуриале, и в гите. Там DAG, почему мне инструмент не даëт с ним нормально работать?

> можно поставить, посмотреть и сделать bzr revert если не подходит, в чем проблема? Все, что не закоммичено — не закоммичено и места не занимает…
> bzr revert откатит до состояния последнего коммита.

Применение через bzr pull сделает коммит. Я могу сделать анкоммит, но я не могу посмотреть в мыле. А я хочу, потому что я привык и потому что это быстрее в несколько раз.

> Ерунда какая. А почему не положить их в библиотеку и держать в репозитории то, для чего он предназначен? Для исходников, вообщем-то.

Потому что репозиторий организовывал не я и потому что оформление меняется в процессе.

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

> Потихоньку выясняется, что базар тут вообщем-то нипричем. А, как я и говорил, надо думать о процессах и организации работы.

Well, при чëм, конечно. Я написал список проблем, и 3 гига на диске — это не основная и не проблема.

Проблема в том, что он мешает мне общаться с коллегами, проблема в том, что у начала работы над тикетом стоимость выше той, которую я получу с меркуриалом или гитом, он неудобен (и не пытается таковым быть) — неужели расцветить всë или паджинировать так тяжело?

И я не могу его нормально расширять, чтоб улучшить воркфлоу. API базара плохое как внутреннее — питоновское, так и наружное — коммандлайновое (к примеру, return code часто не имеет отношения к тому, что произошло).

> Эмоционально это вам нравится, а это нет…

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

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

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

Почему не так? У меня примерно 15 тикетов еще в стадии «не дошли до лайва», еще 5 — просто эксперименты, еще десяток я не удалил, в результате — 30 бранчей, каждый по 100 мегов (история длинная), 3 гига накопилось.

> В чем невозможность движения? Организовать структуру бранчей, установить общие правила, _следить за четким их исполнением_. Всё просто работает. Двигаться в каком смысле?

В том смысле, что я не могу три ветки в одном репозитории держать, например. Я не могу клонировать или не клонировать по желанию — мне нужно клонировать. Я не могу отправить патчик по мылу человеку, чтоб он его посмотрел и применил, если ему захочется, потому что для этого ему придëтся создавать новый клон, применять то, что выдал bzr send и смотреть — очень высокая цена за любое движение выходит. :(

> Именно с базаром у нас работают до 10 человек, так что спорить не буду, конечно.

У нас тоже всего 11 человек. А проект не слишком так, чтоб большой, там рабочая копия на 40 мб, из которых 30 — всякие картинки и оформление, остальное — код, темплейты и всякие мелочи.
Хз, для меня stash выглядит как недо-mq.

А строго по ветке на фичу я и в гите не применяю, и в хг — только для более-менее долгоиграющих изменений. Но это в своих проектах, на работе сейчас как раз воркфлоу строим и «по ветке на тикет» очень хорошо выходит. С букмарками.

Ну хг удобнее и проще, это да.
Но он серьëзно абсолютно нелогичен. Почему я забираю изменения из транка, делаю с ними мерж и в результате вижу «merge with trunk» вместо изменений из транка? А мой сосед потом забирает мои изменения, но видит этот «merge with trunk» вместо моих изменений. Не вижу, что именно здесь логично. :(

> Если логика не подходит под выбранный вами процесс разработки — надо просто взять другой инструмент, пока не поздно.

Тут возник клëвый прикол. У нас есть процесс, выстроенный под базар, с кучей репозиториев/бранчей, гейткипером и т.п. Если мы берëм хг или гит, то мы легко его можем поддерживать и даже двигаться в разные стороны. А с базаром двигаться некуда, у него один вариант, если не хочется давать доступ всем в главный репозиторий — куча отдельных репозиториев. :( У меня на диске текущие незамерженные бранчи проекта занимают 3 гига. Вроде немного, но это ж не видео, это текст.

Он очень ограничен в плане свободы передвижений. :(
Я подумываю написать в блог свежую статью на тему сравнения гита вс хг и плевка в сторону базара (ну, у меня к нему и раньше немного неприязненное отношение было, но за последние два месяца оно резко изменилось в сторону ненависти :)), за последний год как раз постоянно работал со всеми…
Еще не надо забывать, что cheap local branching — тоже псевдопреимущество над hg. Всë то, что они описывают, есть в hg.

> Но, вообще говоря, git и правда помощнее, чем hg (хотя и менее юзабельный, как минимум на первых порах).

Да ну? Хотелось бы услышать, в каком месте?
> Я использую одновременно и гит, и меркуриал, поэтому не поддержу мнение, что между ними так уж сложно переходить :)

Ты пришëл уже на накатанную дорожку и тебе просто чëтко и ясно объяснили, что делать. А когда только начинают его использовать, всякая херня лезет очень здорово. :\
Эээ… не уловил разницу хг и гита по отношению к веткам. В чëм идея?
Еще есть crecord, это record с интерфейсом на curses, и можно отдельные линии выбирать.
В двух словах? Можно — «это жопа».

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

  • no in-repo branches
  • absolutely useless revision numbers
  • mainline idea and merge-orientedness, log presentation sucks
  • no possibility to exchange with text/plain patches
  • no coloring, no auto-pagination of output
  • abolutely awful code and API


Первый пункт может казаться неважным, если до того не использовать hg или git. Но он важен, и для меня это основной камень преткновения.

Номера ревизий — это жопа. В базаре попытались сделать последовательные номера коммитов (как в свн — 1, 2, 3), которые бы сохранялись при клонировании, но они *не сохраняются*. В гите — только хеши ревизий, в хг — хеши и локальные номера, в базаре — только локальные номера. Хеши спрятаны глубоко и никто в компании, кроме меня, как до них добраться, никак не может запомнить. Это вообще дикая жопа выходит. Если ты знаешь номер чейнджсета, ты не можешь пойти к другому человеку и сказать «в чейнджсете ab32f трабла!» Ты должен отправить ему длинный хеш через джаббер, потому что базар не понимает сокращений. Не знаю, как выразить всю свою ненависть. :\

Коммиты других людей постоянно прячутся за мержами. Неприятно в большинстве случаев.

bzr send не умеет слать простые патчи по мылу, только бинарные и кошмарные. Неудобно, блин.

Ну, подсветку и паджинацию можно сделать через пайп, но это те мелочи, которые достают.

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

Могу немного попытаться продолжить на тему плюсов хг и гита, но мне кажется, что этого достаточно, да?
Эх, JSDB на старой версии SpiderMonkey, которая еще в ff 3.5 используется. Новая, с JäegerMonkey, намного быстрее. Правда, не знаю, есть ли билды JSDB с ним, но в любом случае хорошо знать, что теперь всë заметно лучше. :)
А, как-то я с этой стороны не посмотрел. Ну, возможность писать императивно не исключает возможность писать функционально. И это на лиспе всë-таки делать проще, чем на перле, питоне или жаваскрипте.
Хм, не уловил, а как макросы ломают функциональность? Лисп даëт возможность писать программы имеративно с помощью присваивания (setq, etc), а макросы тут не при чëм, или я что-то упускаю?
piranha@gto ~/dev/work/core2> git instaweb
lighttpd not found. Install lighttpd or use --httpd to specify another httpd daemon.


Удобно! ;)
«доставить пачку плагинов в mq» звучит странно, учитывая что mq — сам по себе плагин. :)

Да, меня эта тема тоже немного волнует, и у меня есть некоторые мысли по поводу того, что б сделать, чтобы это улучшить.
hg rollback для начала. А вообще — mq такое может, например так:
hg qimport -r .
hg qrefresh -e
hg qfinish .

1) импортировать как патч mq можно только голову или коммит, у которого дети — уже патчи
2) -e — редактировать сообщение, можно опустить, естественно

Вообще стоит просто почитать hg help mq. Я как-то давно уже хочу написать руководство по mq, но руки никак не доходят. %)

Attic, кстати, это нечто среднее между mq и shelve. С помощью mq тоже можно эмулировать stash.
hg serve и передавай по хттп

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity