o ^ÍUb•/ã @sÊdZddlmZddlZddlmZddlmZmZddl m Z m Z m Z m Z mZmZiZe e¡ZdZiZe e¡Zedd d d ed d ddedƒfdddedƒfdddedƒfdddedƒfdddedƒfdddedƒfgddddCdd „ƒZdDd!d"„Zed#ged$ƒƒd%d&„ƒZed'dddedƒfged(ƒdddCd)d*„ƒZdEd-d.„Zed/d0d1ded1ƒfd2d3ded3ƒfd d4ded4ƒfd5d6ded6ƒfgd7ƒd8d9„ƒZed:d;dƒfged?ƒejd@dAdB„ƒZdS)Faôbrowse the repository in a graphical way The hgk extension allows browsing the history of a repository in a graphical way. It requires Tcl/Tk version 8.4 or later. (Tcl/Tk is not distributed with Mercurial.) hgk consists of two parts: a Tcl script that does the displaying and querying of information, and an extension to Mercurial named hgk.py, which provides hooks for hgk to get information. hgk can be found in the contrib directory, and the extension is shipped in the hgext repository, and needs to be enabled. The :hg:`view` command will launch the hgk Tcl script. For this command to work, hgk must be in your search path. Alternately, you can specify the path to hgk in your configuration file:: [hgk] path = /location/of/hgk hgk can make use of the extdiff extension to visualize revisions. Assuming you had already configured extdiff vdiff command, just add:: [hgk] vdiff=vdiff Revisions context menu will now display additional entries to fire vdiff on hovered and selected revisions. é)Úabsolute_importN)Ú_)ÚnullrevÚshort)ÚcommandsÚobsoleteÚpatchÚpycompatÚ registrarÚscmutilsships-with-hg-coreóhgkópaths/usr/share/mercurial/hgk)Údefaultsdebug-diff-treeópspatchsgenerate patchórs recursiveóPsprettyóssstdinóCscopys detect copiesóSssearchós![OPTION]... NODE1 NODE2 [FILE]...T)Ú inferrepoc sd‡fdd„ } |dr/ˆj ¡}|sdS| tj¡ d¡}|d}t|ƒdkr-|d}nd}| |¡}|r<| |¡}n |}|j  |¡d}|d rz|d rUt ˆ||d ƒt   |||¡}t  ˆ¡} d| _t j||||| d } | D]} ˆ | ¡qqn|||||d |dsˆdSq)zdiff trees from two commitsNc sâ|dusJ‚|dur g}|| ¡}|| ¡}t |||¡}| |||¡}t|jƒ}|jD]} ˆ dt|| ƒt|| ƒ| | f¡q/|jD]} ˆ d|t|| ƒ| | f¡qH|j D]} ˆ dt|| ƒ|| | f¡q]dS)Ns:100664 100664 %s %s M %s %s s:000000 100664 %s %s N %s %s s:100664 000000 %s %s D %s %s ) Úmanifestr ÚmatchÚstatusrÚnullidÚmodifiedÚ writenoi18nÚaddedÚremoved) ÚrepoÚnode1Únode2ÚfilesÚmmapÚmmap2ÚmÚstÚemptyÚf©Úui©ú+/usr/lib/python3/dist-packages/hgext/hgk.pyÚ __difftreeYs6     ÿÿ ÿÿ ÿÿÿzdifftree..__difftreeTÚstdinó rérÚprettyr)rÚopts)r"©N)ÚfinÚreadlineÚrstripr Ú oslinesepÚsplitÚlenÚlookupÚ changelogÚparentsÚ catcommitr rrÚdifffeatureoptsÚgitÚdiffÚwrite) r*rr r!r"r2r-Úliner%ÚdiffoptsÚchunksÚchunkr+r)r,ÚdifftreeIs<       ÿãrFc CsNd|}|dur ||}| dt| ¡dƒ¡| ¡D] }| d|¡q| ¡}| ¡ dd¡}| d| ¡t|dƒ|df¡d |  ¡vrV| d |  ¡d ¡| d |  ¡¡| d |  ¡¡t   |t j¡rx|  ¡rx| d ¡| d| ¡¡|dkr•| d|| d|¡ ¡f¡n| |d¡|r¥| d¡dSdS)Nó stree %s rs parent %s órsauthor %s %d %d r0s committers committer %s s revision %d s branch %s s obsolete s phase %s ó%s%s )rArÚ changesetr<ÚdateÚ descriptionÚreplaceÚuserÚintÚextraÚrevÚbranchrÚ isenabledÚcreatemarkersoptrÚphasestrÚstrip) r*rÚnÚprefixÚctxÚnlprefixÚprKrLr+r+r,r=–s2 $  ÿÿr=sdebug-merge-basesREV REVcCs8| |¡}| |¡}|j ||¡}| t|ƒd¡dS)z"output common ancestor informationrGN)r:r;ÚancestorrAr)r*rr r!rWr+r+r,Úbase·s  r]sdebug-cat-files[OPTION]... TYPE FILEcKsÔd}|dr|j ¡}|sdS| tj¡ d¡\}}d}n|r!|s.| tdƒ¡t  |d¡|rh|dkr=| td ƒ¡d S|  |¡}t ||||ƒ|drb|j ¡}|sVdS| tj¡ d¡\}}ndS|s0dSdS) zcat a specific revisionrr.Nr/ó s(cat-file: type or revision not supplied scat-fileócommits.aborting hg cat-file only understands commits r0) r4r5r6r r7r8ÚwarnrrÚhelp_r:r=)r*rÚtypeÚrr2rXrBrWr+r+r,ÚcatfileÀs.      ôrdótreeFcsÚ‡‡fdd„}dd„}g}g} g} d} t|ƒD])\} } |  d¡r4ˆ | dd…¡}|  |¡|  |¡q| dkr@|  ˆ | ¡¡qt| ƒD]B\} }| tƒ¡|g}||  |¡|r‡| d¡}|| vreqYˆj |¡D]}||| vr||  |¡| |¡|| vr„qkqk|s[qE|ƒD]ß\} }| ˆvr”q‹ˆj  | ¡}|| ||ƒ}|rjd }|rψj |¡}|dˆj kr¾|d t |dƒ7}|dˆj krÏ|d t |dƒ7}ˆsÝ|  d t |ƒ|f¡n~ˆd krõ|  d t |ƒ|f¡t |ˆ|d |ƒnfˆj |¡\}}tt |||fƒ\}}}tˆjj||fƒ\}}| ¡d}|  d|||f¡|| ||ƒ}|tkr=|dkr=|  d||f¡f|| ||ƒ}|tkrV|dkrV|  d||f¡|  d¡|rf| |krfdS| d7} q‹dS)Nc3stˆƒ}|}dgd}d} ||kr|}d}n||8}t |¡D]:}|||kr8dg|||||d…<n$ˆdurQ||ˆvrPˆ||||<|| ¡q!||ˆvr[d||<q!t |ddd¡D]}||dkr|||ˆdurx||pydfVqe|dkrƒdSq)NrédTr0éÿÿÿÿ)r9r ÚxrangerJ)ÚcountÚiÚlrEÚx©Úfullrr+r,Ú chlogwalkís:€    € € €êzrevtree..chlogwalkcSsDt|ƒdkrdSd}t t|ƒ¡D]}|||vr|d|>O}q|S)Nrr0)r9r rh)ÚarÚ reachableÚshaÚmaskrjr+r+r,Ú is_reachable s   €zrevtree..is_reachableró^r0sHEADrr/rIr_r^s%s %s:%ss%s:%s rG)Ú enumerateÚ startswithr:ÚappendÚsetÚaddÚpopr;r<ÚnoderrrAr=ÚmaprQrKr)r*ÚargsrrnÚmaxnrr<rortrqÚ stop_sha1Ú want_sha1rirjÚargÚsrWÚvisitr[rYrsÚ parentstrÚppÚp1Úp2ÚhÚh1Úh2Úi1Úi2rKr+rmr,Úrevtreeìs„    €    ÿø€        €ÞrŽsdebug-rev-listóHsheaderóts topo-ordersparentsóns max-counts[OPTION]... REV...cOs>|drd}nd}dd„|Dƒ}t|||||d|dƒdS)zprint revisionsÚheaderr_NcSsg|]}|‘qSr+r+)Ú.0rlr+r+r,Ú nszrevlist..Ú max_countr<)rŽ)r*rÚrevsr2rnÚcopyr+r+r,Úrevlist^s  r˜sviewólslimits!limit number of changes displayedsNUMs[-l LIMIT] [REVRANGE])Ú helpcategorycOs€t |¡}t |j¡d dd„t |¡Dƒ¡}|jdur!|d7}| dd¡d|d |¡f}|  d |¡|j |d d dS) z start interactive history viewerr/cSs g|] \}}|rd||f‘qS)s--%s %sr+)r“ÚkÚvr+r+r,r”}s zview..Ns--hiddenr r s %s %ss running %s shgk_view)Ú blockedtag) r Ú byteskwargsÚosÚchdirÚrootÚjoinÚ iteritemsÚ filternameÚconfigÚdebugÚsystem)r*rÚetcr2ÚoptstrÚcmdr+r+r,Úviewrs  ÿ r«)NNr3)rerF)Ú__doc__Ú __future__rrŸÚmercurial.i18nrÚmercurial.noderrÚ mercurialrrrr r r ÚcmdtableÚcommandÚ testedwithÚ configtableÚ configitemrFr=r]rdrŽr˜ÚCATEGORY_CHANGE_NAVIGATIONr«r+r+r+r,Úsr     ýúõ @! ü  &rüø  ü