# HG changeset patch # User Benoit Boissinot # Date 1157631159 -7200 # Node ID 035fd2029575324ad2341e4677f38a9f832da104 # Parent 32fd512ca7c0431ab75358ea764c66efe999d14f 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 diff -r 32fd512ca7c0 -r 035fd2029575 mercurial/patch.py --- 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: diff -r 32fd512ca7c0 -r 035fd2029575 tests/test-git-export --- 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/" diff -r 32fd512ca7c0 -r 035fd2029575 tests/test-git-export.out --- 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