@@ -10,6 +10,7 @@
import ancestor, mdiff, error, util, scmutil, subrepo, patch, encoding, phases
import copies
import match as matchmod
+import merge as mergemod
import os, errno, stat
import obsolete as obsmod
import repoview
@@ -816,10 +817,16 @@
self._unknown = changes[4]
self._ignored = changes[5]
self._clean = changes[6]
+
+ self._ms = mergemod.mergestate(self._repo)
+ self._unresolved = [f for f in changes[0]
+ if f in self._ms and self._ms[f] == 'u']
else:
self._unknown = None
self._ignored = None
self._clean = None
+ self._ms = None
+ self._unresolved = None
self._extra = {}
if extra:
@@ -952,6 +959,11 @@
if clean:
self._clean = stat[6]
self._status = stat[:4]
+
+ self._ms = mergemod.mergestate(self._repo)
+ self._unresolved = [f for f in stat[0]
+ if f in self._ms and self._ms[f] == 'u']
+
return stat
def manifest(self):
@@ -982,6 +994,9 @@
def clean(self):
assert self._clean is not None # must call status first
return self._clean
+ def unresolved(self):
+ assert self._unresolved is not None # must call status first
+ return self._unresolved
def branch(self):
return encoding.tolocal(self._extra['branch'])
def closesbranch(self):
@@ -1153,6 +1168,7 @@
for f in self.removed():
self._repo.dirstate.drop(f)
self._repo.dirstate.setparents(node)
+ self._ms.reset()
def dirs(self):
return set(self._repo.dirstate.dirs())
@@ -11,7 +11,6 @@
import lock, transaction, store, encoding, base85
import scmutil, util, extensions, hook, error, revset
import match as matchmod
-import merge as mergemod
import tags as tagsmod
from lock import release
import weakref, errno, os, time, inspect
@@ -1240,11 +1239,9 @@
if merge and cctx.deleted():
raise util.Abort(_("cannot commit merge with missing files"))
- ms = mergemod.mergestate(self)
- for f in changes[0]:
- if f in ms and ms[f] == 'u':
- raise util.Abort(_("unresolved merge conflicts "
- "(see hg help resolve)"))
+ if cctx.unresolved():
+ raise util.Abort(_("unresolved merge conflicts "
+ "(see hg help resolve)"))
if editor:
cctx._text = editor(self, cctx, subs)
@@ -1280,7 +1277,6 @@
# update bookmarks, dirstate and mergestate
bookmarks.update(self, [p1, p2], ret)
cctx.markcommitted(ret)
- ms.reset()
finally:
wlock.release()