"Michael S. Tsirkin" <mst@xxxxxxxxxxxxxxxxxx> 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. >> 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. >> 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@xxxxxxxxxxx> 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 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html