Что такое ветки в BitBucket и как ими управлять

У меня следующая проблема. У меня есть репозиторий, который я изначально клонировал с github с помощью hg-git, но так как я разрабатывал его в mercurial. Оригинальный разработчик также продолжает обновлять репозиторий, поэтому у нас есть несколько голов, и я объединяю все, что хочу, используя TortoiseHg, это работает очень хорошо (я думаю, что hg-git здесь не имеет значения). Однако у меня есть следующая проблема: теперь я отправил свою версию в BitBucket, и у нее есть три ветки.

3 по ​​умолчанию

Я совершенно смущен этим. Разве ветка в git не должна быть закладкой в ​​Hg? Тогда почему BitBucket поддерживает ветки, а не закладки? Я действительно не понимаю, что такое ветвь в Hg и почему у меня их 3, когда на самом деле hg branch перечисляет только одну: default? Или это на самом деле не ветки, а закладки, просто BitBucket назвал их так, чтобы не путать пользователей git? Но это репозиторий Hg (при первоначальном создании он был установлен как Hg), и я не использую git!

Когда я пытаюсь hg heads -q, я получаю тот же результат:

235:03d08bcf3144
233:d7fbd581b9e1
227:abda0dc38b93

Так является ли на самом деле головой то, что BitBucket называет ветвью? Так ли это, как я могу назвать их как ветки в Git, как по умолчанию, разветвленные и т. д.?

Одна идея, которую я имел в виду, заключалась в том, чтобы создать закладку на каждой голове. Я понял, как push -B push -B каждого из них в BitBucket. Теперь это выглядит так:

6 ветка

Итак, теперь это начинает иметь смысл, но что я могу сделать с тремя значениями по умолчанию? Зачем они там и что они собой представляют? Филиалы, головы или закладки в Hg?

А почему у меня в настройках BitBucket только один?

1 в настройках


person hyperknot    schedule 31.12.2012    source источник


Ответы (2)


У вас есть три головы в одной именованной ветке "по умолчанию", и эти три головы являются ветвями - анонимными ветвями.

Если вы хотите исключить эти ветки внутри «по умолчанию», вам нужно просто объединить головки (две головы — собственная строка и вытащенные из восходящего потока: я не знаю без истории, как вы получаете третью) в локальном репозитории перед отправкой в ​​​​BitBucket

person Lazy Badger    schedule 01.01.2013
comment
В-третьих, потому что разработчик использовал два разных репозитория. Моя проблема в том, что я не хочу использовать именованные ветки для ветвления, а просто закладки. Тем временем я исправил это следующим образом: 1. Самое главное, я понял, что моя проблема в том, что Mercurial по умолчанию отправляет все ветки. Я исправил это с помощью push --rev . или defaultpush = revision TortoiseHg. 2. Для исправления фактического репо я закрыл головы с помощью --close-branch, переместил в битбакет и hg strip-ed local 3. Теперь это исправлено одноветвевым нажатием Способ обработки пользовательского интерфейса битбакета по-прежнему очень сбивает с толку. - person hyperknot; 01.01.2013
comment
Дело в том, что это правильные (анонимные) ветки, и их не следует объединять перед отправкой на битбакет. Обработка закладок на битбакете не очень полная (см. мой ответ). - person JonnyJD; 11.10.2013

Вы, наверное, уже читали Руководство по ветвлению в Mercurial. Это хороший обзор различных "видов ртутных ветвей".

Поэтому ветки git обычно переводятся в закладки hg. То есть вы продолжаете использовать один репозиторий hg с одной (не)именованной веткой «по умолчанию». В этой ветке по умолчанию у вас есть одна закладка для каждой «ветки git».

Теперь проблема с битбакетом заключается в том, что его поддержка «hg bookmark» (в настоящее время) не так полна, как поддержка «ветви git».

Итак, на момент написания вашего письма у них вообще не было поддержки закладок, а была только поддержка (анонимных) голов. Большинство закладок также являются заголовками, поэтому вы можете видеть один хеш для каждого заголовка/закладки. Однако некоторые закладки находятся не на голове, но все их коммиты включены в другую закладку/голову. Они были полностью невидимы на битбакете.

На данный момент закладки отображаются (с их именем) в представлении коммитов и могут быть выбраны в раскрывающемся списке. Они не отображаются во вкладке "филиал". Кроме того, вообще невозможно открывать запросы на включение закладок. Однако для закладок, которые являются заголовками, вы можете открыть запрос на вытягивание для этого заголовка.

См. также: проблема с битбакетом: невозможно создать запрос на вытягивание из закладки hg

person JonnyJD    schedule 11.10.2013