Mercurial > hg
changeset 13461:81af2040b586 stable
hgk: read bookmarks
author | David Soria Parra <dsp@php.net> |
---|---|
date | Wed, 23 Feb 2011 00:24:21 +0100 |
parents | 64bb8e586a92 |
children | 8641cb094c81 |
files | contrib/hgk |
diffstat | 1 files changed, 45 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/contrib/hgk Tue Feb 22 15:11:10 2011 -0500 +++ b/contrib/hgk Wed Feb 23 00:24:21 2011 +0100 @@ -276,6 +276,7 @@ set comdate {} set rev {} set branch {} + set bookmark {} if {![info exists nchildren($id)]} { set children($id) {} set nchildren($id) 0 @@ -314,7 +315,9 @@ set rev [lindex $line 1] } elseif {$tag == "branch"} { set branch [join [lrange $line 1 end]] - } + } elseif {$tag == "bookmark"} { + set bookmark [join [lrange $line 1 end]] + } } } else { if {$comment == {}} { @@ -338,7 +341,7 @@ set comdate [clock format $comdate -format "%Y-%m-%d %H:%M:%S"] } set commitinfo($id) [list $headline $auname $audate \ - $comname $comdate $comment $rev $branch] + $comname $comdate $comment $rev $branch $bookmark] if {[info exists firstparents]} { set i [lsearch $firstparents $id] @@ -369,7 +372,7 @@ } proc readrefs {} { - global tagids idtags headids idheads tagcontents env curid + global bookmarkcurrent bookmarkids tagids idtags idbookmarks headids idheads tagcontents env curid set status [catch {exec $env(HG) --config ui.report_untrusted=false id} curid] if { $status != 0 } { @@ -417,6 +420,28 @@ } } + set status [catch {exec $env(HG) --config ui.report_untrusted=false bookmarks} bookmarks] + if { $status != 0 } { + puts $::errorInfo + if { ![string equal $::errorCode NONE] } { + exit 2 + } + } + set lines [split $bookmarks "\n"] + set bookmarkcurrent 0 + foreach f $lines { + regexp {(\S+)$} $f full + regsub {\s+(\S+)$} $f "" direct + set sha [split $full ':'] + set bookmark [lindex $sha 1] + set current [string first " * " $direct)] + regsub {^\s(\*|\s)\s} $direct "" direct + lappend bookmarkids($direct) $bookmark + lappend idbookmarks($bookmark) $direct + if {$current >= 0} { + set bookmarkcurrent $direct + } + } } proc readotherrefs {base dname excl} { @@ -1042,7 +1067,7 @@ global canv canv2 canv3 mainfont namefont canvy linespc global lineid linehtag linentag linedtag commitinfo global colormap numcommits currentparents dupparents - global idtags idline idheads idotherrefs + global idtags idline idheads idotherrefs idbookmarks global lineno lthickness mainline mainlinearrow sidelines global commitlisted rowtextx idpos lastuse displist global oldnlines olddlevel olddisplist @@ -1100,7 +1125,7 @@ set rowtextx($lineno) $xt set idpos($id) [list $x $xt $y1] if {[info exists idtags($id)] || [info exists idheads($id)] - || [info exists idotherrefs($id)]} { + || [info exists idotherrefs($id)] || [info exists idbookmarks($id)]} { set xt [drawtags $id $x $xt $y1] } set headline [lindex $commitinfo($id) 0] @@ -3840,8 +3865,12 @@ } proc listrefs {id} { - global idtags idheads idotherrefs - + global idtags idheads idotherrefs idbookmarks + + set w {} + if {[info exists idbookmarks($id)]} { + set w $idbookmarks($id) + } set x {} if {[info exists idtags($id)]} { set x $idtags($id) @@ -3854,26 +3883,29 @@ if {[info exists idotherrefs($id)]} { set z $idotherrefs($id) } - return [list $x $y $z] + return [list $w $x $y $z] } proc rereadrefs {} { - global idtags idheads idotherrefs - global tagids headids otherrefids + global idbookmarks idtags idheads idotherrefs + global bookmarkids tagids headids otherrefids set refids [concat [array names idtags] \ - [array names idheads] [array names idotherrefs]] + [array names idheads] [array names idotherrefs] \ + [array names idbookmarks]] foreach id $refids { if {![info exists ref($id)]} { set ref($id) [listrefs $id] } } - foreach v {tagids idtags headids idheads otherrefids idotherrefs} { + foreach v {tagids idtags headids idheads otherrefids idotherrefs \ + bookmarkids idbookmarks} { catch {unset $v} } readrefs set refids [lsort -unique [concat $refids [array names idtags] \ - [array names idheads] [array names idotherrefs]]] + [array names idheads] [array names idotherrefs] \ + [array names idbookmarks]]] foreach id $refids { set v [listrefs $id] if {![info exists ref($id)] || $ref($id) != $v} {