comparison mercurial/commands.py @ 26959:ed5f20f9c22e stable

resolve: restore .orig only after merge is fully complete (issue4952) Previously, we'd restore the .orig file after the premerge is complete but before the merge was complete. This would lead to the .orig file potentially containing merge conflict markers in it, as a leftover from the last merge attempt.
author Siddharth Agarwal <sid0@fb.com>
date Fri, 13 Nov 2015 15:56:02 -0800
parents 39dbf495880b
children f4fec0940278 59d5f619e69e
comparison
equal deleted inserted replaced
26945:8a256cee72c8 26959:ed5f20f9c22e
5668 ret = 1 5668 ret = 1
5669 finally: 5669 finally:
5670 ui.setconfig('ui', 'forcemerge', '', 'resolve') 5670 ui.setconfig('ui', 'forcemerge', '', 'resolve')
5671 ms.commit() 5671 ms.commit()
5672 5672
5673 # replace filemerge's .orig file with our resolve file 5673 # replace filemerge's .orig file with our resolve file, but only
5674 # for files in tocomplete, ms.resolve will not overwrite 5674 # for merges that are complete
5675 # .orig -- only preresolve does 5675 if complete:
5676 util.rename(a + ".resolve", a + ".orig") 5676 util.rename(a + ".resolve", a + ".orig")
5677 5677
5678 for f in tocomplete: 5678 for f in tocomplete:
5679 try: 5679 try:
5680 # resolve file 5680 # resolve file
5681 ui.setconfig('ui', 'forcemerge', opts.get('tool', ''), 5681 ui.setconfig('ui', 'forcemerge', opts.get('tool', ''),
5684 if r: 5684 if r:
5685 ret = 1 5685 ret = 1
5686 finally: 5686 finally:
5687 ui.setconfig('ui', 'forcemerge', '', 'resolve') 5687 ui.setconfig('ui', 'forcemerge', '', 'resolve')
5688 ms.commit() 5688 ms.commit()
5689
5690 # replace filemerge's .orig file with our resolve file
5691 a = repo.wjoin(f)
5692 util.rename(a + ".resolve", a + ".orig")
5689 5693
5690 ms.commit() 5694 ms.commit()
5691 5695
5692 if not didwork and pats: 5696 if not didwork and pats:
5693 ui.warn(_("arguments do not match paths that need resolving\n")) 5697 ui.warn(_("arguments do not match paths that need resolving\n"))