[Junio: please do not pull the latest git-gui changes yet; they break on macOS, making git-gui unusable] On Thu, Feb 18, 2021 at 1:20 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 using git-stripspace. If the config is not set, > '#' is taken as the default. Also add a message educating users about > the comment character. Thanks for working on this. I've been looking forward to the improvement; the old behavior of not stripping comment lines has been a long-time annoyance. Unfortunately, however, the changes break git-gui badly on macOS. See below... > Signed-off-by: Pratyush Yadav <me@xxxxxxxxxxxxxxxxx> > --- > diff --git a/git-gui.sh b/git-gui.sh > @@ -3436,6 +3437,10 @@ proc trace_commit_type {varname args} { > + set comment_char [get_config core.commentchar] > + set txt [string cat $txt \ > + [mc " (Lines starting with '$comment_char' will be ignored)"]] The old Tcl 8.5.9 on macOS does not have a string `cat` method, so `string cat` crashes: can't set "commit_type": unknown or ambiguous subcommand "cat": must be bytelength, compare, equal, first, index, is, last, length, map, match, range, repeat, replace, reverse, tolower, totitle, toupper, trim, trimleft, trimright, wordend, or wordstart unknown or ambiguous subcommand "cat": must be bytelength, compare, equal, first, index, is, last, length, map, match, range, repeat, replace, reverse, tolower, totitle, toupper, trim, trimleft, trimright, wordend, or wordstart while executing "string cat $txt [mc " (Lines starting with '$comment_char' will be ignored)"]" > diff --git a/lib/commit.tcl b/lib/commit.tcl > @@ -141,6 +141,20 @@ proc setup_commit_encoding {msg_wt {quiet 0}} { > +proc strip_msg {msg} { > + set cmd [concat [list | ] [_git_cmd stripspace] --strip-comments] > + _trace_exec $cmd > + set fd [open $cmd r+] > + fconfigure $fd -translation binary -encoding utf-8 > + puts -nonewline $fd $msg > + close $fd w > + set result [read $fd] > + close $fd > + return $result > +} The old Tcl on macOS does not support closing one end of a bidirectional pipe, so `close $fd w` errors out: wrong # args: should be "close channelId" wrong # args: should be "close channelId" while executing "close $fd w" I'll send a patch which resolves both problems.