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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxx>
> Change-Id: Iafc0580e818cb5058cfacbafe6e5da40679a1b1c
> 
> --
> 
> Cc: Johannes Sixt <j6t@xxxxxxxx>
> 
> 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





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux