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

Re: [PATCH] git-status: colorize status output

From
MLMatthias Lederhofer <matled@gmx.net>
Date
Aug 5, 2006, 12:18 UTC
Message-ID
<20060805121821.GB20807@moooo.ath.cx>
In-Reply-To
<7v64h7e7dm.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano <junkio@cox.net> wrote:
> Matthias Lederhofer <matled@gmx.net> writes:
> Arrrrrrrgh!  The message I wanted to send you went to Jeff.
> 
> Your Mail-Followup-To: fooled me.  Please do not do this.
Sorry.
> > Is there any reason not checking isatty()?
> 
> Not that I can think of, but do people really run "git status"?
I do :)
> I think Jeff's follow-up "vim colorizer" makes a lot more sense
> than colorizing "git status" output -- it gives reminder during
> the last chance the user has to notice such problems, which is
> while composing the commit log message.

I like the colored git status. Here is a patch to honor isatty(1) and pager_in_use (exporting GIT_PAGER_IN_USE) with pager.color.

---
From c01b26cd332283d3b3feaeae4a8218bb409aea2c Mon Sep 17 00:00:00 2001
From: Matthias Lederhofer <matled@gmx.net>
Date: Sat, 5 Aug 2006 14:09:49 +0200
Subject: [PATCH] git-status: do not use colors all the time

Either [ -t 1 ] has to be true or the pager is used and pager.color is not false.

Signed-off-by: Matthias Lederhofer <matled@gmx.net>
---
 git-commit.sh |    6 +++++-
 pager.c       |    1 +
 2 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/git-commit.sh b/git-commit.sh
index b7269c2..ad0cbb1 100755
--- a/git-commit.sh
+++ b/git-commit.sh
@@ -20,7 +20,11 @@ case "$0" in
 *status)
 	status_only=t
 	unmerged_ok_if_status=--unmerged
-	color=`git-repo-config --bool --get status.color`
+	[ "`git-repo-config --bool --get status.color`" = 'true' ] &&
+		([ -t 1 ] || (
+			[ -n "$GIT_PAGER_IN_USE" ] &&
+			[ "`git-repo-config --bool --get pager.color`" != 'false' ]
+		)) && color=true
 	eval `git-repo-config --get-regexp status.color. \
 	      | while read k v; do
 	          echo color_${k#status.color.}=$v
diff --git a/pager.c b/pager.c
index dcb398d..3ba4166 100644
--- a/pager.c
+++ b/pager.c
@@ -27,6 +27,7 @@ void setup_pager(void)
 		return;
 
 	pager_in_use = 1; /* means we are emitting to terminal */
+	setenv("GIT_PAGER_IN_USE", "1", 1);
 
 	if (pipe(fd) < 0)
 		return;
-- 
1.4.2.rc2.gd71a
Previous: Junio C HamanoNext: Jeff King
Message 12 of 21 in “git-status: colorize status output”
  1. git-status: colorize status outputJeff King, Aug 5, 2006
  2. Jeff KingAug 5, 2006
  3. Greg KHAug 5, 2006
  4. Junio C HamanoAug 5, 2006
  5. Jeff KingAug 5, 2006
  6. Jeff KingAug 5, 2006
  7. Matthias LederhoferAug 5, 2006
  8. Junio C HamanoAug 5, 2006
  9. Junio C HamanoAug 5, 2006
  10. Matthias LederhoferAug 5, 2006
  11. Junio C HamanoAug 5, 2006
  12. Matthias LederhoferAug 5, 2006
  13. Jeff KingAug 5, 2006
  14. Matthias LederhoferAug 5, 2006
  15. Jeff KingAug 5, 2006
  16. Jeff KingAug 5, 2006
  17. Sam RavnborgAug 7, 2006
  18. Jeff KingAug 5, 2006
  19. Matthias LederhoferAug 5, 2006
  20. Joel BeckerAug 6, 2006
  21. Jeff KingAug 6, 2006

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.