В Подвижном я могу применить изменения от одного файла до другого файла в том же ответвлении?

В добрые старые времена Подверсии я иногда получал бы новый файл из существующего использования svn copy. Затем, если что-то изменилось в разделах, они имели общего, я мог бы все еще использовать svn merge обновить полученную версию.

Для использования примера из hginit.com скажите, что "guac" рецепт уже существует, и я хочу создать "superguac", который включает инструкции относительно того, как подать гуакамоле 1 000 бредящих вентиляторов футбола. Используя процесс я просто описал, я мог:

svn cp guac superguac
svn ci -m "Created superguac by copying guac"
(edit superguac)
svn ci -m "Added instructions for serving 1000 raving soccer fans to superguac"
(edit guac)
svn ci -m "Fixed a typo in guac"
svn merge -r3:4 guac superguac

и таким образом к фиксации опечатки относились бы superguac.

Подвижный обеспечивает hg copy управляйте, чтобы отметил файл как копию оригинала, но я не уверен, что структура репозитория поддерживает подобный рабочий процесс. Вот тот же пример, и я тщательно только редактирую единственный файл в фиксации, которую я хочу использовать в слиянии:

hg cp guac superguac
hg ci -m "Created superguac by copying guac"
(edit superguac)
hg ci -m "Added instructions for serving 1000 raving soccer fans to superguac"
(edit guac)
hg ci -m "Fixed a typo in guac"

Я теперь хочу применить изменение в guac к superguac. Это возможно? Если так, какова правильная команда? Существует ли другой рабочий процесс в Подвижном, который достигает тех же результатов (ограниченный единственным ответвлением)?

7
задан Stephen 23 April 2010 в 18:58
поделиться

2 ответа

Вы можете сделать это с помощью

hg cp guac superguac
hg ci -m "Created superguac by copying guac" # CS1
(edit superguac)
hg ci -m "Added instructions for serving 1000 raving soccer fans to superguac" # CS2
hg up -r revision-before-copy
(edit guac)
hg ci -m "Fixed a typo in guac" #CS3
hg merge # this will transfer the typo-fix both to guac and superguac
hg ci -m "merged typo-fix from guac" # CS4

. После этого репозиторий будет выглядеть так

CS1 <--- CS2 <--------- CS4
  \                     /
   \--<-------- CS3 -<-/
6
ответ дан 6 December 2019 в 14:02
поделиться

Не существует чисто ртутного способа перехода между файлами с вашими патчами, но если в вашей системе установлен патч , вы можете добиться того же, следуя своей серии ртутных команд:

hg log -p -r tip -I quac | patch superquac

По сути, это означает: «возьмите разницу ( -p ), которая была применена к файлу quac ( -I quac ) в самом последнем наборе изменений ( -r tip ) отправить его на стандартный вывод ( hg log ) и использовать его в качестве входных данных для команды patch ( | patch ), действующей на файл ] superquac ( superquac ).

9
ответ дан 6 December 2019 в 14:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: