Mercurial — обновление hg до определенной даты в именованной ветке

#date #mercurial #branch

#Дата #mercurial #ветка

Вопрос:

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

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

В именованной ветке, скажем, V0.X, в теге V0.1

 hg identify
 

дает

 934ad264137e (V0.X) V0.1
 

Затем обновите до определенной даты (я все еще хочу остаться в ветке V0.X)

 hg update -d "<10/28/11"
 

теперь определите

 hg identify; hg branch
 

дает

 51a072771de7 tip
default    
 

Кто-нибудь знает, как обновить именованную ветку до даты без опасности перехода на другую ветку?

Любая помощь будет оценена.

Джон.

Комментарии:

1. Хороший вопрос, но в документации hg help update сказано: -d --date DATE tipmost revision matching date . Не уверен, что это значит, хотя … 🙁

Ответ №1:

 hg help revset
 
 "branch(string or set)"
  All changesets belonging to the given branch or the branches of the
  given changesets.
 

«дата (интервал)» Наборы изменений в пределах интервала см. в разделе «Даты справки hg».

дайте нам рабочий процесс, подобный

  • hg log -r «ветка (‘V0.X’) и сортировка (дата(‘<28.10.11’), дата)»
  • найдите ревизию N в списке
  • обновление hg -r N

Комментарии:

1. ну, pp 1-2 можно преобразовать в некоторый oneliner, который, используемый в качестве параметра -r обновления, дает нам запрошенный результат

2. Да, я считаю, что следующая однострочная строка выполняет то, что было запрошено: hg update -r «ветка (‘V0.X’) и дата (‘<28.10.11’)»