On 02/02/21 05:26PM, Eric Sunshine wrote: > On Tue, Feb 2, 2021 at 3:07 PM Pratyush Yadav <me@xxxxxxxxxxxxxxxxx> wrote: > > The comment character is specified by the config variable > > 'core.commentchar'. Any lines starting with this character is considered > > a comment and should not be included in the final commit message. > > > > Teach git-gui to filter out lines in the commit message that start with > > the comment character. If the config is not set, '#' is taken as the > > default. > > Thanks. This shortcoming has bugged me for a long time. A few comments below... > > > Signed-off-by: Pratyush Yadav <me@xxxxxxxxxxxxxxxxx> > > --- > > diff --git a/lib/commit.tcl b/lib/commit.tcl > > @@ -209,6 +209,28 @@ You must stage at least 1 file before you can commit. > > set msg [string trim [$ui_comm get 1.0 end]] > > regsub -all -line {[ \t\r]+$} $msg {} msg > > + > > + # Remove lines starting with the comment character. > > + set comment_char [get_config core.commentchar] > > + if {[string length $comment_char] > 1} { > > + error_popup [mc "core.commitchar should only be one character."] > > + unlock_index > > + return > > + } > > + > > + if {$comment_char eq {}} { > > + set comment_char "#" > > + } > > + > > + # If the comment character is not alphabetical, then we need to escape it > > + # with a backslash to make sure it is not interpreted as a special character > > + # in the regex. > > + if {![string is alpha $comment_char]} { > > + set comment_char "\\$comment_char" > > + } > > + > > + regsub -all -line "$comment_char.*(\\n|\\Z)" $msg {} msg > > This regular expression is too loose. It will incorrectly change: > > line one > line # two > # line three > line four > > into: > > line one > line > line four > > You could fix it by anchoring the start of the match while being > careful not to lose the newline at the start of line. Perhaps like > this: > > regsub -all -line "(^|\\A)$comment_char.*(\\n|\\Z)" $msg {} msg Good catch! > > However, an even better approach than doing this manipulation manually > might be to pass the commit message through `git stripspace > --strip-comments` which will do the exact normalization that Git > itself does. That way, you don't have to worry about weird corner > cases. Also, using git-stripspace may allow you to get rid of the > existing `trim` and `regsub` which precede the new code you added. This is exactly what I was looking for when I was writing the patch but didn't manage to find it. Will re-roll. Thanks. -- Regards, Pratyush Yadav