On 30/08/2019 14:23, Dmitry Nikulin wrote:
On Fri, 30 Aug 2019 at 13:16, Phillip Wood <phillip.wood123@xxxxxxxxx> wrote:
I'm not sure why the last argument is being split in
your example. It is not split in the example below
I have replicated the splitting issue on my small demo repo [1]:
$ env GIT_EXTERNAL_DIFF=./print_argv.py git diff -M origin/branch1
origin/branch1-mv -- file1.txt file1-mv.txt
['./print_argv.py',
'file1.txt',
'/tmp/EWaCSc_file1.txt',
'2bef330804cb3f6962e45a72a12a3071ee9b5888',
'100644',
'/tmp/mtEiSc_file1-mv.txt',
'f8fd6737fbe5a45c97ba9c9de495dc46ff11eccd',
'100644',
'file1-mv.txt',
'similarity index 90%\n'
'rename from file1.txt\n'
'rename to file1-mv.txt\n'
'index 2bef330..f8fd673 100644\n']
That's strange - What OS are you using? Does python do any
pre-processing of arguments with newlines in them?
This is, however, tangential to the original problem: documenting the
external diff CLI interface for diffing two blobs. Here is what I am
seeing:
$ env GIT_EXTERNAL_DIFF=./print_argv.py git diff
origin/branch1:file1.txt origin/branch1-mv:file1-mv.txt
['./print_argv.py',
'file1.txt',
'/tmp/n9USvy_file1.txt',
'2bef330804cb3f6962e45a72a12a3071ee9b5888',
'100644',
'/tmp/Zst0uy_file1-mv.txt',
'f8fd6737fbe5a45c97ba9c9de495dc46ff11eccd',
'100644',
'file1-mv.txt',
'index 2bef330..f8fd673 100644\n']
The meaning and origin of the last arg remains mysterious, and the
other args do not conform to the published documentation[2], which
states that the args should be:
The documentation is incomplete it should document the extra fields
passed when it detects renames.
path old-file old-hex old-mode new-file new-hex new-mode
Instead the args that are passed are:
path old-filename old-file old-hex old-mode new-file new-hex
new-mode new-filename something
I think what is happening is that because you're passing different
filenames in to get the blobs the 'pass rename information' code is
being triggered so it shows the new filename as the name used to get the
second blob and then passes the header which only has an index line as
there isn't any real rename information.
Best Wishes
Phillip
[1]: https://github.com/dniku/git-external-diff-argv
[2]: https://www.git-scm.com/docs/git#Documentation/git.txt-codeGITEXTERNALDIFFcode