From: Pat Thoyts Date: Thu, 20 Oct 2016 10:07:24 +0000 (+0100) Subject: Merge branch 'os/preserve-author' into pu X-Git-Tag: gitgui-0.21.0~2 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/bfe43447fb78d64c1cdf4b2046032a399edc4011?hp=-c Merge branch 'os/preserve-author' into pu --- bfe43447fb78d64c1cdf4b2046032a399edc4011 diff --combined lib/commit.tcl index 01d2cc280b,1623897e0d..83620b7cbc --- a/lib/commit.tcl +++ b/lib/commit.tcl @@@ -2,7 -2,7 +2,7 @@@ # Copyright (C) 2006, 2007 Shawn Pearce proc load_last_commit {} { - global HEAD PARENT MERGE_HEAD commit_type ui_comm + global HEAD PARENT MERGE_HEAD commit_type ui_comm commit_author global repo_config if {[llength $PARENT] == 0} { @@@ -34,6 -34,8 +34,8 @@@ You are currently in the middle of a me lappend parents [string range $line 7 end] } elseif {[string match {encoding *} $line]} { set enc [string tolower [string range $line 9 end]] + } elseif {[regexp "author (.*)\\s<(.*)>\\s(\\d.*$)" $line all name email time]} { + set commit_author [list name $name email $email date $time] } } set msg [read $fd] @@@ -106,9 -108,10 +108,10 @@@ proc do_signoff {} } proc create_new_commit {} { - global commit_type ui_comm + global commit_type ui_comm commit_author set commit_type normal + unset -nocomplain commit_author $ui_comm delete 0.0 end $ui_comm edit reset $ui_comm edit modified false @@@ -322,11 -325,12 +325,12 @@@ proc commit_writetree {curHEAD msg_p} } proc commit_committree {fd_wt curHEAD msg_p} { - global HEAD PARENT MERGE_HEAD commit_type + global HEAD PARENT MERGE_HEAD commit_type commit_author global current_branch global ui_comm selected_commit_type global file_states selected_paths rescan_active global repo_config + global env gets $fd_wt tree_id if {[catch {close $fd_wt} err]} { @@@ -366,12 -370,12 +370,15 @@@ A rescan will be automatically started } } + if {[info exists commit_author]} { + set old_author [commit_author_ident $commit_author] + } # -- Create the commit. # set cmd [list commit-tree $tree_id] + if {[is_config_true commit.gpgsign]} { + lappend cmd -S + } foreach p [concat $PARENT $MERGE_HEAD] { lappend cmd -p $p } @@@ -381,8 -385,14 +388,14 @@@ error_popup [strcat [mc "commit-tree failed:"] "\n\n$err"] ui_status [mc "Commit failed."] unlock_index + unset -nocomplain commit_author + commit_author_reset $old_author return } + if {[info exists commit_author]} { + unset -nocomplain commit_author + commit_author_reset $old_author + } # -- Update the HEAD ref. # @@@ -509,3 -519,20 +522,20 @@@ proc commit_postcommit_wait {fd_ph cmt_ } fconfigure $fd_ph -blocking 0 } + + proc commit_author_ident {details} { + global env + array set author $details + set old [array get env GIT_AUTHOR_*] + set env(GIT_AUTHOR_NAME) $author(name) + set env(GIT_AUTHOR_EMAIL) $author(email) + set env(GIT_AUTHOR_DATE) $author(date) + return $old + } + proc commit_author_reset {details} { + global env + unset env(GIT_AUTHOR_NAME) env(GIT_AUTHOR_EMAIL) env(GIT_AUTHOR_DATE) + if {$details ne {}} { + array set env $details + } + }