]> git.ipfire.org Git - thirdparty/git.git/commitdiff
git-gui: remove lines starting with the comment character
authorPratyush Yadav <me@yadavpratyush.com>
Tue, 2 Feb 2021 19:58:12 +0000 (01:28 +0530)
committerPratyush Yadav <me@yadavpratyush.com>
Thu, 18 Feb 2021 18:05:57 +0000 (23:35 +0530)
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.

Signed-off-by: Pratyush Yadav <me@yadavpratyush.com>
git-gui.sh
lib/commit.tcl

index 201524c34edac053f908c927a00270a7b1fdc09a..236bc4e61dc81d20bc81369a1954bfb8bc4aaa76 100755 (executable)
@@ -875,6 +875,7 @@ 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(gui.encoding) [encoding system]
 set default_config(gui.matchtrackingbranch) false
@@ -3436,6 +3437,10 @@ proc trace_commit_type {varname args} {
        merge         {set txt [mc "Merge Commit Message:"]}
        *             {set txt [mc "Commit Message:"]}
        }
+
+       set comment_char [get_config core.commentchar]
+       set txt [string cat $txt \
+                                [mc " (Lines starting with '$comment_char' will be ignored)"]]
        $ui_coml conf -text $txt
 }
 trace add variable commit_type write trace_commit_type
index 11379f8ad355e2ea2a7cf1645bc31543508731ab..23d67d46519612a2496d2f9764473a9d1b76f277 100644 (file)
@@ -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
+}
+
 proc commit_tree {} {
        global HEAD commit_type file_states ui_comm repo_config
        global pch_error
@@ -207,8 +221,8 @@ You must stage at least 1 file before you can commit.
 
        # -- A message is required.
        #
-       set msg [string trim [$ui_comm get 1.0 end]]
-       regsub -all -line {[ \t\r]+$} $msg {} msg
+       set msg [strip_msg [$ui_comm get 1.0 end]]
+
        if {$msg eq {}} {
                error_popup [mc "Please supply a commit message.