
    if6/                        d Z ddlZddlmZ ddlmZmZ ddlmZm	Z	m
Z
mZmZmZ i Z ej                  e      ZdZi Z ej$                  e      Z eddd	
        edddd ed      fddd ed      fddd ed      fddd ed      fddd ed      fddd ed      fgdd      d9d       Zd:dZ ed g  ed!            d"        Z ed#ddd ed      fg ed$      d      d9d%       Zd;d&Z ed'd(d)d ed)      fd*d+d ed+      fdd,d ed,      fd-d.d ed.      fgd/      d0        Z ed1d2d3d ed4       ed5      fg ed6      ej2                  7      d8        Zy)<a  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.
    N)_)nullrevshort)commandsobsoletepatchpycompat	registrarscmutils   ships-with-hg-core   hgk   paths   /usr/share/mercurial/hgk)defaults   debug-diff-tree   ps   patchs   generate patch   rs	   recursive   Ps   pretty   ss   stdin   Cs   copys   detect copies   Ss   search    s!   [OPTION]... NODE1 NODE2 [FILE]...T)	inferrepoc                     d fd	}	 |d   rf j                   j                         }|sy|j                  t        j                        j                  d      }|d   }t        |      dkD  r|d   }nd}|j                  |      }|r|j                  |      }n |}|j                  j                  |      d   }|d   r{|d	   rt         ||d
       t        j                  ||   |      }t        j                         }	d|	_        t        j                   |||||	      }
|
D ]  } j#                  |        n |||||       |d   syD)zdiff trees from two commitsNc           	      :   |J |g }| |   j                         }| |   j                         }t        j                  | |   |      }| j                  |||      }t	        | j
                        }|j                  D ]2  }	
j                  dt	        ||	         t	        ||	         |	|	fz         4 |j                  D ]&  }	
j                  d|t	        ||	         |	|	fz         ( |j                  D ]&  }	
j                  dt	        ||	         ||	|	fz         ( y )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uis             +/usr/lib/python3/dist-packages/hgext/hgk.py
__difftreezdifftree.<locals>.__difftreeX   s.      =EE{##%U$$&MM$u+u-[[q)dkk" 	ANN3a>5q?Aq9:	  	ANN3%a/1a01	
  	ANN3a>5!Q/0	r   Tstdin    r      r   prettyr   )r   opts)r$   N)finreadlinerstripr	   	oslinesepsplitlenlookup	changelogparents	catcommitr   r   r   difffeatureoptsgitdiffwrite)r+   r!   r"   r#   r$   r2   r-   liner'   diffoptschunkschunks   `           r,   difftreerF   H   s>    : =66??$D;;x11288>DGE4y1}QE"KK&EENN**51!4E=H~"dE3/d5k51A,,R0HHLZZeU!(KF    tUE7G}; r   c                    d|z   }|||   }| j                  dt        |j                         d         z         |j                         D ]  }| j                  d|z          |j	                         }|j                         j                  dd      }| j                  d|j                         t        |d         |d   fz         d	|j                         v r%| j                  d
|j                         d	   z         | j                  d|j                         z         | j                  d|j                         z         t        j                  |t        j                        r!|j                         r| j                  d       | j                  d|j!                         z         |dk7  r5| j                  d||j                  d|      j#                         fz         n| j                  |dz          |r| j                  d       y y )N   
s   tree %s
r   s
   parent %s
    r   s   author %s %d %d
r0   s	   committers   committer %s
s   revision %d
s
   branch %s
s	   obsolete
s
   phase %s

   %s%s
)rA   r   	changesetr<   datedescriptionreplaceuserintextrarevbranchr   	isenabledcreatemarkersoptr   phasestrstrip)	r+   r!   nprefixctxnlprefixprL   rM   s	            r,   r=   r=      s   v~H
{1gHHlU3==?1#5668[[] '
.1$&' 88:D//#++E37KHH"chhj#d1g,Q%HHJsyy{"
#ciik,&??AHH*,HHnszz|+-$ 9 9:<<>NN=)HHo.0}
!4!4UH!E!K!K!MNN	
 	u$%
 r   s   debug-merge-bases   REV REVc                     |j                  |      }|j                  |      }|j                  j                  ||      }| j                  t	        |      dz          y)z"output common ancestor informationrH   N)r:   r;   ancestorrA   r   )r+   r!   r"   r#   rX   s        r,   baser_      sK     KKEKKEu-AHHU1Xr   s   debug-cat-files   [OPTION]... TYPE FILEc                 P   d}|d   rQ| j                   j                         }|sy|j                  t        j                        j                  d      \  }}d}n4|r|s0| j                  t        d             t        j                  | d       |r|dk7  r| j                  t        d	             y
