LINUX.ORG.RU

Закладки в Mercurial - как ими пользоваться, ёпт?

 ,


1

5

[tldf закладки неюзабельное говно]

Вот всем меркуриал хорош, в отличие от наркоманского гита - кроме веток. Потому что ветка в гите - это как сейва в игре. Посейвил текущий момент в истории, и в любой момент можешь к нему вернуться, просто и гениально. Меркуриал-овцы любят повторять: «Так у нас есть закладки!!!» Да нифига.

Вот хотим мы с помощью закладок сделать feature branch. Создаём закладку, пишем код, коммитим, радуемся:

$ hg update default                    # переходим в самую последнюю ревизию основной ветки
$ hg bookmark blackjack-and-hookers    # это будет наш feature branch
$ vim src/hookers.c
$ hg ci -Am 'Add hookers'
$ vim src/blackjack.c
$ hg ci -Am 'Add blackjack'            # почти готово, ништяк

И тут нам понадобилось вернуться в основную ветку. Што? Где она? hg update default - ничего не происходит!
$ hg update default
0 files updated, 0 files merged, 0 files removed, 0 files unresolved

Потому что меркуриал всё это вермя тихо складывал наши изменения прямо в основную ветку, и она тихо ехала вслед за нашими коммитами, и теперь указывает туда же, куда и наша feature branch:
$ hg identify --rev default
aab62191150e tip blackjack-and-hookers
$ hg identify --rev blackjack-and-hookers 
aab62191150e tip blackjack-and-hookers

Указатель на реальную «основную ветку», от которой мы отпочковали feature branch, нигде не сохранился. В меркуриале ведь никогда ничего не теряется, в отличие от гита... wait... ОХ БЛ

Потому что закладки в меркуриале - это не бранчи, как в гите. Это непонятно что, прикрученное сбоку синей изолентой. Меркуриалу пофигу, что для нас это feature branch - для него мы по-прежнему в основной ветке. Меркуриал как бы говорит: «Надо тебе - сам следи за своей основной веткой. Создай ручками закладку default и ручками её переставляй. Можешь на бумажке записывать номера ревизий, это даже проще. И не забывай отныне вместо push делать push -B default, а то твой feature branch тихо и незаметно вольётся в основную ветку. Ах, так его не надо было вливать? Тогда ты должен был установить на ревизии из feature branch фазу secret - у нас же не гит-наркомания, у нас же всё просто! Ах, тебе всё-таки надо куда-то пушить feature branch, но не в основной репозиторий? А мне тогда пофиг, лол. Тебе надо ты и пердолься, как хочешь.»

Вопрос к меркуриал-овцам: вы реально этими закладками пользуетесь для feature бранчей? Или их в меркуриале сделали только для отмазы, чтобы гит-фанбоям отвечать «у нас тоже есть»? Сколько ещё лет потребуется, чтобы довести закладки до юзабельного вида? Шёл 2015 год. Доля hg-юзеров неуклонно снижалась. Медленно приближался конец поддержки Python2... Это отчаяние?

Но зачем кушать кактусик? Алсо, разве в hg нету аналога stash-заначек? Не верю.

EXL ★★★★★ ()
Ответ на: комментарий от EXL

Алсо, разве в hg нету аналога stash-заначек?

stash содрали с hg'шного mq, который там был с самого начала и появился за годы до stash'а

Reset ★★★★★ ()
Ответ на: комментарий от HeipaVai1o

При чём тут stash, если мы о ветках?

Но зачем тебе короткоживущие ветки, если у тебя есть mq?

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Так, наверно, не настолько короткоживущие.

Stash - это совсем временно, а ветка, даже локальная - все равно ветка.

chkalov ()
Ответ на: комментарий от tailgunner

Юзать mq для более, чем двух с половиной патчей? Ты мне напоминаешь одну бухгалтершу, которая важные файлы в корзине хранила. Накосячил с qrefresh или qdelete - изменения потерял. Даже hg rebase бекап сохраняет, а тут просто чёрная дыра.

«Mercurial делает всё, чтобы не потерять историю, в отличие от Git, где каждый может выстрелить себе в ногу... wait...»

HeipaVai1o ()

вы реально этими закладками пользуетесь

нет

для feature бранчей?

тем более нет

Или их в меркуриале сделали только для отмазы

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

для feature-branches юзаю hg branch -f / hg push -f.

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

В меркуриале ведь никогда ничего не теряется, в отличие от гита... wait... ОХ БЛ

:D

waker ★★★★★ ()
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от chkalov

Так, наверно, не настолько короткоживущие.

Не насколько?

Stash - это совсем временно

Почему ты говоришь о stash, если я указал именно mq?

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Но зачем тебе короткоживущие ветки, если у тебя есть mq?

