When "git-diff-index", "git-diff-tree", or "git-diff-files" are run
with a '-p' option, they do not produce the output described above;
-instead they produce a patch file.
+instead they produce a patch file. You can customize the creation
+of such patches via the GIT_EXTERNAL_DIFF and the GIT_DIFF_OPTS
+environment variables.
-The patch generation can be customized at two levels.
-
-1. When the environment variable 'GIT_EXTERNAL_DIFF' is not set,
- these commands internally invoke "diff" like this:
-
- diff -L a/<path> -L b/<path> -pu <old> <new>
-+
-For added files, `/dev/null` is used for <old>. For removed
-files, `/dev/null` is used for <new>
-+
-The "diff" formatting options can be customized via the
-environment variable 'GIT_DIFF_OPTS'. For example, if you
-prefer context diff:
-
- GIT_DIFF_OPTS=-c git-diff-index -p HEAD
-
-
-2. When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
- program named by it is called, instead of the diff invocation
- described above.
-+
-For a path that is added, removed, or modified,
-'GIT_EXTERNAL_DIFF' is called with 7 parameters:
-
- path old-file old-hex old-mode new-file new-hex new-mode
-+
-where:
-
- <old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
- contents of <old|new>,
- <old|new>-hex:: are the 40-hexdigit SHA1 hashes,
- <old|new>-mode:: are the octal representation of the file modes.
-
-+
-The file parameters can point at the user's working file
-(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
-when a new file is added), or a temporary file (e.g. `old-file` in the
-index). 'GIT_EXTERNAL_DIFF' should not worry about unlinking the
-temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.
-
-For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
-parameter, <path>.
-
-
-git specific extension to diff format
--------------------------------------
-
-What -p option produces is slightly different from the
-traditional diff format.
+What the -p option produces is slightly different from the traditional
+diff format.
1. It is preceded with a "git diff" header, that looks like
this:
- diff --git a/file1 b/file2
+ diff --git a/file1 b/file2
+
The `a/` and `b/` filenames are the same unless rename/copy is
involved. Especially, even for a creation or a deletion,
<div class="sectionbody">\r
<p>When "git-diff-index", "git-diff-tree", or "git-diff-files" are run\r
with a <em>-p</em> option, they do not produce the output described above;\r
-instead they produce a patch file.</p>\r
-<p>The patch generation can be customized at two levels.</p>\r
-<ol>\r
-<li>\r
-<p>\r
-When the environment variable <em>GIT_EXTERNAL_DIFF</em> is not set,\r
- these commands internally invoke "diff" like this:\r
-</p>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>diff -L a/<path> -L b/<path> -pu <old> <new></tt></pre>\r
-</div></div>\r
-<p>For added files, <tt>/dev/null</tt> is used for <old>. For removed\r
-files, <tt>/dev/null</tt> is used for <new></p>\r
-<p>The "diff" formatting options can be customized via the\r
-environment variable <em>GIT_DIFF_OPTS</em>. For example, if you\r
-prefer context diff:</p>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>GIT_DIFF_OPTS=-c git-diff-index -p HEAD</tt></pre>\r
-</div></div>\r
-</li>\r
-<li>\r
-<p>\r
-When the environment variable <em>GIT_EXTERNAL_DIFF</em> is set, the\r
- program named by it is called, instead of the diff invocation\r
- described above.\r
-</p>\r
-<p>For a path that is added, removed, or modified,\r
-<em>GIT_EXTERNAL_DIFF</em> is called with 7 parameters:</p>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>path old-file old-hex old-mode new-file new-hex new-mode</tt></pre>\r
-</div></div>\r
-<p>where:</p>\r
-<div class="hlist"><table>\r
-<tr>\r
-<td class="hlist1">\r
-<old|new>-file\r
-</td>\r
-<td class="hlist2">\r
-are files GIT_EXTERNAL_DIFF can use to read the\r
- contents of <old|new>,\r
-</td>\r
-</tr>\r
-<tr>\r
-<td class="hlist1">\r
-<old|new>-hex\r
-</td>\r
-<td class="hlist2">\r
-are the 40-hexdigit SHA1 hashes,\r
-</td>\r
-</tr>\r
-<tr>\r
-<td class="hlist1">\r
-<old|new>-mode\r
-</td>\r
-<td class="hlist2">\r
-are the octal representation of the file modes.\r
-</td>\r
-</tr>\r
-</table></div>\r
-<p>The file parameters can point at the user's working file\r
-(e.g. <tt>new-file</tt> in "git-diff-files"), <tt>/dev/null</tt> (e.g. <tt>old-file</tt>\r
-when a new file is added), or a temporary file (e.g. <tt>old-file</tt> in the\r
-index). <em>GIT_EXTERNAL_DIFF</em> should not worry about unlinking the\r
-temporary file --- it is removed when <em>GIT_EXTERNAL_DIFF</em> exits.</p>\r
-</li>\r
-</ol>\r
-<p>For a path that is unmerged, <em>GIT_EXTERNAL_DIFF</em> is called with 1\r
-parameter, <path>.</p>\r
-</div>\r
-<h2>git specific extension to diff format</h2>\r
-<div class="sectionbody">\r
-<p>What -p option produces is slightly different from the\r
-traditional diff format.</p>\r
+instead they produce a patch file. You can customize the creation\r
+of such patches via the GIT_EXTERNAL_DIFF and the GIT_DIFF_OPTS\r
+environment variables.</p>\r
+<p>What the -p option produces is slightly different from the traditional\r
+diff format.</p>\r
<ol>\r
<li>\r
<p>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 27-Oct-2006 09:28:59 UTC\r
+Last updated 28-Nov-2006 02:22:11 UTC\r
</div>\r
</div>\r
</body>\r
<div class="sectionbody">\r
<p>When "git-diff-index", "git-diff-tree", or "git-diff-files" are run\r
with a <em>-p</em> option, they do not produce the output described above;\r
-instead they produce a patch file.</p>\r
-<p>The patch generation can be customized at two levels.</p>\r
-<ol>\r
-<li>\r
-<p>\r
-When the environment variable <em>GIT_EXTERNAL_DIFF</em> is not set,\r
- these commands internally invoke "diff" like this:\r
-</p>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>diff -L a/<path> -L b/<path> -pu <old> <new></tt></pre>\r
-</div></div>\r
-<p>For added files, <tt>/dev/null</tt> is used for <old>. For removed\r
-files, <tt>/dev/null</tt> is used for <new></p>\r
-<p>The "diff" formatting options can be customized via the\r
-environment variable <em>GIT_DIFF_OPTS</em>. For example, if you\r
-prefer context diff:</p>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>GIT_DIFF_OPTS=-c git-diff-index -p HEAD</tt></pre>\r
-</div></div>\r
-</li>\r
-<li>\r
-<p>\r
-When the environment variable <em>GIT_EXTERNAL_DIFF</em> is set, the\r
- program named by it is called, instead of the diff invocation\r
- described above.\r
-</p>\r
-<p>For a path that is added, removed, or modified,\r
-<em>GIT_EXTERNAL_DIFF</em> is called with 7 parameters:</p>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>path old-file old-hex old-mode new-file new-hex new-mode</tt></pre>\r
-</div></div>\r
-<p>where:</p>\r
-<div class="hlist"><table>\r
-<tr>\r
-<td class="hlist1">\r
-<old|new>-file\r
-</td>\r
-<td class="hlist2">\r
-are files GIT_EXTERNAL_DIFF can use to read the\r
- contents of <old|new>,\r
-</td>\r
-</tr>\r
-<tr>\r
-<td class="hlist1">\r
-<old|new>-hex\r
-</td>\r
-<td class="hlist2">\r
-are the 40-hexdigit SHA1 hashes,\r
-</td>\r
-</tr>\r
-<tr>\r
-<td class="hlist1">\r
-<old|new>-mode\r
-</td>\r
-<td class="hlist2">\r
-are the octal representation of the file modes.\r
-</td>\r
-</tr>\r
-</table></div>\r
-<p>The file parameters can point at the user's working file\r
-(e.g. <tt>new-file</tt> in "git-diff-files"), <tt>/dev/null</tt> (e.g. <tt>old-file</tt>\r
-when a new file is added), or a temporary file (e.g. <tt>old-file</tt> in the\r
-index). <em>GIT_EXTERNAL_DIFF</em> should not worry about unlinking the\r
-temporary file --- it is removed when <em>GIT_EXTERNAL_DIFF</em> exits.</p>\r
-</li>\r
-</ol>\r
-<p>For a path that is unmerged, <em>GIT_EXTERNAL_DIFF</em> is called with 1\r
-parameter, <path>.</p>\r
-</div>\r
-<h2>git specific extension to diff format</h2>\r
-<div class="sectionbody">\r
-<p>What -p option produces is slightly different from the\r
-traditional diff format.</p>\r
+instead they produce a patch file. You can customize the creation\r
+of such patches via the GIT_EXTERNAL_DIFF and the GIT_DIFF_OPTS\r
+environment variables.</p>\r
+<p>What the -p option produces is slightly different from the traditional\r
+diff format.</p>\r
<ol>\r
<li>\r
<p>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 03-Nov-2006 02:39:57 UTC\r
+Last updated 28-Nov-2006 02:22:12 UTC\r
</div>\r
</div>\r
</body>\r
<div class="sectionbody">\r
<p>When "git-diff-index", "git-diff-tree", or "git-diff-files" are run\r
with a <em>-p</em> option, they do not produce the output described above;\r
-instead they produce a patch file.</p>\r
-<p>The patch generation can be customized at two levels.</p>\r
-<ol>\r
-<li>\r
-<p>\r
-When the environment variable <em>GIT_EXTERNAL_DIFF</em> is not set,\r
- these commands internally invoke "diff" like this:\r
-</p>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>diff -L a/<path> -L b/<path> -pu <old> <new></tt></pre>\r
-</div></div>\r
-<p>For added files, <tt>/dev/null</tt> is used for <old>. For removed\r
-files, <tt>/dev/null</tt> is used for <new></p>\r
-<p>The "diff" formatting options can be customized via the\r
-environment variable <em>GIT_DIFF_OPTS</em>. For example, if you\r
-prefer context diff:</p>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>GIT_DIFF_OPTS=-c git-diff-index -p HEAD</tt></pre>\r
-</div></div>\r
-</li>\r
-<li>\r
-<p>\r
-When the environment variable <em>GIT_EXTERNAL_DIFF</em> is set, the\r
- program named by it is called, instead of the diff invocation\r
- described above.\r
-</p>\r
-<p>For a path that is added, removed, or modified,\r
-<em>GIT_EXTERNAL_DIFF</em> is called with 7 parameters:</p>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>path old-file old-hex old-mode new-file new-hex new-mode</tt></pre>\r
-</div></div>\r
-<p>where:</p>\r
-<div class="hlist"><table>\r
-<tr>\r
-<td class="hlist1">\r
-<old|new>-file\r
-</td>\r
-<td class="hlist2">\r
-are files GIT_EXTERNAL_DIFF can use to read the\r
- contents of <old|new>,\r
-</td>\r
-</tr>\r
-<tr>\r
-<td class="hlist1">\r
-<old|new>-hex\r
-</td>\r
-<td class="hlist2">\r
-are the 40-hexdigit SHA1 hashes,\r
-</td>\r
-</tr>\r
-<tr>\r
-<td class="hlist1">\r
-<old|new>-mode\r
-</td>\r
-<td class="hlist2">\r
-are the octal representation of the file modes.\r
-</td>\r
-</tr>\r
-</table></div>\r
-<p>The file parameters can point at the user's working file\r
-(e.g. <tt>new-file</tt> in "git-diff-files"), <tt>/dev/null</tt> (e.g. <tt>old-file</tt>\r
-when a new file is added), or a temporary file (e.g. <tt>old-file</tt> in the\r
-index). <em>GIT_EXTERNAL_DIFF</em> should not worry about unlinking the\r
-temporary file --- it is removed when <em>GIT_EXTERNAL_DIFF</em> exits.</p>\r
-</li>\r
-</ol>\r
-<p>For a path that is unmerged, <em>GIT_EXTERNAL_DIFF</em> is called with 1\r
-parameter, <path>.</p>\r
-</div>\r
-<h2>git specific extension to diff format</h2>\r
-<div class="sectionbody">\r
-<p>What -p option produces is slightly different from the\r
-traditional diff format.</p>\r
+instead they produce a patch file. You can customize the creation\r
+of such patches via the GIT_EXTERNAL_DIFF and the GIT_DIFF_OPTS\r
+environment variables.</p>\r
+<p>What the -p option produces is slightly different from the traditional\r
+diff format.</p>\r
<ol>\r
<li>\r
<p>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 27-Oct-2006 09:29:01 UTC\r
+Last updated 28-Nov-2006 02:22:13 UTC\r
</div>\r
</div>\r
</body>\r
<div class="sectionbody">\r
<p>When "git-diff-index", "git-diff-tree", or "git-diff-files" are run\r
with a <em>-p</em> option, they do not produce the output described above;\r
-instead they produce a patch file.</p>\r
-<p>The patch generation can be customized at two levels.</p>\r
-<ol>\r
-<li>\r
-<p>\r
-When the environment variable <em>GIT_EXTERNAL_DIFF</em> is not set,\r
- these commands internally invoke "diff" like this:\r
-</p>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>diff -L a/<path> -L b/<path> -pu <old> <new></tt></pre>\r
-</div></div>\r
-<p>For added files, <tt>/dev/null</tt> is used for <old>. For removed\r
-files, <tt>/dev/null</tt> is used for <new></p>\r
-<p>The "diff" formatting options can be customized via the\r
-environment variable <em>GIT_DIFF_OPTS</em>. For example, if you\r
-prefer context diff:</p>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>GIT_DIFF_OPTS=-c git-diff-index -p HEAD</tt></pre>\r
-</div></div>\r
-</li>\r
-<li>\r
-<p>\r
-When the environment variable <em>GIT_EXTERNAL_DIFF</em> is set, the\r
- program named by it is called, instead of the diff invocation\r
- described above.\r
-</p>\r
-<p>For a path that is added, removed, or modified,\r
-<em>GIT_EXTERNAL_DIFF</em> is called with 7 parameters:</p>\r
-<div class="literalblock">\r
-<div class="content">\r
-<pre><tt>path old-file old-hex old-mode new-file new-hex new-mode</tt></pre>\r
-</div></div>\r
-<p>where:</p>\r
-<div class="hlist"><table>\r
-<tr>\r
-<td class="hlist1">\r
-<old|new>-file\r
-</td>\r
-<td class="hlist2">\r
-are files GIT_EXTERNAL_DIFF can use to read the\r
- contents of <old|new>,\r
-</td>\r
-</tr>\r
-<tr>\r
-<td class="hlist1">\r
-<old|new>-hex\r
-</td>\r
-<td class="hlist2">\r
-are the 40-hexdigit SHA1 hashes,\r
-</td>\r
-</tr>\r
-<tr>\r
-<td class="hlist1">\r
-<old|new>-mode\r
-</td>\r
-<td class="hlist2">\r
-are the octal representation of the file modes.\r
-</td>\r
-</tr>\r
-</table></div>\r
-<p>The file parameters can point at the user's working file\r
-(e.g. <tt>new-file</tt> in "git-diff-files"), <tt>/dev/null</tt> (e.g. <tt>old-file</tt>\r
-when a new file is added), or a temporary file (e.g. <tt>old-file</tt> in the\r
-index). <em>GIT_EXTERNAL_DIFF</em> should not worry about unlinking the\r
-temporary file --- it is removed when <em>GIT_EXTERNAL_DIFF</em> exits.</p>\r
-</li>\r
-</ol>\r
-<p>For a path that is unmerged, <em>GIT_EXTERNAL_DIFF</em> is called with 1\r
-parameter, <path>.</p>\r
-</div>\r
-<h2>git specific extension to diff format</h2>\r
-<div class="sectionbody">\r
-<p>What -p option produces is slightly different from the\r
-traditional diff format.</p>\r
+instead they produce a patch file. You can customize the creation\r
+of such patches via the GIT_EXTERNAL_DIFF and the GIT_DIFF_OPTS\r
+environment variables.</p>\r
+<p>What the -p option produces is slightly different from the traditional\r
+diff format.</p>\r
<ol>\r
<li>\r
<p>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 23-Nov-2006 02:47:19 UTC\r
+Last updated 28-Nov-2006 02:22:14 UTC\r
</div>\r
</div>\r
</body>\r
<dt>\r
<em>GIT_DIFF_OPTS</em>\r
</dt>\r
+<dd>\r
+<p>\r
+ Only valid setting is "--unified=??" or "-u??" to set the\r
+ number of context lines shown when a unified diff is created.\r
+ This takes precedence over any "-U" or "--unified" option\r
+ value passed on the git diff command line.\r
+</p>\r
+</dd>\r
<dt>\r
<em>GIT_EXTERNAL_DIFF</em>\r
</dt>\r
<dd>\r
<p>\r
- see the "generating patches" section in :\r
- <a href="git-diff-index.html">git-diff-index(1)</a>;\r
- <a href="git-diff-files.html">git-diff-files(1)</a>;\r
- <a href="git-diff-tree.html">git-diff-tree(1)</a>\r
+ When the environment variable <em>GIT_EXTERNAL_DIFF</em> is set, the\r
+ program named by it is called, instead of the diff invocation\r
+ described above. For a path that is added, removed, or modified,\r
+ <em>GIT_EXTERNAL_DIFF</em> is called with 7 parameters:\r
</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>path old-file old-hex old-mode new-file new-hex new-mode</tt></pre>\r
+</div></div>\r
+<p>where:</p>\r
+<div class="hlist"><table>\r
+<tr>\r
+<td class="hlist1">\r
+<old|new>-file\r
+</td>\r
+<td class="hlist2">\r
+are files GIT_EXTERNAL_DIFF can use to read the\r
+ contents of <old|new>,\r
+</td>\r
+</tr>\r
+<tr>\r
+<td class="hlist1">\r
+<old|new>-hex\r
+</td>\r
+<td class="hlist2">\r
+are the 40-hexdigit SHA1 hashes,\r
+</td>\r
+</tr>\r
+<tr>\r
+<td class="hlist1">\r
+<old|new>-mode\r
+</td>\r
+<td class="hlist2">\r
+are the octal representation of the file modes.\r
+</td>\r
+</tr>\r
+</table></div>\r
+<p>The file parameters can point at the user's working file\r
+(e.g. <tt>new-file</tt> in "git-diff-files"), <tt>/dev/null</tt> (e.g. <tt>old-file</tt>\r
+when a new file is added), or a temporary file (e.g. <tt>old-file</tt> in the\r
+index). <em>GIT_EXTERNAL_DIFF</em> should not worry about unlinking the\r
+temporary file --- it is removed when <em>GIT_EXTERNAL_DIFF</em> exits.</p>\r
+<p>For a path that is unmerged, <em>GIT_EXTERNAL_DIFF</em> is called with 1\r
+parameter, <path>.</p>\r
</dd>\r
</dl>\r
<h3>other</h3>\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 18-Nov-2006 22:17:48 UTC\r
+Last updated 28-Nov-2006 02:22:15 UTC\r
</div>\r
</div>\r
</body>\r
git Diffs
~~~~~~~~~
'GIT_DIFF_OPTS'::
+ Only valid setting is "--unified=??" or "-u??" to set the
+ number of context lines shown when a unified diff is created.
+ This takes precedence over any "-U" or "--unified" option
+ value passed on the git diff command line.
+
'GIT_EXTERNAL_DIFF'::
- see the "generating patches" section in :
- gitlink:git-diff-index[1];
- gitlink:git-diff-files[1];
- gitlink:git-diff-tree[1]
+ When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
+ program named by it is called, instead of the diff invocation
+ described above. For a path that is added, removed, or modified,
+ 'GIT_EXTERNAL_DIFF' is called with 7 parameters:
+
+ path old-file old-hex old-mode new-file new-hex new-mode
++
+where:
+
+ <old|new>-file:: are files GIT_EXTERNAL_DIFF can use to read the
+ contents of <old|new>,
+ <old|new>-hex:: are the 40-hexdigit SHA1 hashes,
+ <old|new>-mode:: are the octal representation of the file modes.
+
++
+The file parameters can point at the user's working file
+(e.g. `new-file` in "git-diff-files"), `/dev/null` (e.g. `old-file`
+when a new file is added), or a temporary file (e.g. `old-file` in the
+index). 'GIT_EXTERNAL_DIFF' should not worry about unlinking the
+temporary file --- it is removed when 'GIT_EXTERNAL_DIFF' exits.
++
+For a path that is unmerged, 'GIT_EXTERNAL_DIFF' is called with 1
+parameter, <path>.
other
~~~~~