diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -23,15 +23,13 @@ class mergestate(object): def _read(self): self._state = {} try: - localnode = None f = self._repo.opener("merge/state") for i, l in enumerate(f): if i == 0: - localnode = l[:-1] + self._local = bin(l[:-1]) else: bits = l[:-1].split("\0") self._state[bits[0]] = bits[1:] - self._local = bin(localnode) except IOError, err: if err.errno != errno.ENOENT: raise diff --git a/tests/test-resolve b/tests/test-resolve --- a/tests/test-resolve +++ b/tests/test-resolve @@ -25,3 +25,9 @@ hg commit -m 'resolved' echo % resolve -l, should be empty hg resolve -l + +# test crashed merge with empty mergestate +mkdir .hg/merge +touch .hg/merge/state +echo % resolve -l, should be empty +hg resolve -l diff --git a/tests/test-resolve.out b/tests/test-resolve.out --- a/tests/test-resolve.out +++ b/tests/test-resolve.out @@ -6,3 +6,4 @@ created new head 0 files updated, 0 files merged, 0 files removed, 1 files unresolved use 'hg resolve' to retry unresolved file merges or 'hg update -C' to abandon % resolve -l, should be empty +% resolve -l, should be empty