«Закладки - прикрученная сбоку изолентой фигня, поэтому юзай другую прикрученную изолентой фигню.»

anonymous ()

Ну не стукай братишка, ну все ж мы люди.

hg bookmarks -i blackjack-and-hookers

d_a ★★★★★ ()
Ответ на: комментарий от HeipaVai1o

Юзать mq для более, чем двух с половиной патчей?

Да.

Ты мне напоминаешь одну бухгалтершу, которая важные файлы в корзине хранила

Мощно задвинул, внушаить. Менее мощные аргументы будут?

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

Ты так и не рассказал, какие данные ты потерял %)

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Потому что я гитом пользуюсь, я так понял, stash - это аналог mq?

Не настолько временные - по крайней мере, stash - это какие-то незавершенные изменения, фича не обязательно поместится в один коммит,а в локальную ветку ты можешь коммитить как обычно.

chkalov ()
Ответ на: комментарий от anonymous

«Закладки - прикрученная сбоку изолентой фигня, поэтому юзай другую прикрученную изолентой фигню.»

Еще один гитоюзер.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Да ты же меня затралел!

Но закладки-то от этого быть говном не перестали. И человеческих веток в меркуриале не появилось.

HeipaVai1o ()
Ответ на: комментарий от HeipaVai1o

Да ты же меня затралел!

Ты первый начал же.

Но закладки-то от этого быть говном не перестали

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

И человеческих веток в меркуриале не появилось.

Короткоживущая (дни) личная ветка - mq, долгоживущая общая - named branch, короткоживущая общая - отдельный репозиторий и evolve.

tailgunner ★★★★★ ()

Вот всем меркуриал хорош, в отличие от наркоманского гита - кроме веток. Потому что ветка в гите - это как сейва в игре. Посейвил текущий момент в истории, и в любой момент можешь к нему вернуться, просто и гениально. Меркуриал-овцы любят повторять: «Так у нас есть закладки!!!» Да нифига.

На лоре теперь появился царь гита?

nezamudich ★★ ()
Ответ на: комментарий от waker

кончилась фантазия новые имена бренчей придумывать

Если у тебя есть система управления проектом, там у фич есть номер таска. Вот его и можно ставить в имя.

vurdalak ★★★★★ ()
Последнее исправление: vurdalak (всего исправлений: 1)
Ответ на: комментарий от vurdalak

Если у тебя есть система управления проектом, там у фич есть номер таска. Вот его и можно ставить в имя.

мой работодатель не практикует использование подобных систем.

waker ★★★★★ ()
Ответ на: комментарий от vurdalak

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

waker ★★★★★ ()
Ответ на: комментарий от waker

Если вписываешь номерок, то тебе вообще не надо по меркуриалу искать — ты ищешь там где описано связанное с этим номерком.

vurdalak ★★★★★ ()
Ответ на: комментарий от vurdalak

давай не будем придумывать, что мне надо, и что мне не надо. с этим я могу самостоятельно определиться.

waker ★★★★★ ()
Ответ на: комментарий от waker

Упоролся? Я тебе говорю как это обычно делается, а надо оно тебе или нет мне как-то пофиг.

vurdalak ★★★★★ ()
Ответ на: комментарий от waker

Пруфы — это видеозапись с места работы? Я же не про опенсорс говорю.

vurdalak ★★★★★ ()

Закладка перемещается на новые коммиты (на потомка коммита, на котором она стоит, как только он появляется), пока ты её не деактивируешь.

hg bookmark --inactive blackjack-and-hookers

Но это всё для недобитых гитоюзеров придумали. Юзай ветки.

proud_anon ★★★★★ ()
Ответ на: комментарий от vurdalak

кого волнует что там у тебя на работе? ты же сам сказал что так делается обычно, значит такое должен делать как минимум кто-то еще, должны быть книги, какие-то whitepapers, может быть рекомендации, документация, и это вообще должно быть общеизвестно. однако это не так.

waker ★★★★★ ()
Ответ на: комментарий от proud_anon

Но это всё для недобитых гитоюзеров придумали.

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

Юзай ветки.

this.

waker ★★★★★ ()
Ответ на: комментарий от waker

должны быть книги, какие-то whitepapers

Книги о том как создавать таск? Может ещё книги по нажиманию кнопки «ок» должны быть? Для таких банальных вещей не бывает никаких мануалов, разупорись.

И да, я про свою работу ничего не говорил — я о проприетарщине в целом в очень разных местах.

vurdalak ★★★★★ ()
Ответ на: комментарий от vurdalak

ну да, просто ты это ляпнул не подумав. мог бы и не оправдываться.

waker ★★★★★ ()
Ответ на: комментарий от waker

Просто продолжай не уметь в ветки. Это нормально.

