+
Skip to content

git-gui: strip the commit message after running commit-msg hook #12

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 45 additions & 22 deletions lib/commit.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -208,28 +208,6 @@ You must stage at least 1 file before you can commit.
# -- A message is required.
#
set msg [$ui_comm get 1.0 end]
# Strip trailing whitespace
regsub -all -line {[ \t\r]+$} $msg {} msg
# Strip comment lines
global comment_string
set cmt_rx [strcat {(^|\n)} [regsub -all {\W} $comment_string {\\&}] {[^\n]*}]
regsub -all $cmt_rx $msg {\1} msg
# Strip leading and trailing empty lines (puts adds one \n)
set msg [string trim $msg \n]
# Compress consecutive empty lines
regsub -all {\n{3,}} $msg "\n\n" msg
if {$msg eq {}} {
error_popup [mc "Please supply a commit message.

A good commit message has the following format:

- First line: Describe in one sentence what you did.
- Second line: Blank
- Remaining lines: Describe why this change is good.
"]
unlock_index
return
}

# -- Build the message file.
#
Expand Down Expand Up @@ -332,7 +310,52 @@ proc commit_commitmsg_wait {fd_ph curHEAD msg_p} {
fconfigure $fd_ph -blocking 0
}

proc wash_commit_message {msg} {
# Strip trailing whitespace
regsub -all -line {[ \t\r]+$} $msg {} msg
# Strip comment lines
global comment_string
set cmt_rx [strcat {(^|\n)} [regsub -all {\W} $comment_string {\\&}] {[^\n]*}]
regsub -all $cmt_rx $msg {\1} msg
# Strip leading and trailing empty lines (puts adds one \n)
set msg [string trim $msg \n]
# Compress consecutive empty lines
regsub -all {\n{3,}} $msg \n\n msg

return $msg
}

proc commit_writetree {curHEAD msg_p} {
# -- Process the commit message after hooks have run.
#
set msg_fd [safe_open_file $msg_p r]
setup_commit_encoding $msg_fd 1
set msg [read $msg_fd]
close $msg_fd

# Process the message (strip whitespace, comments, etc.)
set msg [wash_commit_message $msg]

if {$msg eq {}} {
error_popup [mc "Please supply a commit message.

A good commit message has the following format:

- First line: Describe in one sentence what you did.
- Second line: Blank
- Remaining lines: Describe why this change is good.
"]
unlock_index
return
}

# Write the processed message back to the file
set msg_wt [safe_open_file $msg_p w]
fconfigure $msg_wt -translation lf
setup_commit_encoding $msg_wt
puts $msg_wt $msg
close $msg_wt

ui_status [mc "Committing changes..."]
set fd_wt [git_read [list write-tree]]
fileevent $fd_wt readable \
Expand Down
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载