From: Bert Wesarg Date: Tue, 30 Nov 2010 22:21:31 GMT Subject: [PATCH/RFC] git-gui: disable (un)staging for files with typechange flags Message-ID: <50fc511f363e8b13b9b1a27db71136d262c95f0d.1291155371.git.bert.wesarg@googlemail.com> This covers also the case for newly added files in the index. Like this: echo bar >foo git add foo rm foo ln -s bar foo This will result in an state of AT. And for cases where the type change is staged, and the new type was modified after the staging. Like this (cont.): git add foo git commit -mfoo rm foo echo bar >foo git add foo echo baz >foo Will result in an state of TM for foo. Signed-off-by: Bert Wesarg --- git-gui.sh | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/git-gui.sh b/git-gui.sh index 38362fa..1bebcf1 100755 --- a/git-gui.sh +++ b/git-gui.sh @@ -1993,7 +1993,9 @@ foreach i { {MD {mc "Staged for commit, missing"}} {_T {mc "File type changed, not staged"}} + {AT {mc "File type changed, old type staged for commit"}} {T_ {mc "File type changed, staged"}} + {TM {mc "Staged file type change, modification not staged"}} {_O {mc "Untracked, not staged"}} {A_ {mc "Staged for commit"}} @@ -3533,8 +3535,8 @@ proc popup_diff_menu {ctxm ctxmmg ctxmsm x y X Y} { || $current_diff_path eq {} || {__} eq $state || {_O} eq $state - || {_T} eq $state - || {T_} eq $state + || [string match {?T} $state] + || [string match {T?} $state] || [has_textconv $current_diff_path]} { set s disabled } else { -- 1.7.3.2.1200.ge4bf6