Show More
@@ -2990,6 +2990,8 b' def resolve(ui, repo, *pats, **opts):' | |||||
2990 |
|
2990 | |||
2991 | # replace filemerge's .orig file with our resolve file |
|
2991 | # replace filemerge's .orig file with our resolve file | |
2992 | util.rename(a + ".resolve", a + ".orig") |
|
2992 | util.rename(a + ".resolve", a + ".orig") | |
|
2993 | ||||
|
2994 | ms.commit() | |||
2993 | return ret |
|
2995 | return ret | |
2994 |
|
2996 | |||
2995 | def revert(ui, repo, *pats, **opts): |
|
2997 | def revert(ui, repo, *pats, **opts): |
@@ -14,12 +14,14 b' class mergestate(object):' | |||||
14 | '''track 3-way merge state of individual files''' |
|
14 | '''track 3-way merge state of individual files''' | |
15 | def __init__(self, repo): |
|
15 | def __init__(self, repo): | |
16 | self._repo = repo |
|
16 | self._repo = repo | |
|
17 | self._dirty = False | |||
17 | self._read() |
|
18 | self._read() | |
18 | def reset(self, node=None): |
|
19 | def reset(self, node=None): | |
19 | self._state = {} |
|
20 | self._state = {} | |
20 | if node: |
|
21 | if node: | |
21 | self._local = node |
|
22 | self._local = node | |
22 | shutil.rmtree(self._repo.join("merge"), True) |
|
23 | shutil.rmtree(self._repo.join("merge"), True) | |
|
24 | self._dirty = False | |||
23 | def _read(self): |
|
25 | def _read(self): | |
24 | self._state = {} |
|
26 | self._state = {} | |
25 | try: |
|
27 | try: | |
@@ -33,17 +35,20 b' class mergestate(object):' | |||||
33 | except IOError, err: |
|
35 | except IOError, err: | |
34 | if err.errno != errno.ENOENT: |
|
36 | if err.errno != errno.ENOENT: | |
35 | raise |
|
37 | raise | |
36 | def _write(self): |
|
38 | self._dirty = False | |
|
39 | def commit(self): | |||
|
40 | if self._dirty: | |||
37 | f = self._repo.opener("merge/state", "w") |
|
41 | f = self._repo.opener("merge/state", "w") | |
38 | f.write(hex(self._local) + "\n") |
|
42 | f.write(hex(self._local) + "\n") | |
39 | for d, v in self._state.iteritems(): |
|
43 | for d, v in self._state.iteritems(): | |
40 | f.write("\0".join([d] + v) + "\n") |
|
44 | f.write("\0".join([d] + v) + "\n") | |
|
45 | self._dirty = False | |||
41 | def add(self, fcl, fco, fca, fd, flags): |
|
46 | def add(self, fcl, fco, fca, fd, flags): | |
42 | hash = util.sha1(fcl.path()).hexdigest() |
|
47 | hash = util.sha1(fcl.path()).hexdigest() | |
43 | self._repo.opener("merge/" + hash, "w").write(fcl.data()) |
|
48 | self._repo.opener("merge/" + hash, "w").write(fcl.data()) | |
44 | self._state[fd] = ['u', hash, fcl.path(), fca.path(), |
|
49 | self._state[fd] = ['u', hash, fcl.path(), fca.path(), | |
45 | hex(fca.filenode()), fco.path(), flags] |
|
50 | hex(fca.filenode()), fco.path(), flags] | |
46 |
self._ |
|
51 | self._dirty = True | |
47 | def __contains__(self, dfile): |
|
52 | def __contains__(self, dfile): | |
48 | return dfile in self._state |
|
53 | return dfile in self._state | |
49 | def __getitem__(self, dfile): |
|
54 | def __getitem__(self, dfile): | |
@@ -55,7 +60,7 b' class mergestate(object):' | |||||
55 | yield f |
|
60 | yield f | |
56 | def mark(self, dfile, state): |
|
61 | def mark(self, dfile, state): | |
57 | self._state[dfile][0] = state |
|
62 | self._state[dfile][0] = state | |
58 |
self._ |
|
63 | self._dirty = True | |
59 | def resolve(self, dfile, wctx, octx): |
|
64 | def resolve(self, dfile, wctx, octx): | |
60 | if self[dfile] == 'r': |
|
65 | if self[dfile] == 'r': | |
61 | return 0 |
|
66 | return 0 | |
@@ -352,6 +357,7 b' def applyupdates(repo, action, wctx, mct' | |||||
352 | elif m == "e": # exec |
|
357 | elif m == "e": # exec | |
353 | flags = a[2] |
|
358 | flags = a[2] | |
354 | util.set_flags(repo.wjoin(f), 'l' in flags, 'x' in flags) |
|
359 | util.set_flags(repo.wjoin(f), 'l' in flags, 'x' in flags) | |
|
360 | ms.commit() | |||
355 | u.progress(_('updating'), None, total=numupdates, unit='files') |
|
361 | u.progress(_('updating'), None, total=numupdates, unit='files') | |
356 |
|
362 | |||
357 | return updated, merged, removed, unresolved |
|
363 | return updated, merged, removed, unresolved |
General Comments 0
You need to be logged in to leave comments.
Login now