|j                  |      }t        | |||       |d   rO| j                   j                         }|sy|j                  t        j                        j                  d      \  }}ny|ryy)zcat a specific revisionr   r.   Nr/          s(   cat-file: type or revision not supplied
s   cat-file   commits.   aborting hg cat-file only understands commits
r0   )r4   r5   r6   r	   r7   r8   warnr   r   help_r:   r=   )r+   r!   typerr2   rY   rB   rX   s           r,   catfilerg      s     FG}vv KK 2 2399$?	q1GGABCDNN2{+
9GGAHIJKKN"dAv&=66??$DH$6$67==dCIT1 r   c                    fd}d }g }g }	g }
d}t        |      D ]s  \  }}|j                  d      r7j                  |dd        }|	j                  |       |
j                  |       N|dk7  sT|
j                  j                  |             u t        |
      D ]  \  }}|j                  t	                      |g}||   j                  |       |s9|j                  d      }||	v rj                  j                  |      D ]3  }|||   vr%||   j                  |       |j                  |       ||	v s45 |rj  |       D ]  \  }}|vrj                  j                  |      } ||
||      }|s4d}|rgj                  j                  |      }|d   j                  k7  r|dt        |d         z   z  }|d   j                  k7  r|dt        |d         z   z  }s!| j                  d	t        |      |fz         n&d
k(  r/| j                  d	t        |      |fz         t        | |d|       nj                  j                  |      \  }}t        t        |||f      \  }}}t        j                  j                  ||f      \  }}|j!                         d   }| j                  d|||fz          ||
||      }|t"        k7  r|dkD  r| j                  d||fz        f  ||
||      }|t"        k7  r|dkD  r| j                  d||fz         | j                  d       |r||k\  r y |dz  } y )Nc               3     K   t              } | }dgdz  }d}	 ||kD  r|}d}n||z  }t        |      D ]Q  }||z   | k\  rdg||z
  z  |||z
  d   n8'||z   v s&||z      ||<   ||   j                          E||z   v sMd||<   S t        |dz
  dd      D ]!  }||   dk7  s||z   d uxr ||   xs d f # |dk(  ry w)Nr   d   r0   )r9   rangerK   )countilrE   xfullr!   s        r,   	chlogwalkzrevtree.<locals>.chlogwalk   s    D	C#IqyU
5\ 
!q5E>&'SEAI%6AeaikN#A$#AE{!!(A$ !
! 519b"- EQ419q5$d"2";qt"CtDDE Av- s   AC&C"C$Cc                 z    t        |       dk(  ryd}t        t        |             D ]  }|||   v s|d|z  z  } |S )Nr   r0   )r9   rl   )ar	reachableshamaskrn   s        r,   is_reachablezrevtree.<locals>.is_reachable
  sL    r7a<s2w 	Ail"Q	 r   r      ^r0   s   HEADr   r/   rJ   rb   ra   s   %s %s:%ss   %s:%s rH   )	enumerate
startswithr:   appendsetaddpopr;   r<   noder   r   rA   r=   maprR   rL   r   )r+   argsr!   rq   maxnrr<   rr   rx   ru   	stop_sha1	want_sha1rm   rn   argsrX   visitr\   rZ   rw   	parentstrppp1p2hh1h2i1i2rL   s     ``                          r,   revtreer      s@   < IIIE D/ /3>>$CG$AQQG^T[[-./ )$ 1!		!AI~^^++A. IaL(aL$$Q'LLO	>	 	" + "3D=NN"Iy!4I^^++A.a5DKK'be!44Ia5DKK'be!44IeAh	%::;"eAh	%::;"dAw4>>11!4R!%!R5Bt~~11B8<Rxxz!}a67#Iy"==TAXHHY"d345#Iy"==TAXHHY"d34%QJEE"r   s   debug-rev-list   Hs   header   ts
   topo-orders   parents   ns	   max-counts   [OPTION]... REV...c           	      l    |d   rd}nd}|D cg c]  }| }}t        | ||||d   |d          yc c}w )zprint revisionsheaderrb   N	max_countr<   )r   )r+   r!   revsr2   rq   rp   copys          r,   revlistr   ]  sI     H~!ADBdD${"3T*5EF s   	1s   view   ls   limits!   limit number of changes displayeds   NUMs   [-l LIMIT] [REVRANGE])helpcategoryc           	         t        j                  |      }t        j                  |j                         dj                  |j                         D cg c]  \  }}|s	d||fz   c}}      }|j                  |dz  }| j                  dd      d|dj                  |      fz  z   }| j                  d|z         | j                  |d	
       yc c}}w )z start interactive history viewerr/   s   --%s %sNs   --hiddenr   r   s    %s %ss   running %s
s   hgk_view)
blockedtag)r	   byteskwargsoschdirrootjoinitems
filternameconfigdebugsystem)r+   r!   etcr2   kvoptstrcmds           r,   viewr   q  s     %DHHTYYYY

J1
aV+JKF+
))FG
$yFDIIcN3K'K
KCHH_s"#IIckI* Ks   
C
	C
)NNr3   )s   treer   F)__doc__r   mercurial.i18nr   mercurial.noder   r   	mercurialr   r   r   r	   r
   r   cmdtablecommand
testedwithconfigtable
configitemrF   r=   r_   rg   r   r   CATEGORY_CHANGE_NAVIGATIONr    r   r,   <module>r      s  < 
   
)

H
%
 #
!Y!!+.
 

' 		xq!234	|T1\?3	y$)-	xq{+	wa 012	y#q|, )==@B 		b!J-0 1 	
HdAhK()	Lld 		y$)-	}dAm$45	z4:/	|Q,0	 	G	G 	
Hc1ABAfINO33	
+
+r   