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'] 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: 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 [1]: https://github.com/dniku/git-external-diff-argv [2]: https://www.git-scm.com/docs/git#Documentation/git.txt-codeGITEXTERNALDIFFcode