2017-01-26 6 views
1

Так что мой коллега только выиграл хэш-лотерею. Мы создаем ветвь функций для каждого разрешенного нами билета по соглашению b#####, где ##### - номер проблемы.Как обновить ветку по имени при столкновении хэшей?

Беда в том, что, когда он попробовал обновить эту ветвь (до ее существования) через hg up branch(b29477), он взял его в default вместо того, чтобы сказать, что ветка не существует.

Оказывается, что branch(b29477) фактически возвращает название ветки вещи внутри паренов (вместо того, чтобы вынуждать Mercurial оценивать предмет внутри parens как название ветки, как я думал!), И так получилось changeet, начинающийся с b29477, который был по умолчанию, поэтому вместо того, чтобы говорить, что ветка не существует, он взял его до конца по умолчанию!

Теперь мы можем обойти эту проблему, выбрав другое название ветки, но я хочу знать, есть ли какой-либо способ для hg update <branch_name_and_dont_interpret_this_as_anything_else>?


КСТАТИ hg logтакже лежит о том, что это --branch параметр делает. В нем говорится:

-b --branch BRANCH [+] show changesets within the given named branch 

Но это не так. Идите вперед и запустите его с помощью хэша. например,

hg log --branch eea844fb 

И это принесет результаты. Если вы копаться в документации, вы обнаружите, что это на самом деле так же, как:

hg log -r 'branch(eea844fb)' 

ответ

1

Попробуйте это:

hg update -r "branch('literal:b29477')" 

С Mercurial страницы справки:

ветви (строка или набор)

Все изменения, принадлежащие данной ветке, или ветви данных наборов изменений.

Если строка начинается с re :, остальная часть имени рассматривается как регулярное выражение . Для соответствия ветке, которая начинается с re :, , используйте префикс literal :.

Это означает, что если вы используете буквального префикс , вы определяете строку. И строка не является набор.

Как говорится в тексте, если вы указываете набор изменений, Mercurial покажет:

ветви данных ревизиями

+0

Но может «строка» будет тег или закладку? – mpen

+0

Сомневаюсь, что вы найдете проблемы с закладками и тегами.Используя что-то вроде этого: «hg update -r» bookmark (mpenBkMrk) »и« hg update -r »tag (mpenTag)« 'достаточно. –

+1

Чтобы быть ясным, ответ НЕТ. Команда 'hg update -r" branch() "' не принимает теги и закладки, принимаются только ветви и наборы. –