Mercurial > hg
comparison mercurial/patch.py @ 2919:b70740aefa4d
Unify mq and hg patch invocation.
This makes patch a little less verbose by default, so the tests
had to be updated.
author | Brendan Cully <brendan@kublai.com> |
---|---|
date | Tue, 15 Aug 2006 11:28:50 -0700 |
parents | 8b02af865990 |
children | ef8ee4477019 addb58e3b41c |
comparison
equal
deleted
inserted
replaced
2918:68cea0b8f992 | 2919:b70740aefa4d |
---|---|
213 raise | 213 raise |
214 | 214 |
215 tmpfp.close() | 215 tmpfp.close() |
216 return patchname | 216 return patchname |
217 | 217 |
218 def patch(strip, patchname, ui, cwd=None): | 218 def patch(patchname, ui, strip=1, cwd=None): |
219 """apply the patch <patchname> to the working directory. | 219 """apply the patch <patchname> to the working directory. |
220 a list of patched files is returned""" | 220 a list of patched files is returned""" |
221 | 221 |
222 (dopatch, gitpatches) = readgitpatch(patchname) | 222 (dopatch, gitpatches) = readgitpatch(patchname) |
223 | 223 |
224 files = {} | 224 files = {} |
225 fuzz = False | |
225 if dopatch: | 226 if dopatch: |
226 if dopatch == 'filter': | 227 if dopatch == 'filter': |
227 patchname = dogitpatch(patchname, gitpatches) | 228 patchname = dogitpatch(patchname, gitpatches) |
228 patcher = util.find_in_path('gpatch', os.environ.get('PATH', ''), 'patch') | 229 patcher = util.find_in_path('gpatch', os.environ.get('PATH', ''), 'patch') |
229 args = [] | 230 args = [] |
235 if dopatch == 'filter': | 236 if dopatch == 'filter': |
236 False and os.unlink(patchname) | 237 False and os.unlink(patchname) |
237 | 238 |
238 for line in fp: | 239 for line in fp: |
239 line = line.rstrip() | 240 line = line.rstrip() |
240 ui.status("%s\n" % line) | 241 ui.note(line + '\n') |
241 if line.startswith('patching file '): | 242 if line.startswith('patching file '): |
242 pf = util.parse_patch_output(line) | 243 pf = util.parse_patch_output(line) |
244 printed_file = False | |
243 files.setdefault(pf, (None, None)) | 245 files.setdefault(pf, (None, None)) |
246 elif line.find('with fuzz') >= 0: | |
247 fuzz = True | |
248 if not printed_file: | |
249 ui.warn(pf + '\n') | |
250 printed_file = True | |
251 ui.warn(line + '\n') | |
252 elif line.find('saving rejects to file') >= 0: | |
253 ui.warn(line + '\n') | |
254 elif line.find('FAILED') >= 0: | |
255 if not printed_file: | |
256 ui.warn(pf + '\n') | |
257 printed_file = True | |
258 ui.warn(line + '\n') | |
259 | |
244 code = fp.close() | 260 code = fp.close() |
245 if code: | 261 if code: |
246 raise util.Abort(_("patch command failed: %s") % | 262 raise util.Abort(_("patch command failed: %s") % |
247 util.explain_exit(code)[0]) | 263 util.explain_exit(code)[0]) |
248 | 264 |
249 for gp in gitpatches: | 265 for gp in gitpatches: |
250 files[gp.path] = (gp.op, gp) | 266 files[gp.path] = (gp.op, gp) |
251 | 267 |
252 return files | 268 return (files, fuzz) |
253 | 269 |
254 def diff(repo, node1=None, node2=None, files=None, match=util.always, | 270 def diff(repo, node1=None, node2=None, files=None, match=util.always, |
255 fp=None, changes=None, opts=None): | 271 fp=None, changes=None, opts=None): |
256 '''print diff of changes to files between two nodes, or node and | 272 '''print diff of changes to files between two nodes, or node and |
257 working directory. | 273 working directory. |