equal
deleted
inserted
replaced
140 |
140 |
141 GP_PATCH = 1 << 0 # we have to run patch |
141 GP_PATCH = 1 << 0 # we have to run patch |
142 GP_FILTER = 1 << 1 # there's some copy/rename operation |
142 GP_FILTER = 1 << 1 # there's some copy/rename operation |
143 GP_BINARY = 1 << 2 # there's a binary patch |
143 GP_BINARY = 1 << 2 # there's a binary patch |
144 |
144 |
145 def readgitpatch(fp, firstline): |
145 def readgitpatch(fp, firstline=None): |
146 """extract git-style metadata about patches from <patchname>""" |
146 """extract git-style metadata about patches from <patchname>""" |
147 class gitpatch: |
147 class gitpatch: |
148 "op is one of ADD, DELETE, RENAME, MODIFY or COPY" |
148 "op is one of ADD, DELETE, RENAME, MODIFY or COPY" |
149 def __init__(self, path): |
149 def __init__(self, path): |
150 self.path = path |
150 self.path = path |
154 self.copymod = False |
154 self.copymod = False |
155 self.lineno = 0 |
155 self.lineno = 0 |
156 self.binary = False |
156 self.binary = False |
157 |
157 |
158 def reader(fp, firstline): |
158 def reader(fp, firstline): |
159 yield firstline |
159 if firstline is not None: |
|
160 yield firstline |
160 for line in fp: |
161 for line in fp: |
161 yield line |
162 yield line |
162 |
163 |
163 # Filter patch for git information |
164 # Filter patch for git information |
164 gitre = re.compile('diff --git a/(.*) b/(.*)') |
165 gitre = re.compile('diff --git a/(.*) b/(.*)') |
276 if code: |
277 if code: |
277 raise PatchError(_("patch command failed: %s") % |
278 raise PatchError(_("patch command failed: %s") % |
278 util.explain_exit(code)[0]) |
279 util.explain_exit(code)[0]) |
279 return fuzz |
280 return fuzz |
280 |
281 |
281 def internalpatch(patchname, ui, strip, cwd, files): |
282 def internalpatch(patchobj, ui, strip, cwd, files={}): |
282 """use builtin patch to apply <patchname> to the working directory. |
283 """use builtin patch to apply <patchobj> to the working directory. |
283 returns whether patch was applied with fuzz factor.""" |
284 returns whether patch was applied with fuzz factor.""" |
284 fp = file(patchname, 'rb') |
285 try: |
|
286 fp = file(patchobj, 'rb') |
|
287 except TypeError: |
|
288 fp = patchobj |
285 if cwd: |
289 if cwd: |
286 curdir = os.getcwd() |
290 curdir = os.getcwd() |
287 os.chdir(cwd) |
291 os.chdir(cwd) |
288 try: |
292 try: |
289 ret = applydiff(ui, fp, files, strip=strip) |
293 ret = applydiff(ui, fp, files, strip=strip) |