changeset 3066:035fd2029575

git --diff: fix traceback when getting mode change - use the manifest instead of the mode in the working dir if the diff is against two revisions - add a testcase
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
date Thu, 07 Sep 2006 14:12:39 +0200
parents 32fd512ca7c0
children fbd3f9fd645d
files mercurial/patch.py tests/test-git-export tests/test-git-export.out
diffstat 3 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/patch.py	Thu Sep 07 14:01:00 2006 +0200
+++ b/mercurial/patch.py	Thu Sep 07 14:12:39 2006 +0200
@@ -502,7 +502,10 @@
                     header.append('deleted file mode %s\n' % mode)
             else:
                 omode = gitmode(mmap.execf(f))
-                nmode = gitmode(util.is_exec(repo.wjoin(f), mmap.execf(f)))
+                if node2:
+                    nmode = gitmode(mmap2.execf(f))
+                else:
+                    nmode = gitmode(util.is_exec(repo.wjoin(f), mmap.execf(f)))
                 addmodehdr(header, omode, nmode)
             r = None
             if dodiff:
--- a/tests/test-git-export	Thu Sep 07 14:01:00 2006 +0200
+++ b/tests/test-git-export	Thu Sep 07 14:12:39 2006 +0200
@@ -50,3 +50,7 @@
 echo '% rename+mod+chmod'
 hg diff --git -r 6:tip | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
     -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
+
+echo '% nonexistent in tip+chmod'
+hg diff --git -r 5:6 | sed -e "s/\(+++ [a-zA-Z0-9_/.-]*\).*/\1/" \
+    -e "s/\(--- [a-zA-Z0-9_/.-]*\).*/\1/"
--- a/tests/test-git-export.out	Thu Sep 07 14:01:00 2006 +0200
+++ b/tests/test-git-export.out	Thu Sep 07 14:12:39 2006 +0200
@@ -40,3 +40,7 @@
  4
  5
 +a
+% nonexistent in tip+chmod
+diff --git a/src b/src
+old mode 100644
+new mode 100755