Re: git-diff passes <rev>:<path> args to GIT_EXTERNAL_DIFF incorrectly?
- From
- Dmitry Nikulin <pastafariant@gmail.com>
- Date
- Aug 30, 2019, 15:28 UTC
- Message-ID
- <CAH53SyniovbvYoU1nhMobRq7nZREENiagJqN9LAYmZsGMpc+ww@mail.gmail.com>
- In-Reply-To
- <20190830142730.GB16327@sigill.intra.peff.net>
On Fri, 30 Aug 2019 at 17:27, Jeff King <peff@peff.net> wrote:
> I think you have an extra "old-filename" in the second list.
Agreed. My misunderstanding was that I had thought that when documentation said "path", it meant "argv[0], the path to the diff executable".
> Interesting. I _don't_ see that splitting when I run the same command in > your demo repo (nor, looking at Git's code, do I see how it could > happen; we always add the metainfo as a single argument).
Szeder Gábor below has guessed at the cause. I have tested it a little more:
# Test script to ensure that shell does not get in the way $ cat test.py import sys import subprocess
subprocess.check_call([
'python%s' % sys.argv[1],
'./print_argv.py',
'similarity index 90%\nrename from file1.txt\nrename to
file1-mv.txt\nindex 2bef330..f8fd673 100644\n',
])# Python 2, expected behavior $ python3 test.py 2 ['./print_argv.py', 'similarity index 90%\nrename from file1.txt\nrename to file1-mv.txt\nindex 2bef330..f8fd673 100644\n']
# Python 3, broken behavior observed before $ python3 test.py 3 ['./print_argv.py', 'similarity index 90%\n' 'rename from file1.txt\n' 'rename to file1-mv.txt\n' 'index 2bef330..f8fd673 100644\n']
# Directly via shell. Python 2, expected behavior $ python2 print_argv.py 'similarity index 90%\nrename from file1.txt\nrename to file1-mv.txt\nindex 2bef330..f8fd673 100644\n' ['print_argv.py', 'similarity index 90%\\nrename from file1.txt\\nrename to file1-mv.txt\\nindex 2bef330..f8fd673 100644\\n']
# Python 3, WTF $ python3 print_argv.py 'similarity index 90%\nrename from file1.txt\nrename to file1-mv.txt\nindex 2bef330..f8fd673 100644\n' ['print_argv.py', 'similarity index 90%\\nrename from file1.txt\\nrename to ' 'file1-mv.txt\\nindex 2bef330..f8fd673 100644\\n']