30 if i == 0: |
30 if i == 0: |
31 self._local = bin(l[:-1]) |
31 self._local = bin(l[:-1]) |
32 else: |
32 else: |
33 bits = l[:-1].split("\0") |
33 bits = l[:-1].split("\0") |
34 self._state[bits[0]] = bits[1:] |
34 self._state[bits[0]] = bits[1:] |
|
35 f.close() |
35 except IOError, err: |
36 except IOError, err: |
36 if err.errno != errno.ENOENT: |
37 if err.errno != errno.ENOENT: |
37 raise |
38 raise |
38 self._dirty = False |
39 self._dirty = False |
39 def commit(self): |
40 def commit(self): |
40 if self._dirty: |
41 if self._dirty: |
41 f = self._repo.opener("merge/state", "w") |
42 f = self._repo.opener("merge/state", "w") |
42 f.write(hex(self._local) + "\n") |
43 f.write(hex(self._local) + "\n") |
43 for d, v in self._state.iteritems(): |
44 for d, v in self._state.iteritems(): |
44 f.write("\0".join([d] + v) + "\n") |
45 f.write("\0".join([d] + v) + "\n") |
|
46 f.close() |
45 self._dirty = False |
47 self._dirty = False |
46 def add(self, fcl, fco, fca, fd, flags): |
48 def add(self, fcl, fco, fca, fd, flags): |
47 hash = util.sha1(fcl.path()).hexdigest() |
49 hash = util.sha1(fcl.path()).hexdigest() |
48 self._repo.opener("merge/" + hash, "w").write(fcl.data()) |
50 self._repo.opener("merge/" + hash, "w").write(fcl.data()) |
49 self._state[fd] = ['u', hash, fcl.path(), fca.path(), |
51 self._state[fd] = ['u', hash, fcl.path(), fca.path(), |
65 if self[dfile] == 'r': |
67 if self[dfile] == 'r': |
66 return 0 |
68 return 0 |
67 state, hash, lfile, afile, anode, ofile, flags = self._state[dfile] |
69 state, hash, lfile, afile, anode, ofile, flags = self._state[dfile] |
68 f = self._repo.opener("merge/" + hash) |
70 f = self._repo.opener("merge/" + hash) |
69 self._repo.wwrite(dfile, f.read(), flags) |
71 self._repo.wwrite(dfile, f.read(), flags) |
|
72 f.close() |
70 fcd = wctx[dfile] |
73 fcd = wctx[dfile] |
71 fco = octx[ofile] |
74 fco = octx[ofile] |
72 fca = self._repo.filectx(afile, fileid=anode) |
75 fca = self._repo.filectx(afile, fileid=anode) |
73 r = filemerge.filemerge(self._repo, self._local, lfile, fcd, fco, fca) |
76 r = filemerge.filemerge(self._repo, self._local, lfile, fcd, fco, fca) |
74 if not r: |
77 if not r: |