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

[PATCH] git-gui: heed core.commentChar/commentString

From
Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Date
Mar 15, 2025, 14:09 UTC
Message-ID
<20250315140913.577422-1-oswald.buddenhagen@gmx.de>

This amends 1ae85ff6d (git-gui: strip comments and consecutive empty lines from commit messages, 2024-08-13) to deal with custom comment characters/strings.

The magic commentString value "auto" is not handled, because the option makes no sense to me - it does not support comments in templates and hook output, and it seems far-fetched that someone would introduce comments during editing the message.

Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Change-Id: Iafc0580e818cb5058cfacbafe6e5da40679a1b1c
--
Cc: Johannes Sixt <j6t@kdbg.org>
the textfield label munging is modeled after b9a43869c9 (without
introducing the same compatibility problem with tcl 8.5), but i'm not
positive it's actually a good idea to have it - it looks a bit messy,
while providing info that the command line client assumes to be known.
---
 git-gui/git-gui.sh     | 11 ++++++++++-
 git-gui/lib/commit.tcl |  4 +++-
 2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
index 887d6d596c..ed14ba679b 100755
--- a/git-gui/git-gui.sh
+++ b/git-gui/git-gui.sh
@@ -880,16 +880,24 @@ proc apply_config {} {
 			color::sync_with_theme
 		}
 	}
+
+	global comment_string
+	set comment_string [get_config core.commentstring]
+	if {$comment_string eq {}} {
+		set comment_string [get_config core.commentchar]
+	}
 }
 
 set default_config(branch.autosetupmerge) true
 set default_config(merge.tool) {}
 set default_config(mergetool.keepbackup) true
 set default_config(merge.diffstat) true
 set default_config(merge.summary) false
 set default_config(merge.verbosity) 2
 set default_config(user.name) {}
 set default_config(user.email) {}
+set default_config(core.commentchar) "#"
+set default_config(core.commentstring) {}
 
 set default_config(gui.encoding) [encoding system]
 set default_config(gui.matchtrackingbranch) false
@@ -3416,15 +3424,16 @@ ${NS}::label $ui_coml \
 	-anchor w \
 	-justify left
 proc trace_commit_type {varname args} {
-	global ui_coml commit_type
+	global ui_coml commit_type comment_string
 	switch -glob -- $commit_type {
 	initial       {set txt [mc "Initial Commit Message:"]}
 	amend         {set txt [mc "Amended Commit Message:"]}
 	amend-initial {set txt [mc "Amended Initial Commit Message:"]}
 	amend-merge   {set txt [mc "Amended Merge Commit Message:"]}
 	merge         {set txt [mc "Merge Commit Message:"]}
 	*             {set txt [mc "Commit Message:"]}
 	}
+	append txt [mc " (Lines starting with '%s' will be discarded)" $comment_string]
 	$ui_coml conf -text $txt
 }
 trace add variable commit_type write trace_commit_type
diff --git a/git-gui/lib/commit.tcl b/git-gui/lib/commit.tcl
index 208dc2817c..a570f9cdc6 100644
--- a/git-gui/lib/commit.tcl
+++ b/git-gui/lib/commit.tcl
@@ -211,7 +211,9 @@ You must stage at least 1 file before you can commit.
 	# Strip trailing whitespace
 	regsub -all -line {[ \t\r]+$} $msg {} msg
 	# Strip comment lines
-	regsub -all {(^|\n)#[^\n]*} $msg {\1} msg
+	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
 	# Compress consecutive empty lines
-- 
2.49.0.416.g2f302f2ef0.dirty
Next: Johannes Sixt
Message 1 of 3 in “git-gui: heed core.commentChar/commentString”
  1. git-gui: heed core.commentChar/commentStringOswald Buddenhagen, Mar 15, 2025
  2. Johannes SixtMar 16, 2025
  3. Oswald BuddenhagenMar 16, 2025

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.