diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py --- a/mercurial/filemerge.py +++ b/mercurial/filemerge.py @@ -439,16 +439,15 @@ merged_text, conflicts = simplemerge.simplemerge( ui, local, base, other, mode=mode ) - # fcd.flags() already has the merged flags (done in - # mergestate.resolve()) - if merged_text is not None: + if merged_text is not None and ( + not conflicts or premerge in validkeep + ): + # fcd.flags() already has the merged flags (done in + # mergestate.resolve()) local.fctx.write(merged_text, local.fctx.flags()) if not conflicts: ui.debug(b" premerge successful\n") return 0 - if premerge not in validkeep: - # restore from backup and try again - _restorebackup(local.fctx, backup) return 1 # continue merging @@ -875,12 +874,6 @@ } -def _restorebackup(fcd, backup): - # TODO: Add a workingfilectx.write(otherfilectx) path so we can use - # util.copy here instead. - fcd.write(backup.data(), fcd.flags()) - - def _makebackup(repo, ui, wctx, fcd): """Makes and returns a filectx-like object for ``fcd``'s backup file.