]> git.ipfire.org Git - thirdparty/git.git/commitdiff
git-gui: do not end the commit message with an empty line
authorJohannes Sixt <j6t@kdbg.org>
Wed, 14 May 2025 20:41:30 +0000 (22:41 +0200)
committerJohannes Sixt <j6t@kdbg.org>
Thu, 15 May 2025 17:44:45 +0000 (19:44 +0200)
The commit message is processed to remove unnecessary empty lines.
In particular, it is ensured that the text ends with at most one LF
character. This one is always present, because the Tk text widget
ensures that is present.

However, did not consider that the processed text is written to the
commit message file using `puts`, which also appends a LF character,
so that the final commit message ends with two LF. Trim all trailing
LF characters, and while we are here, use `string trim`, which lets
us remove the leading LF in the same command.

Reported-by: Gareth Fenn <garethfenn@gmail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Signed-off-by: Johannes Sixt <j6t@kdbg.org>
lib/commit.tcl

index a570f9cdc6a406ef9482802e16c4489cc9873c2c..0c2be6f619cbc168ceac645191c299c60db61972 100644 (file)
@@ -214,12 +214,10 @@ You must stage at least 1 file before you can commit.
        global comment_string
        set cmt_rx [strcat {(^|\n)} [regsub -all {\W} $comment_string {\\&}] {[^\n]*}]
        regsub -all $cmt_rx $msg {\1} msg
-       # Strip leading empty lines
-       regsub {^\n*} $msg {} msg
+       # Strip leading and trailing empty lines (puts adds one \n)
+       set msg [string trim $msg \n]
        # Compress consecutive empty lines
        regsub -all {\n{3,}} $msg "\n\n" msg
-       # Strip trailing empty line
-       regsub {\n\n$} $msg "\n" msg
        if {$msg eq {}} {
                error_popup [mc "Please supply a commit message.