LINUX.ORG.RU

Named branches и bookmarks, в чем разница

 


0

3

В hg есть несколько способов делать ветки. Первый hg clone, с ним вопросов не возникает. А вот named branches и bookmarks вызывают такие вопросы:

  • в чем их главные идеологические отличия? Как по мне то, что они дают пользователю примерно одинаково: работа над проектом ведется в одном каталоге; переключение осуществляется одинаково hg update my_bookmark; слияние с другой веткой тоже hg merge other_branch.
  • отличий я увидел два: что named branch хранит метаинформацию и tip ветви default не совпадает с «головой» (head) этой же ветви. Не понятно, что это дает и чем грозит.
  • В каких случаях лучше использовать named branches и bookmarks
★★★★

Последнее исправление: cab (всего исправлений: 1)

Branch - постоянное, bookmark - временное. Где-то так.
Branch используется, если надо пометить что-то вроде параллельной версии. Bookmark - в процессе разработки какой-то фичи.

JackyTreehorn
()

Bookmarks - это то, что используют нормальные люди, которых по какой-то причине заставили пользоваться hg. Named branches - это то, что используют все остальные.

anonymous
()

Systems like Mercurial, CVS, and SVN store their NamedBranch information as a permanent part of each commit. This is useful for future auditing of long-lived branches as it's always possible to identify which branch a commit was introduced on.

tailgunner ★★★★★
()

С bookmarks в hg не работал, т.к. всегда воспринимал их лишь как метку последней ревизии. По мне, так удобнее видеть явную принадлежность любой ревизии к ветке, а не только последней.

orm-i-auga ★★★★★
()
Ответ на: комментарий от anonymous

Bookmarks - это то, что используют нормальные люди

Ты ещё скажи, что нормальные люди не используют систему контроля версий.

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

Насколько я понял, и в случае bookmark, и в случае named branch команды hg update my_bookmark и hg update my_branch обновят файлы рабочей директории до tip changeset’а. При этом bookmark саму ветку пометят как рабочую (т.е. default меняется вместе с hg update my_bookmark)

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

Вы не так поняли комментарий, на который ответили.

Вообще, о метке tip можете забыть, она не имеет практического смысла.

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

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

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

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

если в двух ветках у меня одинаковые номера ревизий, как я определю какой ветке принадлежит ревизия. Что скажете о этом комментарии Named branches и bookmarks, в чем разница (комментарий) ?

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

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

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

как я определю какой ветке принадлежит ревизия

Командой hg log -r <ревизия>.

Что скажете о этом комментарии

Я уже сказал, что о tip можете забыть, практической пользы от него нет. hg update my_bookmark и hg update my_branch необязательно обновят репозиторий до tip (с чего бы это? см hg help tip). Но это ничего не значит.

Sorcerer ★★★★★
()
Ответ на: комментарий от orm-i-auga

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

JackyTreehorn
()

Следил за темой, решил что букмарки - фигня, буду пользоваться старыми добрыми бранчами :)

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от JackyTreehorn

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

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

Для багфикс-версий, например. Для любых фич, которые пилятся коллективно.

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

У меня железные трусы с замком - называются периодический просмотр коммитов коллег ;)

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