diff mercurial/patch.py @ 14385:7709cc983025

patch: git metadata was ignored if strip > 1 gitpatch objects emitted by iterhunks() are modified in place by applydiff(). Processing them earlier improves iterhunks() isolation. applydiff() modifying them should still be fixed though.
author Patrick Mezard <pmezard@gmail.com>
date Thu, 19 May 2011 22:44:01 +0200
parents 9d59c596eb9e
children c2ef8cc50748
line wrap: on
line diff
--- a/mercurial/patch.py	Thu May 19 22:44:01 2011 +0200
+++ b/mercurial/patch.py	Thu May 19 22:44:01 2011 +0200
@@ -1158,14 +1158,12 @@
                 if not git:
                     git = True
                     gitpatches = scangitpatch(lr, x)
-                    yield 'git', gitpatches
                     for gp in gitpatches:
                         changed[gp.path] = gp
-                # else error?
+                    yield 'git', gitpatches
                 # copy/rename + modify should modify target, not source
-                gp = changed.get(bfile)
-                if gp and (gp.op in ('COPY', 'DELETE', 'RENAME', 'ADD')
-                           or gp.mode):
+                gp = changed[bfile]
+                if gp.op in ('COPY', 'DELETE', 'RENAME', 'ADD') or gp.mode:
                     afile = bfile
                 newfile = True
         elif x.startswith('---'):