Skip to content

Commit

Permalink
gitk: Make cherry-pick call git-citool on conflicts
Browse files Browse the repository at this point in the history
Now that git-gui has facilities to help users resolve
conflicts, it makes sense to launch it from other GUI
tools when they happen.

Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
  • Loading branch information
Alexander Gavrilov authored and Paul Mackerras committed Nov 7, 2008
1 parent 84a76f1 commit 15e3505
Showing 1 changed file with 39 additions and 1 deletion.
40 changes: 39 additions & 1 deletion gitk
Original file line number Diff line number Diff line change
Expand Up @@ -8088,6 +8088,32 @@ proc mkbrgo {top} {
}
}

proc exec_citool {tool_args {baseid {}}} {
global commitinfo env

set save_env [array get env GIT_AUTHOR_*]

if {$baseid ne {}} {
if {![info exists commitinfo($baseid)]} {
getcommit $baseid
}
set author [lindex $commitinfo($baseid) 1]
set date [lindex $commitinfo($baseid) 2]
if {[regexp {^\s*(\S.*\S|\S)\s*<(.*)>\s*$} \
$author author name email]
&& $date ne {}} {
set env(GIT_AUTHOR_NAME) $name
set env(GIT_AUTHOR_EMAIL) $email
set env(GIT_AUTHOR_DATE) $date
}
}

eval exec git citool $tool_args &

array unset env GIT_AUTHOR_*
array set env $save_env
}

proc cherrypick {} {
global rowmenuid curview
global mainhead mainheadid
Expand All @@ -8106,7 +8132,19 @@ proc cherrypick {} {
# no error occurs, and exec takes that as an indication of error...
if {[catch {exec sh -c "git cherry-pick -r $rowmenuid 2>&1"} err]} {
notbusy cherrypick
error_popup $err
if {[regexp -line \
{Entry '(.*)' would be overwritten by merge} $err msg fname]} {
error_popup [mc "Cherry-pick failed:
file '%s' had local modifications.
Please commit, reset or stash your changes." $fname]
} elseif {[regexp -line {^CONFLICT \(.*\):} $err msg]} {
# Force citool to read MERGE_MSG
file delete [file join [gitdir] "GITGUI_MSG"]
exec_citool {} $rowmenuid
} else {
error_popup $err
}
return
}
set newhead [exec git rev-parse HEAD]
Expand Down

0 comments on commit 15e3505

Please sign in to comment.