git-gui: remove lines starting with the comment character
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>
Pratyush Yadav committed
Feb 3, 2021 at 01:28 UTC
b9a43869c9f96d3577d6f568c1bda1940c8f0e31
2 files changed
+21
-2
git-gui.sh
+5
@@ -875,6 +875,7 @@ set default_config(merge.summary) false
875
set default_config(merge.verbosity) 2
876
set default_config(user.name) {}
877
set default_config(user.email) {}
878
+set default_config(core.commentchar) "#"
879
880
set default_config(gui.encoding) [encoding system]
881
set default_config(gui.matchtrackingbranch) false
@@ -3436,6 +3437,10 @@ proc trace_commit_type {varname args} {
3437
merge {set txt [mc "Merge Commit Message:"]}
3438
* {set txt [mc "Commit Message:"]}
3439
}
3440
+
3441
+ set comment_char [get_config core.commentchar]
3442
+ set txt [string cat $txt \
3443
+ [mc " (Lines starting with '$comment_char' will be ignored)"]]
3444
$ui_coml conf -text $txt
3445
}
3446
trace add variable commit_type write trace_commit_type
lib/commit.tcl
+16
-2
@@ -141,6 +141,20 @@ proc setup_commit_encoding {msg_wt {quiet 0}} {
141
}
142
}
143
144
+proc strip_msg {msg} {
145
+ set cmd [concat [list | ] [_git_cmd stripspace] --strip-comments]
146
+ _trace_exec $cmd
147
+ set fd [open $cmd r+]
148
+ fconfigure $fd -translation binary -encoding utf-8
149
+
150
+ puts -nonewline $fd $msg
151
+ close $fd w
152
+ set result [read $fd]
153
+ close $fd
154
+
155
+ return $result
156
+}
157
+
158
proc commit_tree {} {
159
global HEAD commit_type file_states ui_comm repo_config
160
global pch_error
@@ -207,8 +221,8 @@ You must stage at least 1 file before you can commit.
221
222
# -- A message is required.
223
#
210
- set msg [string trim [$ui_comm get 1.0 end]]
211
- regsub -all -line {[ \t\r]+$} $msg {} msg
224
+ set msg [strip_msg [$ui_comm get 1.0 end]]
225
+
226
if {$msg eq {}} {
227
error_popup [mc "Please supply a commit message.
228