vurdalak ★★★★★ ()
Ответ на: комментарий от waker

Общеизвестно, что если ты номер задачи из трекера используешь в тексте коммита или в названии ветки, то трекер сможет автоматизировать часть работы, например создать review отобразив в нем все нужные изменения, привязать к задаче результаты сборки в CI и прочее. А дальше просто не разрешать закрывать задачу пока падают тесты и не закончен review.

maloi ★★★★★ ()
Ответ на: комментарий от maloi

в тексте коммитов используем номер бага, если таковой существует. в названии веток писать номера багов у нас не принято.

waker ★★★★★ ()

Ну так используй бранчи, а не закладки, в чем проблема то?

cherry-pick ()
Ответ на: комментарий от vurdalak

Да даже в опенсурсе (в нормальном, по крайней мере, а не в поделках уровня Столлмана) все это есть - и пуллреквесты, и feature branches, и имена бранчей, привязанные к номерам тикетов (из примеров - jenkins).

cherry-pick ()
Ответ на: комментарий от cherry-pick

Пруфы - это любой вменяемый работодатель.

Глупости. Многие «вменяемые» работодатели всё ещё никак с subversion слезть не могут (трудно безболезненно уйти от CI на файловой помойке), потому в основном гадят в trunk без всяких веток (в их понимании CI именно так и работает). Использование номеров тикетов в названиях бранчей имеет значительно меньшее распространение, даже в местах где бранчи используют.

mashina ★★★★★ ()
Ответ на: комментарий от mashina

Глупости. Многие «вменяемые» работодатели всё ещё никак с subversion слезть не могут

Значит эти работодатели невменяемые, и от них надо бежать, как я в свое время сделал, и не пожалел. Рынок IT еще пока, слава идиотам, свободный, и вменяемого работодателя всегда можно найти, надо только быть готовым в другой город, если что, переехать.

cherry-pick ()
Ответ на: комментарий от cherry-pick

Значит эти работодатели невменяемые, и от них надо бежать, как я в свое время сделал...

Это как раз те самые работодатели к которым можно убежать после нескольких таких итераций.

mashina ★★★★★ ()

Если ты проникся feature-бранчами, то почему тогда не использовать git?

annulen ★★★★★ ()
Ответ на: комментарий от annulen

Если ты проникся feature-бранчами, то почему тогда не использовать git?

Потому что git для этого не нужен // К.О.

tailgunner ★★★★★ ()
Ответ на: комментарий от waker

в тексте коммитов используем номер бага

Вы наверное и статус тикета вручную апдейтите.

fmdw ()
Ответ на: комментарий от annulen

Долго сидел на bzr, и никаких проблем с feature-ветками вообще не было.

В базаре одна ветка - один каталог. Запутаться невозможно, испортить невозможно. Можно для всех веток юзать общий репозиторий (в родительском каталоге). Надо смёржить ветку - cd trunk && bzr merge ../feature. Надо удалить ветку - просто удаляем каталог. В чём-то даже удобнее гитовской кульхакерщины.

HeipaVai1o ()
Ответ на: комментарий от fmdw

Вы наверное и статус тикета вручную апдейтите.

мы еще и не такое можем.

waker ★★★★★ ()
Ответ на: комментарий от HeipaVai1o

В базаре одна ветка - один каталог.

оно работает, когда веток 2-3 штуки, и проект не очень большой. когда веток несколько тыщь, а на винт влазит, скажем, 3 штуки.. сам понимаешь что будет.

вот прямо щас сделал

$ hg branches | wc -l
    1337
$ hg branches -c | wc -l
    2910

это притом, что админы hg регулярно чистят базу, фиг знает по какому принципу.

waker ★★★★★ ()
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от Reset

stash содрали с hg'шного mq, который там был с самого начала и появился за годы до stash'а

В меркуриале ещё полки есть (shelve), странно, что их тут ещё не упоминали.

gogi ()
Ответ на: комментарий от waker

Зачем весь мусор сливать в общий репозиторий? Слил свою личную feature-branch в master и сам удалил ветвь. Тогда в общем репозитории будет только master и ветки стабильных релизов.

Reset ★★★★★ ()

Хотите одновременно пользоваться закладками и бранчами, и не понимаете, почему работает не так, как вам хочется? Аналогом гитового бранча master в меркуриале является закладка @, а не бранч default.

Правда, в букмарках реально есть одна очень неудобная особенность, для меня лично сводящая на нет все плюсы закладок: выполнение hg update автоматически сдвигает текущую закладку до головы бранча, и хрен поймешь потом, где закладка была до выполнения этой команды. Разработчики mercurial знают об этом и вроде бы решили это исправить, но что-то никак не исправят (забыли, наверное, надо им напомнить).

Sorcerer ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.