Qc@sddlmZmZmZmZmZddlmZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZe jZdefdYZdefdYZdefd YZd efd YZd efd YZ defdYZ!dS(i(tnullidtnullrevtshortthextbin(t_Nt changectxcBsreZdZddZdZdZdZdZdZdZ d Z e d Z e d Z e d Ze d Ze dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!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/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d@d@d5Z8d6Z9d7Z:d8Z;d9Z<gd@d@d:d;Z=d@d@d<Z>e d=Z?d>Z@d?ZARS(As]A changecontext object makes access to data related to a particular changeset convenient.tcCs,|dkrd}n||_t|try|jj||_Wn*tk rrtjt d|nX||_ dSt|t rt |}n|dkr|j j|_|jj|j|_ dS|dkrt|_t|_ dS|dkr4|jj|_|jj|j|_ dSt|dkry&||_|jj||_ dSWqtk rqXnyt|}t ||krtnt|j}|dkr||7}n|dks||krtn||_ |jj||_dSWntttfk r5nXt|d kry/t||_|jj|j|_ dSWqttfk rqXn||jkr|j||_|jj|j|_ dS||jjkr|jj||_|jj|j|_ dSy2|j||_|jj|j|_ dSWntjk rXnX|jj||_|jdk r|jj|j|_ dS||jj j krtj!t d t"|ny%t|dkrt#|}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 tlent LookupErrort ValueErrort OverflowErrorRt TypeErrort _bookmarkst _tagscachettagst branchtipt _partialmatchtNonet unfilteredtparentstAbortRR(tselftrepotchangeidtrtl((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt__init__s                   cCst|jS(N(RR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt__str__uscCs |jS(N(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt__int__xscCsdt|S(Ns(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt__repr__{scCs0yt|jSWntk 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 ||k S(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|jS(N(R RtreadR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt _changesetscCs|jjj|jdS(Ni(R tmanifestR:R;(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt _manifestscCs|jjj|jdS(Ni(R R<t readdeltaR;(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt_manifestdeltascCsX|jjj|j}|dtkr5|d }ng|D]}t|j|^q<S(Nii(R Rt parentrevsRRR(R(tptx((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt_parentss cCstj||jjS(N(tsubrepotstateR tui(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytsubstatescCs ||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|jD] }|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 changesetscCs|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.pyt manifestnodescCs|jS(N(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRscCs|jS(N(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRscCs t|jS(N(RR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRscCs |jdS(Ni(R;(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytuserscCs |jdS(Ni(R;(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytdatescCs |jdS(Ni(R;(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytfilesscCs |jdS(Ni(R;(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt descriptionscCstj|jdjdS(Nitbranch(tencodingttolocalR;tget(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRUscCsd|jdkS(Ntclosei(R;(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt closesbranchscCs |jdS(Ni(R;(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytextrascCs|jj|jS(N(R tnodetagsR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR!scCs|jj|jS(N(R t nodebookmarksR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt bookmarksscCs|jjj|j|jS(N(R t _phasecachetphaseR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR`scCstj|jS(N(tphasest phasenamesR`(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytphasestrscCs|jtjkS(N(R`Ratpublic(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytmutablescCs|jtj|jdkS(Ntvisible(Rtrepoviewt filterrevsR (R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pythiddenscCs|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.pyRscCs0t|jdkr |jdSt|jdS(Niii(RRCRR (R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytp2s cCs;|jjj|j}g|D]}t|j|^qS(s(return contexts for each child changeset(R RtchildrenRR(R(tcRB((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRksccs;x4|jjj|jgD]}t|j|VqWdS(N(R Rt ancestorsRR(R(ta((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRms"ccs;x4|jjj|jgD]}t|j|VqWdS(N(R Rt descendantsRR(R(td((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRos"cCs|jtj|jdkS(s!True if the changeset is obsoletetobsolete(RtobsmodtgetrevsR (R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRqscCs|jtj|jdkS(s True if the changeset is extincttextinct(RRrRsR (R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRtscCs|jtj|jdkS(s;True if the changeset is not obsolete but it's ancestor aretunstable(RRrRsR (R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRuscCs|jtj|jdkS(sTrue 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.pyRvscCs|jtj|jdkS(sIs 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"|jp!|jp!|jS(s=True if the changeset is either unstable, bumped or divergent(RuRvRw(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyttroubled scCs^g}|jr"|jdn|jr>|jdn|jrZ|jdn|S(sreturn 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.pyRzs   cCs d|jkrey!|j||jj|fSWqetk ratj|j|tdqeXnd|jks||jkr||j kr|j ||j j|fSn|j j j |j d|\}}|stj|j|tdn||fS(NR=snot found in manifestR?i(t__dict__R=tflagstKeyErrorRtManifestLookupErrorRRRSR?R R<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(RRR(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$RRJR (R(RRR((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRJ<s cCsS|j}|dkr(|jdj}n|jjj|j|}t|j|S(s< return the ancestor context of self and c2 iN(RR$RCR RtancestorR(R(tc2tn2tn((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRCs   cCs|jjj|j|jS(s-True if other is descendant of this changeset(R Rt descendantR(R(R6((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRNsccst|j}|jdx>|D]6}||krH|j|n||r&|Vq&q&WxYt|D]K}||jkrqmn|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.pytsubdstglobc Cs=|j}tj|j|j||||d|jd|S(Ntauditortctx(R tmatchmodRtroottgetcwdR(R(tpatstincludetexcludetdefaultR+((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRgs  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 matcherRtoptsN( R$RR RR tpatchtdiffoptsRFtdiffR(R(tctx2RRR((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRms !cCstj|jS(N(tscmutiltdirsR=(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRwscCs|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&RRjRkRmRoRqRtRuRvRwRxRzRRR|R$RJRRRRRRRRR(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRs| _                                                  RJcBseZdZd/d/d/d/dZedZedZedZedZ edZ edZ dZ d Z d Zd Zd Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#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(R t_pathR$tAssertionErrort_filelogt _changeidt _changectxt_fileid(R(R)RR*RRR((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR-s          cCsHyt|j|jSWn*tjk rCt|jj|jSXdS(N(RR RRRR%(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRscCs|jj|jS(N(R tfileR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRscCs3d|jkr|jjS|jj|jSdS(NR(R{RRRtlinkrevt_filerev(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRs cCs9d|jkr"|jj|jS|jj|jSdS(NR(R{RtlookupRRRR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt _filenodescCs|jj|jS(N(RRR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRscCs|jS(N(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt _repopathscCs+y|jtSWntjk r&tSXdS(N(RtTrueRRR5(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR9s cCs d|jt|jfS(Ns%s@%s(RRR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR.scCsdt|S(Ns (R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR0scCs9yt|j|jfSWntk r4t|SXdS(N(R1RRR2R3(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR4s cCs?y&|j|jko$|j|jkSWntk r:tSXdS(N(RRR2R5(R(R6((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR7s  cCs ||k S(N((R(R6((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR8scCs"t|j|jd|d|jS(sMopens an arbitrary revision of the file without opening a new filelogRR(RJR RR(R(R((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRJscCs|jS(N(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytfilerevscCs|jS(N(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRscCs|jj|jS(N(RR|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.pyRscCsKd|jkr|jjSd|jkr8|jjS|jj|jS(NRR(R{RRRRR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRs   cCs|jj|jS(N(RRR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRscCs |jjS(N(RR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRscCst|jS(N(RR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRscCs |jjS(N(RRQ(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRQscCs |jjS(N(RRR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRRscCs |jjS(N(RRS(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRS scCs |jjS(N(RRT(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRT scCs |jjS(N(RRU(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRUscCs |jjS(N(RR[(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR[scCs |jjS(N(RR`(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR`scCs |jjS(N(RRc(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRcscCs |jjS(N(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.pyRscCs|jj|jS(N(RR: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.pyRscCs|jj|jS(N(RtsizeR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRscCs0ytj|jSWntk r+tSXdS(N(tutiltbinaryRtIOErrorR5(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pytisbinary"s cCso|jdkr7|jjsO|jd|jksO|j|jkrk|jj|j|jSt S(sVcompare with other file context returns True if different than fctx. iN( RR$R t_encodefilterpatsRRtcmpRRR(R(tfctx((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR(s  cCs|jj|j}|s|S|j|jkr;|S|j}|j}xK|jjD]:}y||j|krdSWq`t j k rq`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( RtrenamedRRRRRR&RR$RR(R(RtnametfnodeRA((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR7s  c Cs|j}|j}g|jj|jD]}|||f^q(}|jj|j}|r||d|ddf|dsc s@|jkrjp!|}tj|d|d|S(NRR(RRRJR (RRtlog(tgetlogR((s5/sys/lib/python2.7/site-packages/mercurial/context.pytgetctxs$cs|j}|jdkrLg|jD]}|j|jf^q%}n.g|jj|jD]}||f^qb}r|j}|r|d|dj |df|d(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(R R(R(RH((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRILscs|jjjjt|jdkrR|jdjfd}n\|j\}}|j|}|j|j|jfd}|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/   (R RRRXRRCR<R(R(RRRjtpa((RRRRRs5/sys/lib/python2.7/site-packages/mercurial/context.pyt_buildflagfuncOs& cCs|jjj|jS(N(R RtflagfuncR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt _flagfuncosc s]|jdjjt|jdkrU|jjfd}nfd}|jjj}|j}|j \}}}}xd|fd|ffD]}\}} xn| D]f} |j | | } || j | t || t k r|j t d|||j |qGnX| j dkr |j t d|d| j d||fntj| jp-tj| js]|j t d|||j | qG||dkr|j t d ||qG||d kr|j|qG|j|qGW|SWd|jXdS( Ncstjj|S(N(tosRtjoin(RM(tprefix(s5/sys/lib/python2.7/site-packages/mercurial/context.pyRss%s does not exist! iso%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+(R twlockRFRRt checkportabletwjoinR5tlstatR twarnRRytst_sizeR.tS_ISREGtst_modetS_ISLNKt normallookuptaddtrelease( R(RR7R6R9RFtdstrejectedRMRAtst((R7s5/sys/lib/python2.7/site-packages/mercurial/context.pyRCs8   %$ csfd}|jj}zg}x|D]}||jjkry|jjjtd|||j|q.|jj|dkr|jjj|q.|jjj|q.W|SWd|j XdS(Ncstjj|S(N(R5RR6(RM(R7(s5/sys/lib/python2.7/site-packages/mercurial/context.pyR@ss%s not tracked! Rn( R R9RRFR=RRyRtdropRD(R(RSR7R6R9RFRM((R7s5/sys/lib/python2.7/site-packages/mercurial/context.pytforget?s #ccsQxJ|jjjg|jD]}|j^qD]}t|j|Vq2WdS(N(R RRmRCRR(R(RARn((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRmPs)cCs|j}|jj}zx|D]}|jj|dkra|jjjtd|q%||dkr|d|p|d|}|j}|jj|||j |jjj |q%WWd|j XdS(NR+s%s not removed! ii( R&R R9RRFR=RRtwwriteR|tnormalRD(R(RtpctxsR9RMRR((s5/sys/lib/python2.7/site-packages/mercurial/context.pytundeleteUs   , cCs|jj|}tjj|sD|jjjtd|ntjj|petjj |s|jjjtd|nc|jj }zF|jj |dkr|jj j |n|jj j ||Wd|jXdS(Ns%s does not exist! s1copy failed: %s is not a file or a symbolic link s?r(R R;R5RtlexistsRFR=RtisfiletislinkR9RRCR RD(R(tsourcetdestRAR9((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR ds $ cCsux1|j|jD]}|jjj|qWx'|jD]}|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$R RRKR%RHt setparents(R(RRM((s5/sys/lib/python2.7/site-packages/mercurial/context.pyt markcommittedts cCs|jjjS(N(R RR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRsN(5RRRR$R-R.R0R9RIRRRR=RNRRRRCR5R(R<RQRRRTRSR#R$R%R&R-R+R,RURZR[R!R^R`RiRkR|RJRRRRRCRIRmRMR RTR(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRs`                                #     R1cBseZdZd d dZedZdZdZdZ dZ dZ dZ d 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(R RR$RRRRR(R(R)RRR((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR-s    cCs t|jS(N(RR (R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRscCstS(N(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR9scCsd|j|jfS(Ns%s@%s(RR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR.scCsdt|S(Ns(R(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR0scCs|jj|jS(N(R twreadR(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRscCsE|jjj|j}|s"dS||jjdjj|t fS(Ni( R RR!RR$RRCR=RXR(R(trp((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRsc Csd}|j}|j}|jj}|j}|rI|dg}n|||d||fg}x1|dD]%}|j|||||fqsWg|D]9\}} } | tkrt|j |d| d| ^qS(s5return parent filectxs, following copies if necessarycSs|jj|tS(N(R=RXR(RR((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRsiiRRN(N( RRRRCRR$RyRRJR ( R(RRRtpclRRtpcRARR,((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR&s     #cCsgS(N((R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRkscCstj|jj|jjS(N(R5R<R R;RR>(R(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRscCs}|jj\}}y/ttj|jj|jj|fSWn2t k rx}|j t j krnn||fSXdS(N( RRRR R5R<R R;Rtst_mtimeR terrnotENOENT(R(Rttzterr((s5/sys/lib/python2.7/site-packages/mercurial/context.pyRRs/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.pyRsN(RRRR$R-RRR9R.R0RRR&RkRRRR(((s5/sys/lib/python2.7/site-packages/mercurial/context.pyR1s          tmemctxcBseZdZddddZdZdZdZdZdZ dZ dZ d Z d Z d Zd Zd ZdZdZdZdZdZdZdZdZdZddZdZRS(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|jpi|_|jjdddkr#d|jds"(l  $   onQh