summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPratyush Yadav <me@yadavpratyush.com>2021-02-22 20:19:53 +0530
committerPratyush Yadav <me@yadavpratyush.com>2021-02-22 20:19:53 +0530
commitb1056f60b63f1bc8226d01881bc829e171fc78bf (patch)
tree980c9403b749b7f9c5d8b99d271c94c695ffc540
parent7da7ef6d7a2139699e2d25d7f4e679327bffa107 (diff)
parentb9a43869c9f96d3577d6f568c1bda1940c8f0e31 (diff)
downloadgit-b1056f60b63f1bc8226d01881bc829e171fc78bf.tar.gz
Merge branch 'py/commit-comments'
Use git-stripspace to remove comment lines from the commit message. Also use it to clean up whitespace instead of rolling our own logic. * py/commit-comments: git-gui: remove lines starting with the comment character
-rwxr-xr-xgit-gui.sh5
-rw-r--r--lib/commit.tcl18
2 files changed, 21 insertions, 2 deletions
diff --git a/git-gui.sh b/git-gui.sh
index 201524c34e..236bc4e61d 100755
--- a/git-gui.sh
+++ b/git-gui.sh
@@ -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
diff --git a/lib/commit.tcl b/lib/commit.tcl
index 11379f8ad3..23d67d4651 100644
--- 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
+}
+
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.