From: Gustaf Hendeby Date: Fri, 22 Aug 2008 20:10:27 +0000 (+0200) Subject: git-gui: Teach git gui about file type changes X-Git-Tag: v1.6.1-rc1~3^2~73 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=e681cb7d6a00b4860c84bf8ca7b8d8dab366c9fc;p=git.git git-gui: Teach git gui about file type changes Signed-off-by: Gustaf Hendeby Signed-off-by: Shawn O. Pearce --- diff --git a/git-gui.sh b/git-gui.sh index ad65aaad5..8ad6567ed 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -1619,6 +1619,15 @@ static unsigned char file_merge_bits[] = { 0xfa, 0x17, 0x02, 0x10, 0xfe, 0x1f}; } -maskdata $filemask +image create bitmap file_statechange -background white -foreground green -data { +#define file_merge_width 14 +#define file_merge_height 15 +static unsigned char file_statechange_bits[] = { + 0xfe, 0x01, 0x02, 0x03, 0x02, 0x05, 0x02, 0x09, 0x02, 0x1f, 0x62, 0x10, + 0x62, 0x10, 0xba, 0x11, 0xba, 0x11, 0x62, 0x10, 0x62, 0x10, 0x02, 0x10, + 0x02, 0x10, 0x02, 0x10, 0xfe, 0x1f}; +} -maskdata $filemask + set ui_index .vpane.files.index.list set ui_workdir .vpane.files.workdir.list @@ -1627,12 +1636,14 @@ set all_icons(A$ui_index) file_fulltick set all_icons(M$ui_index) file_fulltick set all_icons(D$ui_index) file_removed set all_icons(U$ui_index) file_merge +set all_icons(T$ui_index) file_statechange 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 all_icons(T$ui_workdir) file_statechange set max_status_desc 0 foreach i { @@ -1643,6 +1654,9 @@ foreach i { {MM {mc "Portions staged for commit"}} {MD {mc "Staged for commit, missing"}} + {_T {mc "File type changed, not staged"}} + {T_ {mc "File type changed, staged"}} + {_O {mc "Untracked, not staged"}} {A_ {mc "Staged for commit"}} {AM {mc "Portions staged for commit"}} @@ -2757,7 +2771,9 @@ proc popup_diff_menu {ctxm x y X Y} { if {$::is_3way_diff || $current_diff_path eq {} || ![info exists file_states($current_diff_path)] - || {_O} eq [lindex $file_states($current_diff_path) 0]} { + || {_O} eq [lindex $file_states($current_diff_path) 0] + || {_T} eq [lindex $file_states($current_diff_path) 0] + || {T_} eq [lindex $file_states($current_diff_path) 0]} { set s disabled } else { set s normal diff --git a/lib/commit.tcl b/lib/commit.tcl index 40a710355..f4ab70784 100644 --- a/lib/commit.tcl +++ b/lib/commit.tcl @@ -149,6 +149,7 @@ The rescan will be automatically started now. _? {continue} A? - D? - + T_ - M? {set files_ready 1} U? { error_popup [mc "Unmerged files cannot be committed. @@ -428,6 +429,7 @@ A rescan will be automatically started now. __ - A_ - M_ - + T_ - D_ { unset file_states($path) catch {unset selected_paths($path)} diff --git a/lib/index.tcl b/lib/index.tcl index 3c1fce747..7c27f2af6 100644 --- a/lib/index.tcl +++ b/lib/index.tcl @@ -99,6 +99,7 @@ proc write_update_indexinfo {fd pathList totalCnt batch after} { switch -glob -- [lindex $s 0] { A? {set new _O} M? {set new _M} + T_ {set new _T} D_ {set new _D} D? {set new _?} ?? {continue} @@ -162,6 +163,7 @@ proc write_update_index {fd pathList totalCnt batch after} { ?D {set new D_} _O - AM {set new A_} + _T {set new T_} U? { if {[file exists $path]} { set new M_ @@ -231,6 +233,7 @@ proc write_checkout_index {fd pathList totalCnt batch after} { switch -glob -- [lindex $file_states($path) 0] { U? {continue} ?M - + ?T - ?D { puts -nonewline $fd "[encoding convertto $path]\0" display_file $path ?_ @@ -252,6 +255,7 @@ proc unstage_helper {txt paths} { switch -glob -- [lindex $file_states($path) 0] { A? - M? - + T_ - D? { lappend pathList $path if {$path eq $current_diff_path} { @@ -296,6 +300,7 @@ proc add_helper {txt paths} { _O - ?M - ?D - + ?T - U? { lappend pathList $path if {$path eq $current_diff_path} { @@ -336,6 +341,7 @@ proc do_add_all {} { switch -glob -- [lindex $file_states($path) 0] { U? {continue} ?M - + ?T - ?D {lappend paths $path} } } @@ -353,6 +359,7 @@ proc revert_helper {txt paths} { switch -glob -- [lindex $file_states($path) 0] { U? {continue} ?M - + ?T - ?D { lappend pathList $path if {$path eq $current_diff_path} {