��c@s�ddlmZmZmZmZmZddlmZddlZddl Z ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZejZdefd��YZdefd��YZdefd ��YZd
efd��YZdefd
��YZ defd��YZ!dS(i�(tnullidtnullrevtshortthextbin(t_Nt changectxcBsreZdZdd�Zd�Zd�Zd�Zd�Zd�Zd�Z d �Z
ed
��Zed��Z
ed��Zed
��Zed��Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d �Z"d!�Z#d"�Z$d#�Z%d$�Z&d%�Z'd&�Z(d'�Z)d(�Z*d)�Z+d*�Z,d+�Z-d,�Z.d-�Z/d.�Z0d/�Z1d0�Z2d1�Z3d2�Z4d3�Z5d4�Z6d@d@d5�Z8d6�Z9d7�Z:d8�Z;d9�Z<gd@d@d:d;�Z=d@d@d<�Z>ed=��Z?d>�Z@d?�ZARS(As]A changecontext object makes access to data related to a particular
changeset convenient.tcCs,|dkrd}n||_t|t�r�y|jj|�|_Wn*tk
rrtjt d�|��nX||_
dSt|t�r�t|�}n|dkr�|j
j�|_|jj|j�|_
dS|dkr�|_t|_
dS|dkr4|jj�|_|jj|j�|_
dSt|�dkr�y&||_|jj|�|_
dSWq�tk
rq�Xny�t|�}t|�|kr�t�nt|j�}|dkr�||7}n|dks�|kr��n||_
|jj|�|_dSWntttfk
r5nXt|�d kr�y/t|�|_|jj|j�|_
dSWq�ttfk
r�q�Xn||jkr�|j||_|jj|j�|_
dS||jjkr|jj||_|jj|j�|_
dSy2|j|�|_|jj|j�|_
dSWntjk
rXnX|jj|�|_|jdk r�|jj|j�|_
dS||j�j
j �kr�tj!t d
�t"|���ny%t|�dkr�|�}nWntk
rnXtjt d�|��dS(s+changeid is a revision number, node, or tagRt.sunknown revision '%s'Ntnullttipiii(s*working directory has unknown parent '%s'!($t_repot
isinstancetintt changelogtnodet_nodet
IndexErrorterrortRepoLookupErrorRt_revtlongtstrtdirstatetp1trevRRR
tlentLookupErrort
ValueErrort
OverflowErrorRt TypeErrort
_bookmarkst
_tagscachettagst branchtipt
_partialmatchtNonet
unfilteredtparentstAbortRR(tselftrepotchangeidtrtl((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt__init__s�
cCst|j��S(N(RR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt__str__uscCs
|j�S(N(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt__int__xscCsdt|�S(Ns<changectx %s>(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt__repr__{scCs0yt|j�SWntk
r+t|�SXdS(N(thashRtAttributeErrortid(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt__hash__~s
cCs-y|j|jkSWntk
r(tSXdS(N(RR2tFalse(R(tother((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt__eq__�s
cCs||kS(N((R(R6((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt__ne__�scCs
|jtkS(N(RR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt__nonzero__�scCs|jjj|j��S(N(RRtreadR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt
_changeset�scCs|jjj|jd�S(Ni(RtmanifestR:R;(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt _manifest�scCs|jjj|jd�S(Ni(RR<t readdeltaR;(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt_manifestdelta�scCsX|jjj|j�}|dtkr5|d }ng|D]}t|j|�^q<S(Nii�(RRt
parentrevsRRR(R(tptx((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt_parents�s
cCstj||jj�S(N(tsubrepotstateRtui(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytsubstate�scCs
||jkS(N(R=(R(tkey((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt__contains__�scCs
|j|�S(N(tfilectx(R(RH((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt__getitem__�sccs#xt|j�D]}|VqWdS(N(tsortedR=(R(tf((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt__iter__�scCs|jS(N(R;(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt changeset�scCs|jS(N(R=(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR<�scCs|jdS(Ni(R;(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytmanifestnode�scCs|jS(N(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�scCs|jS(N(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�scCs
t|j�S(N(RR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�scCs|jdS(Ni(R;(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytuser�scCs|jdS(Ni(R;(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytdate�scCs|jdS(Ni(R;(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytfiles�scCs|jdS(Ni(R;(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytdescription�scCstj|jdjd��S(Nitbranch(tencodingttolocalR;tget(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRU�scCsd|jdkS(Ntclosei(R;(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytclosesbranch�scCs|jdS(Ni(R;(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytextra�scCs|jj|j�S(N(RtnodetagsR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR!�scCs|jj|j�S(N(Rt
nodebookmarksR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt bookmarks�scCs|jjj|j|j�S(N(Rt_phasecachetphaseR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR`�scCstj|j�S(N(tphasest
phasenamesR`(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytphasestr�scCs|j�tjkS(N(R`Ratpublic(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytmutable�scCs|jtj|jd�kS(Ntvisible(Rtrepoviewt
filterrevsR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pythidden�scCs|jS(s)return contexts for each parent changeset(RC(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR&�scCs|jdS(Ni(RC(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�scCs0t|j�dkr |jdSt|jd�S(Niii�(RRCRR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytp2�scCs;|jjj|j�}g|D]}t|j|�^qS(s(return contexts for each child changeset(RRtchildrenRR(R(tcRB((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRk�sccs;x4|jjj|jg�D]}t|j|�VqWdS(N(RRt ancestorsRR(R(ta((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRm�s"ccs;x4|jjj|jg�D]}t|j|�VqWdS(N(RRtdescendantsRR(R(td((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRo�s"cCs|j�tj|jd�kS(s!True if the changeset is obsoletetobsolete(RtobsmodtgetrevsR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRq�scCs|j�tj|jd�kS(s True if the changeset is extincttextinct(RRrRsR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRt�scCs|j�tj|jd�kS(s;True if the changeset is not obsolete but it's ancestor aretunstable(RRrRsR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRu�scCs|j�tj|jd�kS(s�True if the changeset try to be a successor of a public changeset
Only non-public and non-obsolete changesets may be bumped.
tbumped(RRrRsR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRv�scCs|j�tj|jd�kS(s�Is a successors of a changeset with multiple possible successors set
Only non-public and non-obsolete changesets may be divergent.
t divergent(RRrRsR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRwscCs"|j�p!|j�p!|j�S(s=True if the changeset is either unstable, bumped or divergent(RuRvRw(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyttroubledscCs^g}|j�r"|jd�n|j�r>|jd�n|j�rZ|jd�n|S(s�return the list of troubles affecting this changesets.
Troubles are returned as strings. possible values are:
- unstable,
- bumped,
- divergent.
RuRvRw(RutappendRvRw(R(ttroubles((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRzscCsd|jkrey!|j||jj|�fSWqetk
ratj|j|td���qeXnd|jks�||j�kr�||j kr�|j ||j j|�fSn|j
jj|j
d|�\}}|stj|j|td���n||fS(NR=snot found in manifestR?i(t__dict__R=tflagstKeyErrorRtManifestLookupErrorRRRSR?RR<tfindR;(R(tpathRtflag((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt _fileinfo!s!
!
%cCs|j|�dS(Ni(R�(R(R�((s5/sys/lib/python2.7/site-packages/mercurial/context.pytfilenode3scCs1y|j|�dSWntjk
r,dSXdS(NiR(R�RR(R(R�((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR|6sc Cs@|dkr|j|�}nt|j|d|d|d|�S(s&get a file context from this changesettfileidRtfilelogN(R$R�RJR(R(R�R�R�((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRJ<scCsS|j}|dkr(|jdj}n|jjj|j|�}t|j|�S(s<
return the ancestor context of self and c2
iN(RR$RCRRtancestorR(R(tc2tn2tn((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�Cs
cCs|jjj|j|j�S(s-True if other is descendant of this changeset(RRt
descendantR(R(R6((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�Nsccs�t|j��}|jd�x>|D]6}||krH|j|�n||�r&|Vq&q&WxYt|�D]K}||jkr�qmn|j|td�|�rm||�rm|VqmqmWdS(NRsno such file in rev %s(tsetRStdiscardtremoveRLt_dirstbadR(R(tmatchtfsettfn((s5/sys/lib/python2.7/site-packages/mercurial/context.pytwalkRs
(cCstj||�S(N(RD(R(R�((s5/sys/lib/python2.7/site-packages/mercurial/context.pytsubdstglobcCs=|j}tj|j|j�||||d|jd|�S(Ntauditortctx(RtmatchmodR�troottgetcwdR�(R(tpatstincludetexcludetdefaultR+((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�gs c Ks�|dkr|j�}n|dk rGt|t�rG|j|}ntj|jj|�}tj|j|j �|j �d|d|�S(s;Returns a diff generator for the given contexts and matcherR�toptsN(
R$RRRRtpatchtdiffoptsRFtdiffR(R(tctx2R�R�R�((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�ms!cCstj|j�S(N(tscmutiltdirsR=(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�wscCs|jS(N(R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�{scCstS(N(R5(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytdirty~sN(Bt__name__t
__module__t__doc__R-R.R/R0R4R7R8R9t
propertycacheR;R=R?RCRGRIRKRNROR<RPRRRRQRRRSRTRURZR[R!R^R`RcReRiR&RRjRkRmRoRqRtRuRvRwRxRzR�R�R|R$RJR�R�R�R�R�R�R�R�R�(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRs|_
RJcBs�eZdZd/d/d/d/d�Zed��Zed��Zed��Zed��Z ed��Z
ed��Zd�Zd �Z
d
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d �Z$d!�Z%d"�Z&d#�Z'd$�Z(d%�Z)d&�Z*d'�Z+d(�Z,d)�Z-d*�Z.e/d/d/d+�Z0d,�Z1e/d-�Z2d.�Z3RS(0saA filecontext object makes access to data related to a particular
filerevision convenient.cCs�||_||_|dk sO|dk sO|dk sOtd|||f��|ra||_n|dk ry||_n|dk r�||_n|dk r�||_ndS(sechangeid can be a changeset revision, node, or tag.
fileid can be a file revision or node.s.bad args: changeid=%r, fileid=%r, changectx=%rN(Rt_pathR$tAssertionErrort_filelogt _changeidt
_changectxt_fileid(R(R)R�R*R�R�R((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR-�s cCsHyt|j|j�SWn*tjk
rCt|jj�|j�SXdS(N(RRR�RRR%(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR��scCs|jj|j�S(N(RtfileR�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR��scCs3d|jkr|jj�S|jj|j�SdS(NR�(R{R�RR�tlinkrevt_filerev(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR��s
cCs9d|jkr"|jj|j�S|jj|j�SdS(NR�(R{R�tlookupR�R�R�R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt _filenode�scCs|jj|j�S(N(R�RR�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR��scCs|jS(N(R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt _repopath�scCs+y|jtSWntjk
r&tSXdS(N(R�tTrueRRR5(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR9�s
cCs d|j�t|j��fS(Ns%s@%s(R�RR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR.�scCsdt|�S(Ns<filectx %s>(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR0�scCs9yt|j|jf�SWntk
r4t|�SXdS(N(R1R�R�R2R3(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR4�s
cCs?y&|j|jko$|j|jkSWntk
r:tSXdS(N(R�R�R2R5(R(R6((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR7�s
cCs||kS(N((R(R6((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR8�scCs"t|j|jd|d|j�S(sMopens an arbitrary revision of the file without
opening a new filelogR�R�(RJRR�R�(R(R�((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRJ�scCs|jS(N(R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytfilerev�scCs|jS(N(R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR��scCs|jj|j�S(N(R�R|R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR|�scCs|jS(N(R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR��scCsKd|jkr|jj�Sd|jkr8|jj�S|jj|j�S(NR�R�(R{R�RR�R�R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�s
cCs|jj|j�S(N(R�R�R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�scCs
|jj�S(N(R�R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRscCst|j��S(N(RR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRscCs
|jj�S(N(R�RQ(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRQscCs
|jj�S(N(R�RR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRRscCs
|jj�S(N(R�RS(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRS
scCs
|jj�S(N(R�RT(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRTscCs
|jj�S(N(R�RU(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRUscCs
|jj�S(N(R�R[(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR[scCs
|jj�S(N(R�R`(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR`scCs
|jj�S(N(R�Rc(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRcscCs
|jj�S(N(R�R<(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR<scCs|jS(N(R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRscCs|jj|j�S(N(R�R:R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytdatascCs|jS(N(R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�scCs|jj|j�S(N(R�tsizeR�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�scCs0ytj|j��SWntk
r+tSXdS(N(tutiltbinaryR�tIOErrorR5(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytisbinary"s
cCso|jdkr7|jjsO|j�d|j�ksO|j�|j�krk|jj|j|j��St S(sVcompare with other file context
returns True if different than fctx.
iN(
R�R$Rt_encodefilterpatsR�R�tcmpR�R�R�(R(tfctx((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�(scCs�|jj|j�}|s|S|j�|j�kr;|S|j�}|j}xK|jj�D]:}y||j|�kr�dSWq`t
jk
r�q`Xq`W|S(s#check if file was actually renamed in this changeset revision
If rename logged in file revision, we report copy for changeset only
if file revisions linkrev points back to the changeset in question
or both changeset parents contain different file revisions.
N(R�trenamedR�RR�R�R�R&R�R$RR(R(R�tnametfnodeRA((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�7s c Cs�|j}|j}g|jj|j�D]}|||f^q(}|jj|j�}|r||d|ddf|d<ng|D]9\}}}|tkr�t|j|d|d|�^q�S(NiiR�R�( R�R�R&R�R�R$RRJR(R(RAtflR�tplR+R,((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR&Ps 1cCs|j�dS(Ni(R&(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR\scCsH|j�}t|�dkr&|dSt|j|jddd|j�S(NiiR�i�R�(R&RRJRR�R�(R(RA((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRj_sc CsJ|jj|j�}g|D]*}t|j|jd|d|j�^qS(NR�R�(R�RkR�RJRR�(R(RlRB((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRkesc sud�}d�}d�}|dkr-|p<|r9|p<|}�fd�}tj�fd�����fd��tj������fd�} �j��j�kr��j�j��}
n�}
|
g}i}i}
id|
6}xX|rN|d }||
k}|s,| |�|
|<nt}|
|}xS|D]K}||krkt}|j |�n|sC|j
|d
�d||<qCqCW|r�j�||k}|r�||}n||j�|�}x[|D]S}|s�|||�}n||dkr ||=||=q�||cd8<q�W|||<g|
|<q�Wt
||
d
||
djt��S(sreturns a list of tuples of (ctx, line) for each line
in the file, where ctx is the filectx of the node where
that line was last changed.
This returns tuples of ((ctx, linenumber), line) for each line,
if "linenumber" parameter is NOT "None".
In such tuples, linenumber means one at the first appearance
in the managed file.
To reduce annotation cost,
this returns fixed value(False is used) as linenumber,
if "linenumber" parameter is "False".cSs|gt|j��|fS(N(Rt
splitlines(ttextR((s5/sys/lib/python2.7/site-packages/mercurial/context.pytdecorate_compatwscSs#|tfgt|j��|fS(N(R5RR�(R�R((s5/sys/lib/python2.7/site-packages/mercurial/context.pytwithout_linenumberzscSsBt|j��}gtd|d�D]}||f^q&|fS(Ni(RR�txrange(R�RR�ti((s5/sys/lib/python2.7/site-packages/mercurial/context.pytwith_linenumber}scsxtj|d|dd�dt�}xK|D]C\\}}}}}|dkr-|d||!|d||+q-q-W|S(NiR�trefinet=i(tmdifft allblocksR�(tparenttchildtblocksta1ta2tb1tb2tt(R�(s5/sys/lib/python2.7/site-packages/mercurial/context.pytpair�s #cs�jj|�S(N(RR�(RB(R((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt<lambda>�sc s@|�jkr�jp!�|�}t�j|d|d|�S(NR�R�(R�R�RJR(R�R�tlog(tgetlogR((s5/sys/lib/python2.7/site-packages/mercurial/context.pytgetctx�s$cs�|j}|jdkrLg|j�D]}|j�|j�f^q%}n.g|jj|j�D]}||f^qb}�r�|j�}|r�|d�|d�j |d�f|d<q�ng|D]'\}}|t
kr��||�^q�S(Nii(R�R�R$R&R�R�R�R@R�RR(RMRAR�R�R+(tfollowR�R�(s5/sys/lib/python2.7/site-packages/mercurial/context.pyR&�s 4.1ii�iN(R$R�tlrucachefuncRR�RJR�R�R5RyRXtpopR�tzipR�(R(R�t
linenumberR�R�R�R�tdecorateR�R&tbasetvisitthisttpcachetneededRMtpcachedtreadyR�RAtreusabletcurr((R�R�R�R�R(s5/sys/lib/python2.7/site-packages/mercurial/context.pytannotateks^
!
cs�|j��j�kr8�j�|kr8|�j�S�j�|krj|j�|krj|�j�S|j�|kr��j�|kr�||j�Si�xj�|fD]\}|jdkr�g|j�D]}|j�|j�f^q�}|�|jdf<q�q�Wi�j�j6|j|j6����fd�}�j�jf|j|jf}}t j
|||�} | r�| \}
}t�j|
d|d�|
�SdS(s�
find the common ancestor file context, if any, of self, and fc2
actx must be the changectx of the common ancestor
of self's and fc2's respective changesets.
cs�|�kr�|S|\}}|�krE�jj|��|<n�|}g|j|�D]}|tkr_||f^q_}|j|�}|r�|j|�n|�|<|S(N(RR�R&RR�Ry(tvertexRMR�R�RAR�tre(tacachetflcacheR((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR&�s
4
R�R�N(
R�R�R$R&R�R�R�R�R�R�tgenericancestorRJR(R(tfc2tactxRlR�R�R&RntbtvRM((R�R�R(s5/sys/lib/python2.7/site-packages/mercurial/context.pyR��s& *$$1 % ccs�i}|}|rdpd}xetr�x4|j�| D]"}|||j�|j�f<q8W|shPn|jt|��}|Vq!WdS(Ni(R$R�R&RRR�tmax(R(tfollowfirstR�RltcutR�((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRms cCs]tj|d�si|_nt|�}||jkrRtj|�|j|<n|j|S(Nt
_copycache(R�tsafehasattrR�Rtcopiest
pathcopies(R(R�tsc2((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�sN(4R�R�R�R$R-R�R�R�R�R�R�R�R9R.R0R4R7R8RJR�R�R|R�RR�RRRQRRRSRTRUR[R`RcR<RR�R�R�R�R�R�R&RRjRkR5R�R�RmR�(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRJ�s` j 1t
workingctxcBs�eZdZdd0d0d0d0d�Zd�Zd�Zd�Zd�Zd�Z e
d��Ze
d ��Zd
�Z
e
d��Ze
d��Ze
d
��Ze
d��Zeeed�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d �Z$d!�Z%d"�Z&d#�Z'd$�Z(d0d%�Z)d&�Z*d'�Z+ee,e,d(�Z-dd)�Z.dd*�Z/d+�Z0d,�Z1d-�Z2d.�Z3d/�Z4RS(1syA workingctx object makes access to data related to
the current working directory convenient.
date - any valid date string or (unixtime, offset), or None.
user - username string, or None.
extra - a dictionary of extra values, or None.
changes - a list of file lists as returned by localrepo.status()
or None to use the repository status.
RcCs^||_d|_d|_||_|r?tj|�|_n|rQ||_n|r�t |d �|_
|d|_|d|_|d|_
nd|_d|_d|_
i|_|r�|j�|_nd|jkr7ytj|jjj��}Wn&tk
r&tjtd���nX||jd<n|jddkrZd|jd<ndS(NiiiRUsbranch name not in UTF-8!RR�(RR$RRt_textR�t parsedatet_datet_usertlistt_statust_unknownt_ignoredt_cleant_extratcopyRVt fromlocalRRUtUnicodeDecodeErrorR'R(R(R)R�RQRRR[tchangesRU((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR-#s6
cCst|jd�dS(Nit+(RRC(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR.CscCsdt|�S(Ns<workingctx %s>(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR0FscCstS(N(R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR9IscCs|jj|dkS(Ns?r(RR(R(RH((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRILscs�|jjj�j�t|j�dkrR|jdj����fd�}n\|j\}}|j|�}|j�|j�|j��������fd�}|S(Niics�||�}�j|�S(N(R|(RM(t copiesgettman(s5/sys/lib/python2.7/site-packages/mercurial/context.pytfuncXscsr�||�}�j|��j|��j|�}}}||krN|S||kr^|S||krn|SdS(NR(R|(RMtfl1tfl2tfla(Rtm1tm2tma(s5/sys/lib/python2.7/site-packages/mercurial/context.pyRbs/(RRR�RXRRCR<R�(R(RRRjtpa((RRRRRs5/sys/lib/python2.7/site-packages/mercurial/context.pyt_buildflagfuncOs&cCs|jjj|j�S(N(RRtflagfuncR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt _flagfuncoscs]|jdj�j��t|j�dkrU|j�j����fd�}n�fd�}|jjj�}|j}|j \}}}}x�d|fd|ffD]}\}} xn| D]f}
|j
|
|
�}||�j
|t�|�|
<y�j|
||
��Wq�t
k
r%q�Xq�Wq�Wx(||D]}
|
�kr9�|
=q9q9W�S(s:generate a manifest corresponding to the working directoryiics|�kr�S�S(N((RM(Rtman2(s5/sys/lib/python2.7/site-packages/mercurial/context.pytgetmanzscs�S(N((RM(R(s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�sRntm(RCR<RRRjRRR�RRRXRR�tOSError(R(RtcopiedtfftmodifiedtaddedtremovedtdeletedR�R,RMtorig((RRs5/sys/lib/python2.7/site-packages/mercurial/context.pyR=ss( %
ccs9|jj}x&|D]}||dkr|VqqWdS(NR+(RR(R(RpRM((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRN�s
cCs|jj�d S(Ni(Rtstatus(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�scCs|jjj�S(N(RRFtusername(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�scCs
tj�S(N(R�tmakedate(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�scCsR|jjj�}|dtkr/|d }ng|D]}t|j|�^q6S(Nii�(RRR&RR(R(RARB((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRC�s
cCs�|jjd|d|d|�}d|_|_|_|rN|d|_n|rd|d|_n|rz|d|_n|d |_|S(s�Explicit status query
Unless this method is used to query the working copy status, the
_status property will implicitly read the status using its default
arguments.tignoredtcleantunknowniiiN(RR(R$RRR R(R(R+R,R-tstat((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR(�s!
cCs|jS(N(R=(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR<�scCs|jp|jjj�S(N(RRRFR)(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRQ�scCs|jS(N(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRR�scCs|jS(N(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRT�scCs't|jd|jd|jd�S(Niii(RLR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRS�scCs|jdS(Ni(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR#�scCs|jdS(Ni(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR$�scCs|jdS(Ni(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR%�scCs|jdS(Ni(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR&�scCs|jdk st�|jS(N(RR$R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR-�scCs|jdk st�|jS(N(RR$R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR+�scCs|jdk st�|jS(N(R R$R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR,�scCstj|jd�S(NRU(RVRWR
(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRU�scCs
d|jkS(NRY(R
(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRZ�scCs|jS(N(R
(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR[�scCs4g}x'|j�D]}|j|j��qW|S(N(R&textendR!(R(R�RA((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR!�scCs4g}x'|j�D]}|j|j��qW|S(N(R&R/R^(R(R�RA((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR^�scCs9tj}x)|j�D]}t||j��}qW|S(N(RatdraftR&R�R`(R(R`RA((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR`�s cCstS(N(R5(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRi�scCsgS(N((R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRk�scCsed|jkr;y|jj|�SWq;tk
r7dSXny|j|�SWntk
r`dSXdS(NR=R(R{R=R|R}RR (R(R�((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR|�s
cCst|j|d|d|�S(s-get a file context from the working directoryRR�(tworkingfilectxR(R(R�R�((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRJscCs|jdj|�S(s*return the ancestor context of self and c2i(RCR�(R(R�((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�scCs+t|jjj|t|j�tt��S(N(RLRRR�RGR�R5(R(R�((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�sc Cs�x0t|j�D]}|j|�j�rtSqW|rE|j�p�|ri|j�|j�j�kp�|j�p�|j �p�|j
�p�|o�|j�S(s-check whether a working directory is modified(RLRGR�R�R�RjRURR#R$R%R&(R(tmissingtmergeRUts((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�s$$cs��fd�}|jj�}|jj|jj}}z�g}x{|D]s}tj|||��|jj|�} ytj| �}
Wn>t k
r�|j
td�||��|j|�qGnX|
j
dkr|j
td�|d|
j
d||�f�ntj|
j�p-tj|
j�s]|j
td�||��|j| �qG||dkr�|j
td �||��qG||d
kr�|j|�qG|j|�qGW|SWd|j�XdS(Ncstjj�|�S(N(tosR�tjoin(RM(tprefix(s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�ss%s does not exist!
i��so%s: up to %d MB of RAM may be required to manage this file
(use 'hg revert %s' to cancel the pending addition)
ii@Bs:%s not added: only files and symlinks supported currently
tamns%s already tracked!
R+(RtwlockRFRR�t
checkportabletwjoinR5tlstatR twarnRRytst_sizeR.tS_ISREGtst_modetS_ISLNKtnormallookuptaddtrelease(R(RR7R6R9RFtdstrejectedRMRAtst((R7s5/sys/lib/python2.7/site-packages/mercurial/context.pyRCs8
%$ cs��fd�}|jj�}z�g}x�|D]�}||jjkry|jjjtd�||��|j|�q.|jj|dkr�|jjj|�q.|jjj|�q.W|SWd|j �XdS(Ncstjj�|�S(N(R5R�R6(RM(R7(s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�@ss%s not tracked!
Rn(
RR9RRFR=RRyR�tdropRD(R(RSR7R6R9RFRM((R7s5/sys/lib/python2.7/site-packages/mercurial/context.pytforget?s
#ccsQxJ|jjjg|jD]}|j�^q�D]}t|j|�Vq2WdS(N(RRRmRCRR(R(RARn((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRmPs)cCs�|j�}|jj�}z�x�|D]�}|jj|dkra|jjjtd�|�q%||dkr|d|p�|d|}|j�}|jj|||j ��|jjj
|�q%WWd|j�XdS(NR+s%s not removed!
ii(R&RR9RRFR=RR�twwriteR|tnormalRD(R(RtpctxsR9RMR�R�((s5/sys/lib/python2.7/site-packages/mercurial/context.pytundeleteUs
,cCs�|jj|�}tjj|�sD|jjjtd�|�n�tjj|�petjj |�s�|jjjtd�|�nc|jj
�}zF|jj|dkr�|jjj|�n|jjj
||�Wd|j�XdS(Ns%s does not exist!
s1copy failed: %s is not a file or a symbolic link
s?r(RR;R5R�tlexistsRFR=RtisfiletislinkR9RRCRRD(R(tsourcetdestRAR9((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRds $cCsux1|j�|j�D]}|jjj|�qWx'|j�D]}|jjj|�qAW|jjj|�dS(sQPerform post-commit cleanup necessary after committing this ctx
Specifically, this updates backing stores this working context
wraps to reflect the fact that the changes reflected by this
workingctx have been committed. For example, it marks
modified and added files as normal in the dirstate.
N(R#R$RRRKR%RHt
setparents(R(RRM((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt
markcommittedts
cCs|jjj�S(N(RRR�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR��sN(5R�R�R�R$R-R.R0R9RIRR�RR=RNRRRRCR5R(R<RQRRRTRSR#R$R%R&R-R+R,RURZR[R!R^R`RiRkR|RJR�R�R�R�RCRIRmRMRRTR�(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRs` # R1cBs�eZdZd
d
d�Zed��Zd�Zd�Zd�Z d�Z
d�Zd�Zd �Z
d
�Zd�Zd�ZRS(suA workingfilectx object makes access to data related to a particular
file in the working directory convenient.cCsS||_||_d|_d|_|_|r=||_n|rO||_ndS(sechangeid can be a changeset revision, node, or tag.
fileid can be a file revision or node.N(RR�R$R�R�R�R�R�(R(R)R�R�R((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR-�s cCs
t|j�S(N(RR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR��scCstS(N(R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR9�scCsd|j�|jfS(Ns%s@%s(R�R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR.�scCsdt|�S(Ns<workingfilectx %s>(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR0�scCs|jj|j�S(N(RtwreadR�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR��scCsE|jjj|j�}|s"dS||jjdjj|t �fS(Ni(
RRR!R�R$R�RCR=RXR(R(trp((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR��sc Cs�d�}|j}|j}|jj}|j�}|rI|dg}n|||d|�|fg}x1|dD]%}|j||||�|f�qsWg|D]9\}} }
| tkr�t|j |d| d|
�^q�S(s5return parent filectxs, following copies if necessarycSs|jj|t�S(N(R=RXR(R�R�((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR��siiR�R�N(N(
R�R�R�RCR�R$RyRRJR(R(R�R�R�tpclR�R�tpcRAR�R,((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR&�s #cCsgS(N((R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRk�scCstj|jj|j��jS(N(R5R<RR;R�R>(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR��scCs}|jj�\}}y/ttj|jj|j��j�|fSWn2t k
rx}|j
t
jkrn�n||fSXdS(N(R�RRR
R5R<RR;R�tst_mtimeR terrnotENOENT(R(R�ttzterr((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRR�s/cCs
|j|�S(sVcompare with other file context
returns True if different than fctx.
(R�(R(R�((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR��sN(R�R�R�R$R-R�R�R9R.R0R�R�R&RkR�RRR�(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR1�s
tmemctxcBs�eZdZdddd�Zd�Zd�Zd�Zd�Zd�Z d�Z
d�Zd �Zd
�Z
d�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zdd�Zd�ZRS(s;Use memctx to perform in-memory commits via localrepo.commitctx().
Revision information is supplied at initialization time while
related files data and is made available through a callback
mechanism. 'repo' is the current localrepo, 'parents' is a
sequence of two parent revisions identifiers (pass None for every
missing parent), 'text' is the commit message and 'files' lists
names of files touched by the revision (normalized and relative to
repository root).
filectxfn(repo, memctx, path) is a callable receiving the
repository, the current memctx object and the normalized path of
requested file, relative to repository root. It is fired by the
commit function for every file in 'files', but calls order is
undefined. If the file is available in the revision being
committed (updated or added), filectxfn returns a memfilectx
object. If the file was removed, filectxfn raises an
IOError. Moved files are represented by marking the source file
removed and the new file added with copy information (see
memfilectx).
user receives the committer name and defaults to current
repository username, date is the commit date in any format
supported by util.parsedate() and defaults to current date, extra
is a dictionary of metadata or is left empty.
c Cs'||_d|_d|_||_|r9tj|�pBtj�|_||_ g|D]} | pgt
^qX}|\}
}g|
|fD]} t|j| �^q�|_t
t|��}|ggggg|_||_|r�j�p�|_|jjdd�dkr#d|jd<ndS(NRURR�(RR$RRRR�RR*RRRRRCRLR�Rt
_filectxfnRR
RX(R(R)R&R�RSt filectxfnRQRRR[RARRj((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR-�s $ . cCst|jd�dS(NiR(RRC(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR.scCs|jS(N(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR/ scCstS(N(R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR9scCs
|j|�S(N(RJ(R(RH((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRKscCs|jdS(Ni(RC(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRscCs|jdS(Ni(RC(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRjscCs|jp|jjj�S(N(RRRFR)(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRQscCs|jS(N(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRRscCs|jS(N(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRTscCs
|j�S(N(R#(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRSscCs|jdS(Ni(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR#scCs|jdS(Ni(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR$!scCs|jdS(Ni(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR%#scCs|jdS(Ni(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR&%scCs|jdS(Ni(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR-'scCs|jdS(Ni(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR+)scCs|jdS(Ni(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR,+scCstj|jd�S(NRU(RVRWR
(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRU-scCs|jS(N(R
(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR[/scCs||j�S(N(R|(R(RM((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR|1scCs|jS(s)return contexts for each parent changeset(RC(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR&4scCs|j|j||�S(s-get a file context from the working directory(R_R(R(R�R�((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRJ8scCs|jj|�S(scommit context to the repo(Rt commitctx(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytcommit<sN(R�R�R�R$R-R.R/R9RKRRjRQRRRTRSR#R$R%R&R-R+R,RUR[R|R&RJRb(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR^�s4 t
memfilectxcBsheZdZeed
d�Zd�Zd�Zd�Zd�Z d�Z
d�Zd�Zd �Z
RS(sYmemfilectx represents an in-memory file to commit.
See memctx for more details.
cCs\||_||_|rdp!d|r-dp0d|_d|_|rX|tf|_ndS(sQ
path is the normalized file path relative to repository root.
data is the file content as a string.
islink is True if the file is a symbolic link.
isexec is True if the file is executable.
copied is the source file path if current file was copied in the
revision being committed, or None.R,RRBN(R�t_datat_flagsR$t_copiedR(R(R�R�RPtisexecR!((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR-Es % cCstS(N(R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR9TscCsd|j�|jfS(Ns%s@%s(R�R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR.VscCs|jS(N(R�(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�XscCs|jS(N(Rd(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�ZscCs|jS(N(Re(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR|\scCs
d|jkS(NRB(Re(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRg^scCs
d|jkS(NR,(Re(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRP`scCs|jS(N(Rf(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR�bsN(R�R�R�R5R$R-R9R.R�R�R|RgRPR�(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRc@s ("RRRRRRti18nRR�R�RR�R�RDR�RVRaR�R�R�R5RZR.RqRrRgR�tobjectRRJRR1R^Rc(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt<module>s"(l$ ���Qh
|