On Sun, Feb 28, 2021 at 6:12 PM Eric Sunshine <sunshine@xxxxxxxxxxxxxx> wrote: > git-gui was recently enhanced to remove comment lines from the commit > message similar to the way git-commit does so (see `core.commentchar` > and `git-stripspace`). Unfortunately, that change employs features which > are unavailable in older versions of Tcl, such as 8.5.9 which is shipped > with macOS (10.13), with the result that the commit operation errors > out. > > There are two problems. First, to add a new informational message to the > main window, it invokes string method `cat` which does not exist in > older Tcl. Fix this by using `append` instead. > > Second, when passing the commit message through git-stripspace, it > closes the "write" side of the bidirectional pipe after sending the > commit message to git-stripspace in order to avoid deadlock before > reading back the result, however the ability to close only one end of a > pipe is not present in older Tcl. Fix this by employing a temporary file > to received the output of git-stripspace. s/received/receive/ (I noticed this immediately after sending the patch, of course.) > Signed-off-by: Eric Sunshine <sunshine@xxxxxxxxxxxxxx> > --- > diff --git a/lib/commit.tcl b/lib/commit.tcl > @@ -142,16 +142,18 @@ proc setup_commit_encoding {msg_wt {quiet 0}} { > proc strip_msg {msg} { > - set cmd [concat [list | ] [_git_cmd stripspace] --strip-comments] > + set strip_p [gitdir GITGUI_EDITMSG_STRIP] > + set cmd [concat [list | ] [_git_cmd stripspace] --strip-comments [list >$strip_p]] > _trace_exec $cmd > - set fd [open $cmd r+] > + set fd [open $cmd w] > fconfigure $fd -translation binary -encoding utf-8 > - > puts -nonewline $fd $msg > - close $fd w > - set result [read $fd] > close $fd > > + set fd [open $strip_p r] I had meant to insert: fconfigure $fd -translation binary -encoding utf-8 here but forgot. Would you like me to resend the patch or can you tweak it locally? > + set result [read $fd] > + close $fd > + file delete $strip_p > return $result > }