Mercurial > hg
comparison hgext/imerge.py @ 6003:7855b88ba838
filemerge: pull file-merging code into its own module
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sun, 03 Feb 2008 19:29:05 -0600 |
parents | 3786ef8877d5 |
children | f89fd07fc51d |
comparison
equal
deleted
inserted
replaced
6002:abd66eb0889e | 6003:7855b88ba838 |
---|---|
5 imerge - interactive merge | 5 imerge - interactive merge |
6 ''' | 6 ''' |
7 | 7 |
8 from mercurial.i18n import _ | 8 from mercurial.i18n import _ |
9 from mercurial.node import * | 9 from mercurial.node import * |
10 from mercurial import commands, cmdutil, dispatch, fancyopts, hg, merge, util | 10 from mercurial import commands, cmdutil, dispatch, fancyopts |
11 from mercurial import hg, filemerge, util | |
11 import os, tarfile | 12 import os, tarfile |
12 | 13 |
13 class InvalidStateFileException(Exception): pass | 14 class InvalidStateFileException(Exception): pass |
14 | 15 |
15 class ImergeStateFile(object): | 16 class ImergeStateFile(object): |
124 # already has two parents (in normal merge it doesn't yet). But | 125 # already has two parents (in normal merge it doesn't yet). But |
125 # this is very dirty. | 126 # this is very dirty. |
126 self.wctx._parents.pop() | 127 self.wctx._parents.pop() |
127 try: | 128 try: |
128 # TODO: we should probably revert the file if merge fails | 129 # TODO: we should probably revert the file if merge fails |
129 return merge.filemerge(self.repo, fn, fd, fo, self.wctx, p2) | 130 return filemerge.filemerge(self.repo, fn, fd, fo, self.wctx, p2) |
130 finally: | 131 finally: |
131 self.wctx._parents.append(p2) | 132 self.wctx._parents.append(p2) |
132 if realmerge: | 133 if realmerge: |
133 os.environ['HGMERGE'] = realmerge | 134 os.environ['HGMERGE'] = realmerge |
134 elif not interactive: | 135 elif not interactive: |
135 del os.environ['HGMERGE'] | 136 del os.environ['HGMERGE'] |
136 | 137 |
137 def start(self, rev=None): | 138 def start(self, rev=None): |
138 _filemerge = merge.filemerge | 139 _filemerge = filemerge.filemerge |
139 def filemerge(repo, fw, fd, fo, wctx, mctx): | 140 def filemerge_(repo, fw, fd, fo, wctx, mctx): |
140 self.conflicts[fw] = (fd, fo) | 141 self.conflicts[fw] = (fd, fo) |
141 | 142 |
142 merge.filemerge = filemerge | 143 filemerge.filemerge = filemerge_ |
143 commands.merge(self.ui, self.repo, rev=rev) | 144 commands.merge(self.ui, self.repo, rev=rev) |
144 merge.filemerge = _filemerge | 145 filemerge.filemerge = _filemerge |
145 | 146 |
146 self.wctx = self.repo.workingctx() | 147 self.wctx = self.repo.workingctx() |
147 self.save() | 148 self.save() |
148 | 149 |
149 def resume(self): | 150 def resume(self): |