Mercurial - как подтолкнуть незаконченные ветки? - PullRequest
2 голосов
/ 09 октября 2010

Мы конвертировали все в Mercurial из CVS и пока все хорошо. Однако сегодня мы столкнулись с проблемой:

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

После клонирования нового репозитория Mercurial я создал отдельные ветки для изоляции этих функций.

Это оставило меня с чем-то вроде этого (составленный номер рев.)

hg update default
hg branch feature1
hg commit -m "Description of what I was doing in feature1"
hg update default 
hg branch feature2
hg commit -m "Description of what I was doing feature2" (my tip is now here)
hg update default
hg push -f (to force the creation of my new branches, w/o affecting default, I haven't merged them)

В течение этого времени команда работала и отправлялась в наш центральный репозиторий, поэтому ветка по умолчанию, скажем, rev 40 (tip)

Теперь мой push -f работал нормально, но располагался (подсказка) к моему последнему изменению -> 50: feature3 (подсказка). Я ожидал, что чаевые останутся по умолчанию в центральном репозитории и будут просто иметь свои ветки, чтобы кто-нибудь мог их поднять. График также выглядит довольно забавно, когда я использую hgwebdir, поэтому я почти уверен, что это неправильный подход.

Как бы я это сделал? Должен ли я сначала закрыть ветку? Является ли совет действительно важным или просто метаданными.

Ответы [ 3 ]

4 голосов
/ 09 октября 2010

tip всегда самая последняя ревизия, добавленная в хранилище.От hg help revs:

Зарезервированное имя «tip» - это специальный тег, который всегда идентифицирует самую последнюю редакцию.

До тех пор, пока заголовок ветви по умолчаниюэто то, что вы ожидаете, вы будете в порядке.Не нужно закрывать ветку (но лучше использовать hg push --new-branch, если ваша версия Mercurial достаточно новая, чтобы поддерживать ее).

1 голос
/ 18 октября 2010

Метка tip является чистыми метаданными и всегда указывает на набор изменений с наибольшим номером редакции - логики больше нет.

Однако тот факт, что tip теперь указывает на набор изменений в ветви функций, не вызовет никаких проблем. Когда люди делают клон, они автоматически обновляются до самой совершенной ревизии default ветви . Таким образом, они могут начать работать сразу после клона. Кроме того, люди, у которых уже есть клон, останутся в своей именованной ветви, когда они запустят hg update. Здесь hg update приводит вас к самому лучшему набору изменений в названной ветви, например, на default, если это то место, с которого вы начали.

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

1 голос
/ 09 октября 2010

tip - это просто автоматически применяемая метка, ссылающаяся (я думаю) на самый последний коммит.Не так уж и важно;это просто для удобства.

...