mercurial/patch.py
changeset 9328 648d6a1a1cf2
parent 9248 ac02b43bc08a
child 9330 be2a13153372
--- a/mercurial/patch.py	Thu Aug 06 21:35:58 2009 -0700
+++ b/mercurial/patch.py	Fri Aug 07 19:27:54 2009 -0700
@@ -793,6 +793,17 @@
     if reverse:
         createfunc = hunk.rmfile
     missing = not goodb and not gooda and not createfunc()
+
+    # some diff programs apparently produce create patches where the
+    # afile is not /dev/null, but rather the same name as the bfile
+    if missing and afile == bfile:
+        # this isn't very pretty
+        hunk.create = True
+        if createfunc():
+            missing = False
+        else:
+            hunk.create = False
+
     # If afile is "a/b/foo" and bfile is "a/b/foo.orig" we assume the
     # diff is between a file and its backup. In this case, the original
     # file should be patched (see original mpatch code).