diff options
| author | Paul Mackerras <paulus@samba.org> | 2006-08-08 20:55:36 +1000 | 
|---|---|---|
| committer | Paul Mackerras <paulus@samba.org> | 2006-08-08 20:55:36 +1000 | 
| commit | ceadfe90c64b293a653bcbbce83283d2665d7cf9 (patch) | |
| tree | 57a7c834ce3f88fce0f8452d49f39205ef4d806e /gitk | |
| parent | ca6d8f58a15b9db621dd2b905a04d06bdff44bf8 (diff) | |
| download | git-ceadfe90c64b293a653bcbbce83283d2665d7cf9.tar.gz | |
gitk: Update preceding/following tag info when creating a tag
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'gitk')
| -rwxr-xr-x | gitk | 77 | 
1 files changed, 77 insertions, 0 deletions
| @@ -5062,6 +5062,7 @@ proc domktag {} {      set tagids($tag) $id      lappend idtags($id) $tag      redrawtags $id +    addedtag $id  }  proc redrawtags {id} { @@ -5505,6 +5506,82 @@ proc restartatags {} {      dispneartags  } +# update the desc_tags and anc_tags arrays for a new tag just added +proc addedtag {id} { +    global desc_tags anc_tags allparents allchildren allcommits +    global idtags tagisdesc alldtags + +    if {![info exists desc_tags($id)]} return +    set adt $desc_tags($id) +    foreach t $desc_tags($id) { +	set adt [concat $adt $alldtags($t)] +    } +    set adt [lsort -unique $adt] +    set alldtags($id) $adt +    foreach t $adt { +	set tagisdesc($id,$t) -1 +	set tagisdesc($t,$id) 1 +    } +    if {[info exists anc_tags($id)]} { +	set todo $anc_tags($id) +	while {$todo ne {}} { +	    set do [lindex $todo 0] +	    set todo [lrange $todo 1 end] +	    if {[info exists tagisdesc($id,$do)]} continue +	    set tagisdesc($do,$id) -1 +	    set tagisdesc($id,$do) 1 +	    if {[info exists anc_tags($do)]} { +		set todo [concat $todo $anc_tags($do)] +	    } +	} +    } + +    set lastold $desc_tags($id) +    set lastnew [list $id] +    set nup 0 +    set nch 0 +    set todo $allparents($id) +    while {$todo ne {}} { +	set do [lindex $todo 0] +	set todo [lrange $todo 1 end] +	if {![info exists desc_tags($do)]} continue +	if {$desc_tags($do) ne $lastold} { +	    set lastold $desc_tags($do) +	    set lastnew [combine_dtags $lastold [list $id]] +	    incr nch +	} +	if {$lastold eq $lastnew} continue +	set desc_tags($do) $lastnew +	incr nup +	if {![info exists idtags($do)]} { +	    set todo [concat $todo $allparents($do)] +	} +    } + +    if {![info exists anc_tags($id)]} return +    set lastold $anc_tags($id) +    set lastnew [list $id] +    set nup 0 +    set nch 0 +    set todo $allchildren($id) +    while {$todo ne {}} { +	set do [lindex $todo 0] +	set todo [lrange $todo 1 end] +	if {![info exists anc_tags($do)]} continue +	if {$anc_tags($do) ne $lastold} { +	    set lastold $anc_tags($do) +	    set lastnew [combine_atags $lastold [list $id]] +	    incr nch +	} +	if {$lastold eq $lastnew} continue +	set anc_tags($do) $lastnew +	incr nup +	if {![info exists idtags($do)]} { +	    set todo [concat $todo $allchildren($do)] +	} +    } +} +  # update the desc_heads array for a new head just added  proc addedhead {hid head} {      global desc_heads allparents headids idheads | 
