comparison mercurial/merge.py @ 11451:51021f4c80b5 stable

resolve: do not crash on empty mergestate I managed to get an empty .hg/merge/state file by interrupting a merge by pressing Control-C. This lead to this error: TypeError: a2b_hex() argument 1 must be string or read-only buffer, not None since localnode is assigned None before the iteration over lines in the mergestate begins.
author Martin Geisler <mg@lazybytes.net>
date Sun, 27 Jun 2010 23:12:05 +0200
parents 6f1d1ed3e19a
children 9b0406b23be0
comparison
equal deleted inserted replaced
11450:6bca9801c92a 11451:51021f4c80b5
21 self._local = node 21 self._local = node
22 shutil.rmtree(self._repo.join("merge"), True) 22 shutil.rmtree(self._repo.join("merge"), True)
23 def _read(self): 23 def _read(self):
24 self._state = {} 24 self._state = {}
25 try: 25 try:
26 localnode = None
27 f = self._repo.opener("merge/state") 26 f = self._repo.opener("merge/state")
28 for i, l in enumerate(f): 27 for i, l in enumerate(f):
29 if i == 0: 28 if i == 0:
30 localnode = l[:-1] 29 self._local = bin(l[:-1])
31 else: 30 else:
32 bits = l[:-1].split("\0") 31 bits = l[:-1].split("\0")
33 self._state[bits[0]] = bits[1:] 32 self._state[bits[0]] = bits[1:]
34 self._local = bin(localnode)
35 except IOError, err: 33 except IOError, err:
36 if err.errno != errno.ENOENT: 34 if err.errno != errno.ENOENT:
37 raise 35 raise
38 def _write(self): 36 def _write(self):
39 f = self._repo.opener("merge/state", "w") 37 f = self._repo.opener("merge/state", "w")