From: Mark Levedahl Date: Thu, 16 Aug 2007 01:08:35 GMT Subject: [PATCH] gitk: Fix warning when removing a branch (take 2) Message-ID: <11872265153600-git-send-email-mdl123@verizon.net> Issue a warning about branch deletion unless gitk knows by name at least two branch heads pointing to the referenced commit. Signed-off-by: Mark Levedahl --- Paul - your commit b1054ac98 did not solve this for me. Playing around, I've several times received errors like this when trying to delete a branch: can't read "idheads(f7b9ebd595c954cd0803e6b6f1f0f96a966e04c9 a890c4fca84a2a5c7835fe6432ede3e7c4e5426b)": no such element in array can't read "idheads(f7b9ebd595c954cd0803e6b6f1f0f96a966e04c9 a890c4fca84a2a5c7835fe6432ede3e7c4e5426b)": no such element in array while executing "if {$idheads($dheads) eq $head} { # the stuff on this branch isn't on any other branch if {![confirm_popup "The commits on branch $head aren't on an..." (procedure "rmbranch" line 13) invoked from within "rmbranch" (menu invoke) However, I took a different approach: if the commit in question has at least two branch heads as descendents, deleting one will not leave it dangling. I am not sure your code attempted to do this anyway. gitk | 14 ++++++++++---- 1 files changed, 10 insertions(+), 4 deletions(-) diff --git a/gitk b/gitk index aa8baf8..d99a974 100755 --- a/gitk +++ b/gitk @@ -6208,10 +6208,16 @@ proc rmbranch {} { return } set dheads [descheads $id] - if {$idheads($dheads) eq $head} { - # the stuff on this branch isn't on any other branch - if {![confirm_popup "The commits on branch $head aren't on any other\ - branch.\nReally delete branch $head?"]} return + set nheads [llength $dheads] + if {$nheads < 2} { + catch { + set nheads [llength $idheads($dheads)] + } + if {$nheads < 2} { + # the stuff on this branch isn't on any other branch that we know about + if {![confirm_popup "The commits on branch $head aren't on any other\ + branch.\nReally delete branch $head?"]} return + } } nowbusy rmbranch update -- 1.5.3.rc4.85.g3ba6