I've got a Git repo from which I need to create a patch file in something other than the default git diff
format. My use case is I've got a clunky old OSF/1 machine on which I need to apply the patch, and the /bin/patch
program there doesn't understand unified diffs.
If I use GIT_EXTERNAL_DIFF=diff
, hoping that I can then use GIT_DIFF_OPTS=-c
to request a context format diff, then my (modern) diff
program complains about extra arguments on its command line:
diff: extra operand `373e5907b789a1398a91f4ceb4ab14e8a0ed4282'
diff: Try `diff --help' for more information.
external diff died, stopping at [filename].
Setting GIT_EXTERNAL_DIFF=echo
shows that Git seems to run the external diff program with:
$GIT_EXTERNAL_DIFF <file2> <file1> <hash> <mode> <tmpfilename> <hash> <mode>
This confuses diff
which doesn't want the extra arguments. Is there an easy way to tell git diff
to create an old-style "context" format diff?
(My current plan is to write a one-liner shell script that calls the real diff
with just $1 $2
, but I'm hoping there is a less awkward way.)