]> asedeno.scripts.mit.edu Git - git.git/blobdiff - lib/merge.tcl
git-gui: show unstaged symlinks in diff viewer
[git.git] / lib / merge.tcl
index f6a2df3c064b3132d7607211656a7aee53638881..0e50919d4c272e1e071e08c58b30d2c688c8d111 100644 (file)
@@ -90,9 +90,6 @@ method _start {} {
 
        set spec [$w_rev get_tracking_branch]
        set cmit [$w_rev get_commit]
-       set cmd [list git]
-       lappend cmd merge
-       lappend cmd --strategy=recursive
 
        set fh [open [gitdir FETCH_HEAD] w]
        fconfigure $fh -translation lf
@@ -112,9 +109,12 @@ method _start {} {
        puts $fh "$cmit\t\tbranch '$branch' of $remote"
        close $fh
 
+       set cmd [list git]
+       lappend cmd merge
+       lappend cmd --strategy=recursive
        lappend cmd [git fmt-merge-msg <[gitdir FETCH_HEAD]]
        lappend cmd HEAD
-       lappend cmd $cmit
+       lappend cmd $name
 
        set msg "Merging $current_branch and $stitle"
        ui_status "$msg..."
@@ -233,10 +233,10 @@ Continue with resetting the current changes?"
        }
 
        if {[ask_popup $op_question] eq {yes}} {
-               set fd [git_read read-tree --reset -u HEAD]
+               set fd [git_read --stderr read-tree --reset -u -v HEAD]
                fconfigure $fd -blocking 0 -translation binary
                fileevent $fd readable [namespace code [list _reset_wait $fd]]
-               ui_status {Aborting... please wait...}
+               $::main_status start {Aborting} {files reset}
        } else {
                unlock_index
        }
@@ -245,9 +245,12 @@ Continue with resetting the current changes?"
 proc _reset_wait {fd} {
        global ui_comm
 
-       read $fd
+       $::main_status update_meter [read $fd]
+
+       fconfigure $fd -blocking 1
        if {[eof $fd]} {
-               close $fd
+               set fail [catch {close $fd} err]
+               $::main_status stop
                unlock_index
 
                $ui_comm delete 0.0 end
@@ -259,7 +262,12 @@ proc _reset_wait {fd} {
                catch {file delete [gitdir MERGE_MSG]}
                catch {file delete [gitdir GITGUI_MSG]}
 
+               if {$fail} {
+                       warn_popup "Abort failed.\n\n$err"
+               }
                rescan {ui_status {Abort completed.  Ready.}}
+       } else {
+               fconfigure $fd -blocking 0
        }
 }