git-gui: Correct toggling of added/untracked status for new files.

New files also lack index data from diff-files therefore we cannot use
their diff-files index data when we update-index.  Instead we can use
the fact that Git has them hardcoded as "0 0{40}" and do the same thing
ourselves.  This way you can toggle an untracked file into added status
and back out to untracked.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
maint
Shawn O. Pearce 2006-11-19 01:20:42 -05:00
parent 0d5709cf88
commit 51cc47feda
1 changed files with 5 additions and 2 deletions

View File

@ -1174,9 +1174,10 @@ proc short_path {path} {
} }


set next_icon_id 0 set next_icon_id 0
set null_sha1 [string repeat 0 40]


proc merge_state {path new_state {head_info {}} {index_info {}}} { proc merge_state {path new_state {head_info {}} {index_info {}}} {
global file_states next_icon_id global file_states next_icon_id null_sha1


set s0 [string index $new_state 0] set s0 [string index $new_state 0]
set s1 [string index $new_state 1] set s1 [string index $new_state 1]
@ -1197,7 +1198,9 @@ proc merge_state {path new_state {head_info {}} {index_info {}}} {
if {$s1 eq {?}} {set s1 [string index $state 1]} \ if {$s1 eq {?}} {set s1 [string index $state 1]} \
elseif {$s1 eq {_}} {set s1 _} elseif {$s1 eq {_}} {set s1 _}


if {$s0 ne {_} && [string index $state 0] eq {_} if {$s0 eq {A} && $s1 eq {_} && $head_info eq {}} {
set head_info [list 0 $null_sha1]
} elseif {$s0 ne {_} && [string index $state 0] eq {_}
&& $head_info eq {}} { && $head_info eq {}} {
set head_info $index_info set head_info $index_info
} }