Как я понимаю, одно из главных преимуществ распределенной системы контроля версий, такой как Mercurial, заключается в том, что вам не нужно беспокоиться о том, чтобы что-то сломать в своем супер-важном основном репо (которое используется довольно многими другими разработчиками), и делать все, что вы работа и исследования в вашем личном удаленном клоне, пока вы не поймете, что все стабильно, и вы можете отодвинуть свою работу назад.
И, следовательно, у меня возник вопрос: можно ли отодвинуть не всю историю изменений (с несколькими изменениями, которые вы сделали для себя), а только ту, которая фактически отличается между вашим репо и текущим состоянием мастера.
Один пример:
hg init master-repo; cd master-repo
echo -e 'Important file\nWith Bug!' > file
hg commit -A -m "initial commit"
cd ..; hg clone master-repo hotfix-repo; cd hotfix-repo
echo "fix1" >> file
hg commit -m "first attempt to fix bug"
echo "fix2" >> file
hg commit -m 'Fixed it!'
Теперь (возможно, после извлечения и слияния с последними изменениями master-repo) я хочу отодвинуть только один набор изменений, содержащий все изменения, которые я сделал без моей локальной истории изменений.
Одно из возможных решений - создать еще один клон, а затем использовать diff / patch между двумя клонами, чтобы извлечь / применить изменения из первого и зафиксировать их все сразу во втором репо. Затем сделайте толчок, как в обычном случае. Но возможно ли так, используя только ртутные команды?
Спасибо вперед!