git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 09/14] difftool: move 'git-difftool' out of contrib

From
David Aguilar <davvid@gmail.com>
Date
Apr 6, 2009, 08:31 UTC
Message-ID
<1239006689-14695-10-git-send-email-davvid@gmail.com>
In-Reply-To
<1239006689-14695-9-git-send-email-davvid@gmail.com>

This prepares 'git-difftool' and its documentation for mainstream use.

'git-difftool-helper' became 'git-difftool--helper' since users should not use it directly.

'git-difftool' was added to the list of commands as an ancillaryinterrogator.

Signed-off-by: David Aguilar <davvid@gmail.com>
---
 .gitignore                                         |    2 ++
 Documentation/config.txt                           |   17 +++++++++++++++++
 .../difftool => Documentation}/git-difftool.txt    |    0
 Makefile                                           |    2 ++
 command-list.txt                                   |    1 +
 .../git-difftool-helper => git-difftool--helper.sh |    2 +-
 contrib/difftool/git-difftool => git-difftool.perl |    6 +++---
 7 files changed, 26 insertions(+), 4 deletions(-)
 rename {contrib/difftool => Documentation}/git-difftool.txt (100%)
 rename contrib/difftool/git-difftool-helper => git-difftool--helper.sh (98%)
 rename contrib/difftool/git-difftool => git-difftool.perl (92%)
diff --git a/.gitignore b/.gitignore
index 1c57d4c..a36da9d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,6 +35,8 @@ git-diff
 git-diff-files
 git-diff-index
 git-diff-tree
+git-difftool
+git-difftool--helper
 git-describe
 git-fast-export
 git-fast-import
diff --git a/Documentation/config.txt b/Documentation/config.txt
index ad22cb8..185a9ef 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -667,6 +667,23 @@ diff.suppressBlankEmpty::
 	A boolean to inhibit the standard behavior of printing a space
 	before each empty output line. Defaults to false.
 
+diff.tool::
+	Controls which diff tool is used.  `diff.tool` overrides
+	`merge.tool` when used by linkgit:git-difftool[1] and has
+	the same valid values as `merge.tool`.
+
+difftool.<tool>.path::
+	Override the path for the given tool.  This is useful in case
+	your tool is not in the PATH.
+
+difftool.<tool>.cmd::
+	Specify the command to invoke the specified diff tool.
+	The specified command is evaluated in shell with the following
+	variables available:  'LOCAL' is set to the name of the temporary
+	file containing the contents of the diff pre-image and 'REMOTE'
+	is set to the name of the temporary file containing the contents
+	of the diff post-image.
+
 diff.wordRegex::
 	A POSIX Extended Regular Expression used to determine what is a "word"
 	when performing word-by-word difference calculations.  Character
diff --git a/contrib/difftool/git-difftool.txt b/Documentation/git-difftool.txt
similarity index 100%
rename from contrib/difftool/git-difftool.txt
rename to Documentation/git-difftool.txt
diff --git a/Makefile b/Makefile
index 7867eac..a80055f 100644
--- a/Makefile
+++ b/Makefile
@@ -277,6 +277,7 @@ TEST_PROGRAMS =
 
 SCRIPT_SH += git-am.sh
 SCRIPT_SH += git-bisect.sh
+SCRIPT_SH += git-difftool--helper.sh
 SCRIPT_SH += git-filter-branch.sh
 SCRIPT_SH += git-lost-found.sh
 SCRIPT_SH += git-merge-octopus.sh
@@ -296,6 +297,7 @@ SCRIPT_SH += git-submodule.sh
 SCRIPT_SH += git-web--browse.sh
 
 SCRIPT_PERL += git-add--interactive.perl
+SCRIPT_PERL += git-difftool.perl
 SCRIPT_PERL += git-archimport.perl
 SCRIPT_PERL += git-cvsexportcommit.perl
 SCRIPT_PERL += git-cvsimport.perl
diff --git a/command-list.txt b/command-list.txt
index 3583a33..fb03a2e 100644
--- a/command-list.txt
+++ b/command-list.txt
@@ -33,6 +33,7 @@ git-diff                                mainporcelain common
 git-diff-files                          plumbinginterrogators
 git-diff-index                          plumbinginterrogators
 git-diff-tree                           plumbinginterrogators
