В добрые старые времена Подверсии я иногда получал бы новый файл из существующего использования 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. Это возможно? Если так, какова правильная команда? Существует ли другой рабочий процесс в Подвижном, который достигает тех же результатов (ограниченный единственным ответвлением)?
Вы можете сделать это с помощью
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 -<-/
Не существует чисто ртутного способа перехода между файлами с вашими патчами, но если в вашей системе установлен патч
, вы можете добиться того же, следуя своей серии ртутных команд:
hg log -p -r tip -I quac | patch superquac
По сути, это означает: «возьмите разницу ( -p
), которая была применена к файлу quac ( -I quac
) в самом последнем наборе изменений ( -r tip
) отправить его на стандартный вывод ( hg log
) и использовать его в качестве входных данных для команды patch ( | patch
), действующей на файл ] superquac ( superquac
).