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

Re: [PATCH] Invert numbers and names in the git-shortlog summary mode.

From
Junio C Hamano <gitster@pobox.com>
Date
Dec 11, 2007, 18:09 UTC
Message-ID
<7vr6htdry7.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<alpine.LFD.0.99999.0712111032530.555@xanadu.home>
Nicolas Pitre <nico@cam.org> writes:
Show 7 quoted lines
> On Tue, 11 Dec 2007, Pierre Habouzit wrote:
> ...
>> Sometimes history hurts :) I don't think there is much we can do on a
>> short timescale. Maybe the old way can be slowly deprecated, and then
>> git-shortlog will be able to act like git-log.
>
> At least, HEAD could be assumed by default when stdin is a tty.
I'd say I agree.

-- >8 -- shortlog: default ot HEAD when standard input is a tty

Instead of warning the user that it is expecting git log output from the standard input (and instructing to type the log from the keyboard), default to traverse from HEAD when there is no rev parameter given.

This factors out a useful helper "add_head()" from builtin-diff.c to a more appropriate place revision.c while renaming it to more descriptive name add_head_to_pending(), as that is what the function is about.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 builtin-shortlog.c |    5 +++--
 builtin-diff.c     |   14 +-------------
 builtin-log.c      |    5 +----
 revision.c         |   12 ++++++++++++
 revision.h         |    2 ++
 5 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/builtin-shortlog.c b/builtin-shortlog.c
index 90666cb..3d8d709 100644
--- a/builtin-shortlog.c
+++ b/builtin-shortlog.c
@@ -249,9 +249,10 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix)
 
 	read_mailmap(&mailmap, ".mailmap", &common_repo_prefix);
 
+	/* assume HEAD if from a tty */
+	if (!rev.pending.nr && isatty(0))
+		add_head_to_pending(&rev);
 	if (rev.pending.nr == 0) {
-		if (isatty(0))
-			fprintf(stderr, "(reading log to summarize from standard input)\n");
 		read_from_stdin(&list);
 	}
 	else
diff --git a/builtin-diff.c b/builtin-diff.c
index 1b61599..55fb84c 100644
--- a/builtin-diff.c
+++ b/builtin-diff.c
@@ -176,18 +176,6 @@ static int builtin_diff_combined(struct rev_info *revs,
 	return 0;
 }
 
-void add_head(struct rev_info *revs)
-{
-	unsigned char sha1[20];
-	struct object *obj;
-	if (get_sha1("HEAD", sha1))
-		return;
-	obj = parse_object(sha1);
-	if (!obj)
-		return;
-	add_pending_object(revs, obj, "HEAD");
-}
-
 static void refresh_index_quietly(void)
 {
 	struct lock_file *lock_file;
@@ -272,7 +260,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
 			if (!strcmp(arg, "--"))
 				break;
 			else if (!strcmp(arg, "--cached")) {
-				add_head(&rev);
+				add_head_to_pending(&rev);
 				if (!rev.pending.nr)
 					die("No HEAD commit to compare with (yet)");
 				break;
diff --git a/builtin-log.c b/builtin-log.c
index e1f1cf6..d375c9d 100644
--- a/builtin-log.c
+++ b/builtin-log.c
@@ -18,9 +18,6 @@
 static int default_show_root = 1;
 static const char *fmt_patch_subject_prefix = "PATCH";
 
-/* this is in builtin-diff.c */
-void add_head(struct rev_info *revs);
-
 static void add_name_decoration(const char *prefix, const char *name, struct object *obj)
 {
 	int plen = strlen(prefix);
@@ -746,7 +743,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
 			 * does not have.
 			 */
 			rev.pending.objects[0].item->flags |= UNINTERESTING;
-			add_head(&rev);
+			add_head_to_pending(&rev);
 		}
 		/*
 		 * Otherwise, it is "format-patch -22 HEAD", and/or
diff --git a/revision.c b/revision.c
index 2a59035..7e2f4f1 100644
--- a/revision.c
+++ b/revision.c
@@ -139,6 +139,18 @@ void add_pending_object(struct rev_info *revs, struct object *obj, const char *n
 	add_pending_object_with_mode(revs, obj, name, S_IFINVALID);
 }
 
+void add_head_to_pending(struct rev_info *revs)
+{
+	unsigned char sha1[20];
+	struct object *obj;
+	if (get_sha1("HEAD", sha1))
+		return;
+	obj = parse_object(sha1);
+	if (!obj)
+		return;
+	add_pending_object(revs, obj, "HEAD");
+}
+
 static struct object *get_reference(struct rev_info *revs, const char *name, const unsigned char *sha1, unsigned int flags)
 {
 	struct object *object;
diff --git a/revision.h b/revision.h
index 992e1e9..8572315 100644
--- a/revision.h
+++ b/revision.h
@@ -130,6 +130,8 @@ extern void add_object(struct object *obj,
 
 extern void add_pending_object(struct rev_info *revs, struct object *obj, const char *name);
 
+extern void add_head_to_pending(struct rev_info *);
+
 enum commit_action {
 	commit_ignore,
 	commit_show,
Previous: Nicolas PitreNext: Ingo Molnar
Message 29 of 36 in “git-bisect feature suggestion: "git-bisect diff"”
  1. Ingo MolnarDec 7, 2007
  2. Junio C HamanoDec 7, 2007
  3. Junio C HamanoDec 7, 2007
  4. Ingo MolnarDec 7, 2007
  5. Junio C HamanoDec 7, 2007
  6. Ingo MolnarDec 7, 2007
  7. Jeff KingDec 7, 2007
  8. Jeff KingDec 7, 2007
  9. Junio C HamanoDec 7, 2007
  10. Jeff KingDec 7, 2007
  11. Junio C HamanoDec 7, 2007
  12. Jeff KingDec 7, 2007
  13. Junio C HamanoDec 8, 2007
  14. Christian CouderDec 8, 2007
  15. Ingo MolnarDec 8, 2007
  16. git-bisect run make -j64 kernel/ (was Re: git-bisect feature suggestion: "git-bisect diff")Christian Couder, Dec 9, 2007
  17. Ingo MolnarDec 12, 2007
  18. Ingo MolnarDec 11, 2007
  19. Pierre HabouzitDec 11, 2007
  20. Jakub NarebskiDec 11, 2007
  21. Pierre HabouzitDec 11, 2007
  22. Jeff KingDec 11, 2007
  23. Jeff KingDec 11, 2007
  24. Ingo MolnarDec 11, 2007
  25. Invert numbers and names in the git-shortlog summary mode.Pierre Habouzit, Dec 11, 2007
  26. Ingo MolnarDec 11, 2007
  27. Pierre HabouzitDec 11, 2007
  28. Nicolas PitreDec 11, 2007
  29. Junio C HamanoDec 11, 2007
  30. Ingo MolnarDec 11, 2007
  31. Pierre HabouzitDec 11, 2007
  32. Pierre HabouzitDec 11, 2007
  33. Ingo MolnarDec 11, 2007
  34. Junio C HamanoDec 11, 2007
  35. Junio C HamanoDec 11, 2007
  36. Ingo MolnarDec 11, 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.