+git-difftool                            ancillaryinterrogators
 git-fast-export				ancillarymanipulators
 git-fast-import				ancillarymanipulators
 git-fetch                               mainporcelain common
diff --git a/contrib/difftool/git-difftool-helper b/git-difftool--helper.sh
similarity index 98%
rename from contrib/difftool/git-difftool-helper
rename to git-difftool--helper.sh
index 4b0daec..fc61416 100755
--- a/contrib/difftool/git-difftool-helper
+++ b/git-difftool--helper.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# git-difftool-helper is a GIT_EXTERNAL_DIFF-compatible diff tool launcher.
+# git-difftool--helper is a GIT_EXTERNAL_DIFF-compatible diff tool launcher.
 # This script is typically launched by using the 'git difftool'
 # convenience command.
 #
diff --git a/contrib/difftool/git-difftool b/git-difftool.perl
similarity index 92%
rename from contrib/difftool/git-difftool
rename to git-difftool.perl
index 8c160e5..8857ac8 100755
--- a/contrib/difftool/git-difftool
+++ b/git-difftool.perl
@@ -2,9 +2,9 @@
 # Copyright (c) 2009 David Aguilar
 #
 # This is a wrapper around the GIT_EXTERNAL_DIFF-compatible
-# git-difftool-helper script.  This script exports
+# git-difftool--helper script.  This script exports
 # GIT_EXTERNAL_DIFF and GIT_PAGER for use by git, and
-# GIT_DIFFTOOL_NO_PROMPT and GIT_DIFF_TOOL for use by git-difftool-helper.
+# GIT_DIFFTOOL_NO_PROMPT and GIT_DIFF_TOOL for use by git-difftool--helper.
 # Any arguments that are unknown to this script are forwarded to 'git diff'.
 
 use strict;
@@ -27,7 +27,7 @@ sub setup_environment
 {
 	$ENV{PATH} = "$DIR:$ENV{PATH}";
 	$ENV{GIT_PAGER} = '';
-	$ENV{GIT_EXTERNAL_DIFF} = 'git-difftool-helper';
+	$ENV{GIT_EXTERNAL_DIFF} = 'git-difftool--helper';
 }
 
 sub exe
-- 
1.6.2.2.414.g81aa9
Previous: David AguilarNext: David Aguilar
Message 10 of 17 in “git-{merge,diff}tool refactor round three”
  1. David AguilarApr 6, 2009
  2. 01/14 doc/merge-config: list ecmerge as a built-in merge toolDavid Aguilar, Apr 6, 2009
  3. 02/14 git-mergetool/difftool: make (g)vimdiff workable under WindowsDavid Aguilar, Apr 6, 2009
  4. 03/14 git-mergetool: add new merge tool TortoiseMergeDavid Aguilar, Apr 6, 2009
  5. 04/14 difftool: remove merge options for opendiff, tkdiff, kdiff3 and xxdiffDavid Aguilar, Apr 6, 2009
  6. 05/14 difftool: remove the backup file featureDavid Aguilar, Apr 6, 2009
  7. 06/14 difftool: use perl built-ins when testing for msysDavid Aguilar, Apr 6, 2009
  8. 07/14 difftool: add a -y shortcut for --no-promptDavid Aguilar, Apr 6, 2009
  9. 08/14 difftool/mergetool: add diffuse as merge and diff toolDavid Aguilar, Apr 6, 2009
  10. 09/14 difftool: move 'git-difftool' out of contribDavid Aguilar, Apr 6, 2009
  11. 10/14 difftool: add various git-difftool testsDavid Aguilar, Apr 6, 2009
  12. 11/14 difftool: add support for a difftool.prompt config variableDavid Aguilar, Apr 6, 2009
  13. 12/14 bash completion: add git-difftoolDavid Aguilar, Apr 6, 2009
  14. 13/14 mergetool: use $( ... ) instead of `backticks`David Aguilar, Apr 6, 2009
  15. 14/14 difftool/mergetool: refactor commands to use git-mergetool--libDavid Aguilar, Apr 6, 2009
  16. Markus HeidelbergApr 6, 2009
  17. Markus HeidelbergApr 6, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.