ó žçƒQc@sÉddlmZmZmZddlmZddlZddlZddlZddl Z idd6Z d„Z d„Z d„Z d „Zd efd „ƒYZd „Zd ejfd„ƒYZdS(iÿÿÿÿ(tbinthextnullid(t_NtdefaulttbranchcCs:|jddƒjddƒjddƒ}|jddƒS( s >>> d = {'nl': chr(10), 'bs': chr(92), 'cr': chr(13), 'nul': chr(0)} >>> s = "ab%(nl)scd%(bs)s%(bs)sn%(nul)sab%(cr)scd%(bs)s%(nl)s" % d >>> s 'ab\ncd\\\\n\x00ab\rcd\\\n' >>> res = _string_escape(s) >>> s == res.decode('string_escape') True s\s\\s s\ns s\rts\0(treplace(ttext((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyt_string_escapes *cCs£tjƒ}x|jdƒD]}|rd|krm|jddƒ}|jddƒ}|jddƒ}n|jdƒjdd ƒ\}}|||>> sorted(decodeextra(encodeextra({'foo': 'bar', 'baz': chr(0) + '2'}) ... ).iteritems()) [('baz', '\x002'), ('branch', 'default'), ('foo', 'bar')] >>> sorted(decodeextra(encodeextra({'foo': 'bar', ... 'baz': chr(92) + chr(0) + '2'}) ... ).iteritems()) [('baz', '\\\x002'), ('branch', 'default'), ('foo', 'bar')] Rs\0s\\s\\ s tt string_escapet:i(t _defaultextratcopytsplitRtdecode(Rtextratltktv((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyt decodeextras  !cCs@gt|ƒD] }td|||fƒ^q }dj|ƒS(Ns%s:%sR(tsortedR tjoin(tdRtitems((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyt encodeextra2s3cCs5djg|jƒD]}|jƒ^qƒjdƒS(s>strip trailing whitespace and leading and trailing empty liness (Rt splitlinestrstriptstrip(tdescR((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyt stripdesc7stappendercBs\eZdZd„Zd„Zd„Zd„Zd„Zdd„Zdd „Z d „Z RS( s`the changelog index must be updated last on disk, so we use this class to delay writes to itcCs:||_||_|jƒ|_tj|ƒj|_dS(N(tdatatfpttelltoffsettutiltfstattst_sizetsize(tselfR"tbuf((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyt__init__>s  cCs|jtdj|jƒƒS(NR (R(tlenRR!(R)((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pytendDscCs|jS(N(R$(R)((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyR#FscCsdS(N((R)((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pytflushHscCs|jjƒdS(N(R"tclose(R)((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyR/JsicCs„|dkr||_n@|dkr6|j|7_n"|dkrX|jƒ||_n|j|jkr€|jj|jƒndS(s,virtual file offset spans real file and dataiiiN(R$R-R(R"tseek(R)R$twhence((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyR0Ms    iÿÿÿÿcCsêd}|j|jkrg|jj|ƒ}|}|jt|ƒ7_|dkrg|t|ƒ8}qgn|dkræ|j|j}|jjddj|jƒƒ|jd3|jd|||!}|jt|ƒ7_||7}n|S(s5only trick here is reads that span real file and dataR ii(R$R(R"treadR,R!tinsertR(R)tcounttrettstdoff((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyR2Xs    cCs/|jjt|ƒƒ|jt|ƒ7_dS(N(R!tappendtstrR$R,(R)R6((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pytwritejs( t__name__t __module__t__doc__R+R-R#R.R/R0R2R:(((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyR ;s      csd‡‡‡‡fd†}|S(NtrcsR|ˆkrˆ||ƒSˆr<ˆ|d|jddƒƒStˆ||ƒˆƒS(Ns.atatw(RR (tnametmode(R*tdiverttopenerttarget(s7/sys/lib/python2.7/site-packages/mercurial/changelog.pytoos   ((RDRERCR*RF((R*RCRDREs7/sys/lib/python2.7/site-packages/mercurial/changelog.pyt delayopenernst changelogcBsÝeZd„Zd„Zd„Zddd„Zejd„ƒZ d„Z d„Z d„Z d „Z d „Zd „Zd „Zd „Zd„Zd„Zd„Zd„Zdd„Zd„Zddd„Zd„ZRS(cCsitjj||dƒ|jr>|jtjM_t|_n||_t|_t|_ t ƒ|_ dS(Ns 00changelog.i( trevlogR+t _initemptytversiontREVLOGGENERALDELTAtFalset _generaldeltat _realopenert_delayedt_divertt frozensett filteredrevs(R)RD((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyR+ys     cCsGx@tt|ƒdddƒD]"}||jkr|j|ƒSqWdS(sfiltered version of revlog.tipiiþÿÿÿiÿÿÿÿN(txrangeR,RStnode(R)ti((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyttip„s#cs;tˆjƒdkr%tjjˆƒS‡fd†}|ƒS(s#filtered version of revlog.__iter__ic3s8x1ttˆƒƒD]}|ˆjkr|VqqWdS(N(RTR,RS(RV(R)(s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyt filterediters(R,RSRIt__iter__(R)RX((R)s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyRYŠsiccsAx:tt|ƒj||ƒD]}||jkr|VqqWdS(sfiltered version of revlog.revsN(tsuperRHtrevsRS(R)tstarttstopRV((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyR[–s"cCs|j|jdƒƒ|jS(Ni(trevRUt _nodecache(R)((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pytnodemapœscCs9y |j|ƒ}||jkSWntk r4tSXdS(s"filtered version of revlog.hasnodeN(R^RStKeyErrorRM(R)RURV((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pythasnode¢s  cCs&|jr|jƒStt|ƒjƒS(N(RSt _headrevsRZRHtheadrevs(R)((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyRdªs  cOs-|j st‚tt|ƒj||ŽdS(N(RStAssertionErrorRZRHR(R)targstkwargs((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyR°scCsRtt|ƒj|ƒ}||jkrNtjt|ƒ|jtdƒƒ‚n|S(sfiltered version of revlog.revsno node( RZRHR^RSterrort LookupErrorRt indexfileR(R)RUR>((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyR^¶s'cCs4||jkrt|ƒ‚ntt|ƒj|ƒS(sfiltered version of revlog.node(RSt IndexErrorRZRHRU(R)R^((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyRU½scCs4||jkrt|ƒ‚ntt|ƒj|ƒS(s"filtered version of revlog.linkrev(RSRkRZRHtlinkrev(R)R^((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyRlÃscCs4||jkrt|ƒ‚ntt|ƒj|ƒS(s%filtered version of revlog.parentrevs(RSRkRZRHt parentrevs(R)R^((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyRmÉscCs4||jkrt|ƒ‚ntt|ƒj|ƒS(s filtered version of revlog.flags(RSRkRZRHtflags(R)R^((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyRnÏscCsOt|_t|ƒdk|_g|_t|j|j|j|jƒ|_dS(s2delay visibility of index updates to other readersiN( tTrueRPR,RQt _delaybufRGRORjRD(R)((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyt delayupdateÕs   cCs¼t|_|j|_|jr^|j|jdƒ}|j}|jƒtj ||d ƒnM|j r«|j|jdƒ}|j dj |j ƒƒ|jƒg|_ n|j |ƒdS(sfinalize index updatess.aiþÿÿÿR?R N(RMRPRORDRQRjRAR/R%trenameRpR:Rtcheckinlinesize(R)ttrtnfiletnR"((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pytfinalizeÝs        cCsItj|j|ƒ}|j|_|j|_|j|_|j|_dS(N(RIRDtindexR`R_t _chunkcache(R)tfileR>((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyt readpendingïs    cCs|jr|j|jƒ}|j|jddƒ}|j|jƒƒ|jdj|jƒƒ|jƒg|_t|_n|jrŒtSt S(sDcreate a file containing the unfinalized state for pretxnchangegroups.aR@R ( RpRORjR:R2RR/RoRQRM(R)tfp1tfp2((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyt writependingös     cCs&|js"tjj|||ƒndS(N(RPRIRs(R)RtR"((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyRs s c CsM|j|ƒ}|s+tdd gdtfS|jdƒ}tj||dƒ}|| jdƒ}t|dƒ}tj|dƒ}|djddƒ}t|ƒdkröt |dƒ} yt |dƒ} Wnt k rìd} nXt} n1t |dƒt |dƒ} } t |dƒ} |d} ||| | f| || fS( sí format used: nodeid : manifest node in ascii user : user, no or allowed time tz extra : date (time is int or float, timezone is int) : extra is metadata, encoded and separated by '' : older versions ignore it files : files modified by the cset, no or allowed (.*) : comment (free text, ideally utf-8) changelog v0 doesn't use extra R is is it i(ii( trevisionRR RxtencodingttolocalRRR,tfloattintt ValueErrorR( R)RURtlastRRtmanifesttuserttdatattimettimezoneRtfiles((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyR2 s(    ! c Cstj|ƒtj|ƒ}}|jƒ}|sItjtdƒƒ‚nd|krwtjtdƒt|ƒƒ‚nt|ƒ}|rŸdtj |ƒ} ndtj ƒ} | r| j dƒ} | d krÚ| d=q| dkrtjtd ƒ| ƒ‚qn| r*t | ƒ} d | | f} nt |ƒ|| gt|ƒd|g} dj| ƒ} |j| |t|ƒ||ƒS(Nsempty usernames susername %s contains a newlines%d %dRRR t.tnullRWsthe name '%s' is reserveds%s %s(sdefaultR (RRŽstip(Rt fromlocalRRht RevlogErrorRtreprRR%t parsedatetmakedatetgetRRRRt addrevisionR,(R)R‡RŒRt transactiontp1tp2RˆtdateRt parseddateRRR((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pytadd3s0       )cCs#tj|j|ƒdjdƒƒS(sˆreturn the branch of a revision This function exists because creating a changectx object just to access this is costly.iR(RR‚R2R”(R)R^((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyRXsN(R;R<R+RWRYtNoneR[R%t propertycacheR`RbRdRR^RURlRmRnRqRwR{R~RsR2R›R(((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyRHxs*                '$(RURRRti18nRR%RhRIRR R RRRtobjectR RGRH(((s7/sys/lib/python2.7/site-packages/mercurial/changelog.pyts0     3