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

Re: [PATCH] display shortlog after git-commit

From
Junio C Hamano <junkio@cox.net>
Date
Apr 4, 2007, 08:15 UTC
Message-ID
<7vd52k7dxi.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<20070404070135.GF31984@mellanox.co.il>
"Michael S. Tsirkin" <mst@dev.mellanox.co.il> writes:
>> I actually find it awkward that author/summary information is never
>> shown during git commit - sometimes one does git commit
>> on a machine where GIT_AUTHOR_EMAIL has not been setup
>> correctly, and the result often is mst@mst-desktop.(none).

That is something that needs to be set up once. I do not think it justifies wasting three more lines (one of them being an empty line) per every commit.

Show 6 quoted lines
>> Or people sometimes forget that the first line will show up
>> in the pretty=short summary and the result is that what
>> ends up being there is just 2 first lines of the long description.
>>
>> One has to remember to always do git log --pretty=short
>> after commit to verify that one did get these details right.
Show 5 quoted lines
>> Ideas:
>> - Maybe have git-commit display shortlog summary for commit just created?
>
> Hopefully this will make people fix the git config up and amend their commits themselves.
> Does this sound like a good idea?

Maybe protect it with "[user] novice" in .git/config? Otherwise I think it gets too noisy once you get used to it.

I think reviewing and fixing is best done in the editor (that's why git-commit does not start reading from stdin when it expects you to type a log message, but gives you an editor), and pointing out a mistake after the fact, while it is probably better than not pointing out at all, is not all that useful. If there is no mistake, it is just an added noise, and if there is a mistake, the user needs to take another action (i.e. --amend) to correct it.

I think a much better thing you could do is to have a mode that the commit log message editor is started with something like this...

	----------------------------------------------------------------
	From: A U Thor <au.thor@example.com>
        Subject: << the summary of the commit comes here >>
        
	# << more detailed explanations come here >>
	# Please enter the commit message for your changes.
        # (comment lines starting with '#' will not be included)
	# On branch 'master'
        # Changes to be committed:
        # ...
	----------------------------------------------------------------

and teach git-commit to notice the first paragraph that is formatted like RFC2822 headers, and do appropriate things.

"Something like" this patch, although this time I have these two words in quotes because I know the part to unmunge the buffer needs more work.

diff --git a/git-commit.sh b/git-commit.sh
index 292cf96..d7a7b0b 100755
--- a/git-commit.sh
+++ b/git-commit.sh
@@ -546,10 +546,13 @@ else
 fi
 set_reflog_action "$rloga"
 
+summary_mark='<< the summary of the commit comes here >>'
 if test -z "$no_edit"
 then
 	{
+		echo "$summary_mark"
 		echo ""
+		echo "# << more detailed explanations come here >>"
 		echo "# Please enter the commit message for your changes."
 		echo "# (Comment lines starting with '#' will not be included)"
 		test -z "$only_include_assumed" || echo "$only_include_assumed"
@@ -579,7 +582,34 @@ case "$no_edit" in
 	esac
 	git-var GIT_AUTHOR_IDENT > /dev/null  || die
 	git-var GIT_COMMITTER_IDENT > /dev/null  || die
-	${VISUAL:-${EDITOR:-vi}} "$GIT_DIR/COMMIT_EDITMSG"
+	{
+		echo "From: $(expr "$(git-var GIT_AUTHOR_IDENT)" : '\(.*>\)')"
+		sed -e '1s/^/Subject: /' "$GIT_DIR/COMMIT_EDITMSG"
+		echo ""
+	} >"$GIT_DIR/COMMIT_EDITMSG+"
+	mv "$GIT_DIR/COMMIT_EDITMSG+" "$GIT_DIR/COMMIT_EDITMSG"
+	${VISUAL:-${EDITOR:-vi}} "$GIT_DIR/COMMIT_EDITMSG" || exit
+
+	AU=$(sed -n -e '
+		/^$/q
+		/^From: /{
+			s///p
+			q
+	}' "$GIT_DIR/COMMIT_EDITMSG")
+	if	test -n "$AU" &&
+		AN=$(expr "$AU" : '\(.*[^ ]\)  *<') &&
+		AE=$(expr "$AU" : '.*[^ ]  *<\(.*\)>$')
+	then
+		GIT_AUTHOR_NAME=$AN
+		GIT_AUTHOR_EMAIL=$AE
+		export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL
+	fi
+	sed -e '
+		/^From: /d
+		/^Subject: '"$summary_mark"'/d
+		s/^Subject: //
+	' "$GIT_DIR/COMMIT_EDITMSG" >"$GIT_DIR/COMMIT_EDITMSG+"
+	mv "$GIT_DIR/COMMIT_EDITMSG+" "$GIT_DIR/COMMIT_EDITMSG"
 	;;
 esac
 
Previous: Julian PhillipsNext: Michael S. Tsirkin
Message 46 of 70 in “have merge put FETCH_HEAD data in commit message”
  1. have merge put FETCH_HEAD data in commit messageMichael S. Tsirkin, Mar 21, 2007
  2. Junio C HamanoMar 21, 2007
  3. Michael S. TsirkinMar 22, 2007
  4. Junio C HamanoMar 22, 2007
  5. Michael S. TsirkinMar 22, 2007
  6. Junio C HamanoMar 22, 2007
  7. Michael S. TsirkinMar 22, 2007
  8. Junio C HamanoMar 22, 2007
  9. Michael S. TsirkinMar 22, 2007
  10. Junio C HamanoMar 22, 2007
  11. Michael S. TsirkinMar 22, 2007
  12. Junio C HamanoMar 24, 2007
  13. Michael S. TsirkinApr 4, 2007
  14. Junio C HamanoApr 4, 2007
  15. Michael S. TsirkinApr 4, 2007
  16. Shawn O. PearceApr 4, 2007
  17. Junio C HamanoApr 4, 2007
  18. Shawn O. PearceApr 4, 2007
  19. Junio C HamanoApr 4, 2007
  20. display shortlog after git-commitMichael S. Tsirkin, Apr 4, 2007
  21. Junio C HamanoApr 4, 2007
  22. display shortlog after git-commitMichael S. Tsirkin, Apr 15, 2007
  23. Junio C HamanoApr 15, 2007
  24. display the subject of the commit just madeMichael S. Tsirkin, Apr 16, 2007
  25. Junio C HamanoApr 16, 2007
  26. Michael S. TsirkinApr 16, 2007
  27. Junio C HamanoApr 16, 2007
  28. Michael S. TsirkinApr 16, 2007
  29. Junio C HamanoApr 16, 2007
  30. Michael S. TsirkinApr 16, 2007
  31. Michael S. TsirkinApr 16, 2007
  32. Junio C HamanoApr 16, 2007
  33. Shawn O. PearceApr 16, 2007
  34. Michael S. TsirkinApr 16, 2007
  35. Alex RiesenApr 16, 2007
  36. Junio C HamanoApr 16, 2007
  37. Michael S. TsirkinApr 16, 2007
  38. Junio C HamanoApr 16, 2007
  39. Michael S. TsirkinApr 16, 2007
  40. remove shortlog from git-commit outputMichael S. Tsirkin, Apr 16, 2007
  41. Julian PhillipsApr 16, 2007
  42. Michael S. TsirkinApr 16, 2007
  43. Julian PhillipsApr 16, 2007
  44. Michael S. TsirkinApr 17, 2007
  45. Julian PhillipsApr 17, 2007
  46. Junio C HamanoApr 4, 2007
  47. Michael S. TsirkinApr 15, 2007
  48. Junio C HamanoApr 15, 2007
  49. Michael S. TsirkinApr 15, 2007
  50. Andy ParkinsApr 15, 2007
  51. Michael S. TsirkinApr 15, 2007
  52. wt-status: show author info if status.showauthor is setJeff King, Apr 4, 2007
  53. Junio C HamanoApr 4, 2007
  54. Michael S. TsirkinApr 4, 2007
  55. Junio C HamanoApr 4, 2007
  56. Shawn O. PearceApr 4, 2007
  57. Jakub NarebskiApr 4, 2007
  58. Jakub NarebskiMar 23, 2007
  59. J. Bruce FieldsMar 23, 2007
  60. Jakub NarebskiMar 23, 2007
  61. J. Bruce FieldsMar 23, 2007
  62. Jakub NarebskiMar 24, 2007
  63. Put FETCH_HEAD data in merge commit messageMichael S. Tsirkin, Mar 22, 2007
  64. Junio C HamanoMar 22, 2007
  65. Jeff KingMar 22, 2007
  66. Junio C HamanoMar 22, 2007
  67. Jeff KingMar 22, 2007
  68. Andy ParkinsMar 22, 2007
  69. [PATCHv2] put FETCH_HEAD data in merge commit messageMichael S. Tsirkin, Mar 21, 2007
  70. Junio C HamanoMar 21, 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.