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@xxxxxxxxx> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@xxxxxx> Signed-off-by: Johannes Sixt <j6t@xxxxxxxx> --- Am 15.05.25 um 11:20 schrieb Oswald Buddenhagen: > On Wed, May 14, 2025 at 10:50:05PM +0200, Johannes Sixt wrote: >> However, we forgot > > "did not consider" would be more accurate. Fair enough. >> + # Strip leading and trailing empty lines >> > [...] however, it may make sense to add > another comment like "puts will re-add a trailing newline". I did that. >> + set msg [string trim $msg \n] lib/commit.tcl | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/commit.tcl b/lib/commit.tcl index a570f9cdc6a4..0c2be6f619cb 100644 --- a/lib/commit.tcl +++ b/lib/commit.tcl @@ -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. -- 2.49.0.212.gc22db56b11