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

[PATCH] Provide better feedback for the untracked only case in status output

From
JRJuergen Ruehle <j.ruehle@bmiag.de>
Date
Jan 10, 2007, 07:08 UTC
Message-ID
<1168412892113-git-send-email-j.ruehle@bmiag.de>
In-Reply-To
<7vps9pwa3e.fsf@assigned-by-dhcp.cox.net>
From: =?utf-8?q?J=C3=BCrgen_R=C3=BChle?= <j-r@online.de>

Since 98bf8a47c296f51ea9722fef4bb81dbfb70cd4bb status would claim that git-commit could be useful even if there are no changes except untracked files.

Since wt-status is already computing all the information go the whole way and separately track the (non-)emptiness of all three sections, unify the code, and provide separate messages for each case. This adds a new message for the untracked only case and adds an explanation for a completely empty working directory during initial commit.

This change is effectively reverting 98bf8a47c296f51ea9722fef4bb81dbfb70cd4bb and replacing it by a cleaner version.

Signed-off-by: Jürgen Rühle <j-r@online.de>
---
  Junio C Hamano writes:
   > I think it is Ok to give hints for untracked files -- with
   > experience eyes will learn to ignore them but by then they do
   > not need hints.  Please send in a correction as appropriate.
  This should provide useful feedback for the nothing to commit case in any
  situation. It is how I should have done it initially. Sorry for wasting your
  time.
  Still missing:
   - Further changes to the header messages (as discussed on the list)
   - Patches to every other file that contains these messages verbatim
     (AFAICS this affects only the git-reset man page, tutorial-2 and the VIM
      syntax highlighting)
 wt-status.c |   21 ++++++++++++---------
 wt-status.h |    6 ++++--
 2 files changed, 16 insertions(+), 11 deletions(-)
diff --git a/wt-status.c b/wt-status.c
index c48127d..5190bde 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -47,10 +47,11 @@ void wt_status_prepare(struct wt_status *s)
 	s->reference = "HEAD";
 	s->amend = 0;
 	s->verbose = 0;
-	s->commitable = 0;
 	s->untracked = 0;
 
-	s->workdir_clean = 1;
+	s->commitable = 0;
+	s->workdir_dirty = 0;
+	s->workdir_untracked = 0;
 }
 
 static void wt_status_print_cached_header(const char *reference)
@@ -176,7 +177,7 @@ static void wt_status_print_changed_cb(struct diff_queue_struct *q,
 	struct wt_status *s = data;
 	int i;
 	if (q->nr) {
-		s->workdir_clean = 0;
+		s->workdir_dirty = 1;
 		wt_status_print_header("Changed but not added", use_add_msg);
 	}
 	for (i = 0; i < q->nr; i++)
@@ -263,7 +264,7 @@ static void wt_status_print_untracked(struct wt_status *s)
 				continue;
 		}
 		if (!shown_header) {
-			s->workdir_clean = 0;
+			s->workdir_untracked = 1;
 			wt_status_print_header("Untracked files", use_add_msg);
 			shown_header = 1;
 		}
@@ -311,12 +312,14 @@ void wt_status_print(struct wt_status *s)
 	if (!s->commitable) {
 		if (s->amend)
 			printf("# No changes\n");
-		else if (s->workdir_clean)
-			printf(s->is_initial
-			       ? "nothing to commit\n"
-			       : "nothing to commit (working directory matches HEAD)\n");
-		else
+		else if (s->workdir_dirty)
 			printf("no changes added to commit (use \"git add\" and/or \"git commit [-a|-i|-o]\")\n");
+		else if (s->workdir_untracked)
+			printf("nothing added to commit but untracked files present (use \"git add\" to track)\n");
+		else if (s->is_initial)
+			printf("nothing to commit (working directory is empty)\n");
+		else
+			printf("nothing to commit (working directory matches HEAD)\n");
 	}
 }
 
diff --git a/wt-status.h b/wt-status.h
index 892a86c..cfea4ae 100644
--- a/wt-status.h
+++ b/wt-status.h
@@ -12,11 +12,13 @@ struct wt_status {
 	int is_initial;
 	char *branch;
 	const char *reference;
-	int commitable;
 	int verbose;
 	int amend;
 	int untracked;
-	int workdir_clean;
+	/* These are computed during processing of the individual sections */
+	int commitable;
+	int workdir_dirty;
+	int workdir_untracked;
 };
 
 int git_status_config(const char *var, const char *value);
-- 
1.5.0.rc0.g525e
Previous: Junio C HamanoNext: Juergen Ruehle
Message 11 of 26 in “Suggest use of "git add file1 file2" when there is nothing to commit.”
  1. 1/2 Suggest use of "git add file1 file2" when there is nothing to commit.Shawn O. Pearce, Dec 16, 2006
  2. Michael LoefflerJan 5, 2007
  3. Junio C HamanoJan 5, 2007
  4. Junio C HamanoJan 6, 2007
  5. Juergen RuehleJan 6, 2007
  6. Junio C HamanoJan 6, 2007
  7. Juergen RuehleJan 6, 2007
  8. Junio C HamanoJan 8, 2007
  9. Juergen RuehleJan 8, 2007
  10. Junio C HamanoJan 8, 2007
  11. Provide better feedback for the untracked only case in status outputJuergen Ruehle, Jan 10, 2007
  12. Juergen RuehleJan 10, 2007
  13. Juergen RuehleJan 10, 2007
  14. Junio C HamanoJan 10, 2007
  15. Juergen RuehleJan 10, 2007
  16. Quick hack to avoid double qp encodingJuergen Ruehle, Jan 10, 2007
  17. Juergen RuehleJan 10, 2007
  18. Junio C HamanoJan 10, 2007
  19. Michael LoefflerJan 10, 2007
  20. Juergen RuehleJan 10, 2007
  21. Provide better feedback for the untracked only case in status outputJuergen Ruehle, Jan 10, 2007
  22. Jeff KingJan 10, 2007
  23. Juergen RuehleJan 11, 2007
  24. Juergen RuehleJan 6, 2007
  25. Michael LoefflerJan 8, 2007
  26. Juergen RuehleJan 9, 2007

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.