git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2] git-gui: remove lines starting with the comment character

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Feb 28, 2021, 23:00 UTC
Message-ID
<CAPig+cT-sfgMDi9-6AEKF85NtOiXeqddJjk-pYuhDtTVAE-UEw@mail.gmail.com>
In-Reply-To
<20210218181937.83419-1-me@yadavpratyush.com>

[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@yadavpratyush.com> wrote:
Show 8 quoted lines
> 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...
Show 7 quoted lines
> Signed-off-by: Pratyush Yadav <me@yadavpratyush.com>
> ---
> 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)"]"
Show 13 quoted lines
> 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.
Previous: Pratyush Yadav
Message 3 of 3 in “git-gui: remove lines starting with the comment character”
  1. git-gui: remove lines starting with the comment characterPratyush Yadav, Feb 18, 2021
  2. Pratyush YadavFeb 22, 2021
  3. Eric SunshineFeb 28, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.