В старые добрые времена Subversion я иногда получал новый файл из существующего, используя svn copy
. Затем, если что-то изменилось в общих для них разделах, я все равно мог бы использовать svn merge
для обновления производной версии.
Чтобы использовать пример из hginit.com , скажем, рецепт "гуак" уже существует, и я хочу создать "супергуак", который содержит инструкции о том, как подавать гуакамоле 1000 любителям футбола. Используя процесс, который я только что описал, я мог бы:
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
и, таким образом, исправление опечатки будет применено к супергуаку.
Mercurial предоставляет команду 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. Это возможно? Если так, то какая команда? Есть ли другой рабочий процесс в Mercurial, который достигает тех же результатов (ограничен одной веткой)?