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

[TopGit RFC/PATCH v3 11/12] tg-patch: use ui diff when pager is active

From
Bert Wesarg <bert.wesarg@googlemail.com>
Date
Oct 20, 2010, 20:17 UTC
Message-ID
<cb28181bc3cc0cfbf19926aa9dabf3d1d1f643b0.1287605587.git.bert.wesarg@googlemail.com>
In-Reply-To
<8bd4da13a1c992ece87b4c742d75dad3b6776acf.1287605587.git.bert.wesarg@googlemail.com>

diff-tree should be used to generate patches meant for submission (or non-human consumption). But for pure human inspection some 'eye-candy' effects could take considerations. Like color, renames, mnemonicprefix, or noprefix. External diff driver or word-diff. All these are in effect by using the diff command, when configured in your git config file. diff-tree does not honor these configure options but its possible to give them as command line options too. Selecting the plumbing or ui diff driver is best done automatically, in my opinion. And an active pager is my best bet that a human will consume the output.

Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
---

I will probably add an overwrite command switch (to enable ui mode even without an active pager shortly. Because I sometimes pipe the output for inspection into my editor.

 tg-patch.sh |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/tg-patch.sh b/tg-patch.sh
index 9def6e5..dcce672 100644
--- a/tg-patch.sh
+++ b/tg-patch.sh
@@ -70,7 +70,12 @@ t_tree=$(pretty_tree "$name" $head_from)
 if [ $b_tree = $t_tree ]; then
 	echo "No changes."
 else
-	git diff-tree -p --stat $b_tree $t_tree
+	# use the ui diff command when the pager is active
+	diff_command=diff
+	[ "x$GIT_PAGER_IN_USE" = "x1" ] ||
+		diff_command=diff-tree
+
+	git $diff_command -p --stat $b_tree $t_tree
 fi
 
 echo '-- '
-- 
1.7.3.1.1069.g89486
Previous: Bert WesargNext: Bert Wesarg
Message 11 of 12 in “provide a global temporary directory”
  1. 01/12 provide a global temporary directoryBert Wesarg, Oct 20, 2010
  2. 02/12 cat_file: take -i/-w parametersBert Wesarg, Oct 20, 2010
  3. 03/12 pretty_tree: globalize and respect -i/-w optionsBert Wesarg, Oct 20, 2010
  4. 04/12 branch_empty: use pretty_tree and therefore respect -i/-wBert Wesarg, Oct 20, 2010
  5. 05/12 tg-path: use pretty_tree and diff-tree to generate the patchBert Wesarg, Oct 20, 2010
  6. 06/12 list_deps: accept -i/-wBert Wesarg, Oct 20, 2010
  7. 07/12 tg-summary: accept -i/-wBert Wesarg, Oct 20, 2010
  8. 08/12 tg-mail: accept -i/-wBert Wesarg, Oct 20, 2010
  9. 09/12 tg-files: list files changed by the topic branchBert Wesarg, Oct 20, 2010
  10. 10/12 tg-prev/tg-next: commands to explore dependenciesBert Wesarg, Oct 20, 2010
  11. 11/12 tg-patch: use ui diff when pager is activeBert Wesarg, Oct 20, 2010
  12. 12/12 tg-patch: simulate mnemonic prefixesBert Wesarg, Oct 20, 2010

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.