diff --git a/git-gui.sh b/git-gui.sh index 64c2ae30e7c..2d130faba45 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -654,7 +654,11 @@ proc show_diff {path w {lno {}}} { lappend cmd diff-index lappend cmd --cached } elseif {$w eq $ui_workdir} { - lappend cmd diff-files + if {[string index $m 0] eq {U}} { + lappend cmd diff + } else { + lappend cmd diff-files + } } lappend cmd -p @@ -1293,12 +1297,20 @@ proc display_file {path state} { set new_m [lindex $s 0] set icon_name [lindex $s 1] + set s [string index $new_m 0] + if {$s eq {U}} { + set s _ + } display_file_helper $ui_index $path $icon_name \ - [string index $old_m 0] \ - [string index $new_m 0] + [string index $old_m 0] $s + + if {[string index $new_m 0] eq {U}} { + set s U + } else { + set s [string index $new_m 1] + } display_file_helper $ui_workdir $path $icon_name \ - [string index $old_m 1] \ - [string index $new_m 1] + [string index $old_m 1] $s if {$new_m eq {__}} { unset file_states($path) @@ -1338,13 +1350,20 @@ proc display_all_files {} { set m [lindex $s 0] set icon_name [lindex $s 1] - if {[string index $m 0] ne {_}} { + set s [string index $m 0] + if {$s ne {U} && $s ne {_}} { display_all_files_helper $ui_index $path \ - $icon_name [string index $m 0] + $icon_name $s } - if {[string index $m 1] ne {_}} { + + if {[string index $m 0] eq {U}} { + set s U + } else { + set s [string index $m 1] + } + if {$s ne {_}} { display_all_files_helper $ui_workdir $path \ - $icon_name [string index $m 1] + $icon_name $s } } @@ -1479,7 +1498,13 @@ proc write_update_index {fd pathList totalCnt batch msg after} { ?D {set new D_} _O - AM {set new A_} - U_ - + U? { + if {[file exists $path]} { + set new M_ + } else { + set new D_ + } + } ?M {set new M_} ?? {continue} } @@ -2244,6 +2269,7 @@ set all_icons(U$ui_index) file_merge set all_icons(_$ui_workdir) file_plain set all_icons(M$ui_workdir) file_mod set all_icons(D$ui_workdir) file_question +set all_icons(U$ui_workdir) file_merge set all_icons(O$ui_workdir) file_plain set max_status_desc 0 @@ -2265,6 +2291,7 @@ foreach i { {DO "Staged for removal, still present"} {U_ "Requires merge resolution"} + {UU "Requires merge resolution"} {UM "Requires merge resolution"} {UD "Requires merge resolution"} } {