* [PATCH] git-gui: heed core.commentChar/commentString
@ 2025-03-15 14:09 Oswald Buddenhagen
2025-03-16 10:22 ` Johannes Sixt
0 siblings, 1 reply; 3+ messages in thread
From: Oswald Buddenhagen @ 2025-03-15 14:09 UTC (permalink / raw)
To: git; +Cc: Johannes Sixt
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
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] git-gui: heed core.commentChar/commentString
2025-03-15 14:09 [PATCH] git-gui: heed core.commentChar/commentString Oswald Buddenhagen
@ 2025-03-16 10:22 ` Johannes Sixt
2025-03-16 10:27 ` Oswald Buddenhagen
0 siblings, 1 reply; 3+ messages in thread
From: Johannes Sixt @ 2025-03-16 10:22 UTC (permalink / raw)
To: Oswald Buddenhagen; +Cc: git
Am 15.03.25 um 15:09 schrieb Oswald Buddenhagen:
> 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.
See below.
> ---
> 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]
> + }
Taking care of both forms. Good!
> }
>
> 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
Like you said in the introduction, this does look messy. Would you
approve that I remove this hunk while queuing?
> 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]*}]
This escapes all non-word characters so that they lose their special
meaning in a regular expression. Good.
> + regsub -all $cmt_rx $msg {\1} msg
> # Strip leading empty lines
> regsub {^\n*} $msg {} msg
> # Compress consecutive empty lines
Thank you very much!
-- Hannes
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] git-gui: heed core.commentChar/commentString
2025-03-16 10:22 ` Johannes Sixt
@ 2025-03-16 10:27 ` Oswald Buddenhagen
0 siblings, 0 replies; 3+ messages in thread
From: Oswald Buddenhagen @ 2025-03-16 10:27 UTC (permalink / raw)
To: Johannes Sixt; +Cc: git
On Sun, Mar 16, 2025 at 11:22:12AM +0100, Johannes Sixt wrote:
>Am 15.03.25 um 15:09 schrieb Oswald Buddenhagen:
>> + append txt [mc " (Lines starting with '%s' will be discarded)" $comment_string]
>
>Like you said in the introduction, this does look messy. Would you
>approve that I remove this hunk while queuing?
>
yep, go ahead!
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-03-16 11:02 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-15 14:09 [PATCH] git-gui: heed core.commentChar/commentString Oswald Buddenhagen
2025-03-16 10:22 ` Johannes Sixt
2025-03-16 10:27 ` Oswald Buddenhagen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).