ó ðÚ§Oc@sdddlmZddlmZddlZddlZddlZddlZddlZddl Z ddl Z dZ d„Z d„Z d„Zd„Zd efd „ƒYZid efd 6d efd 6d d„fd6dd„fd6Zddd gZd„Zd„Zdefd„ƒYZdefd„ƒYZd„Zdefd„ƒYZdS(iÿÿÿÿ(t_(tnullrevNt 20s20s20s20scCsM|j|ƒ}t|ƒ|krItjtdƒt|ƒ|fƒ‚n|S(s=read n bytes from stream.read and abort if less was availables5stream ended unexpectedly (got %d bytes, expected %d)(treadtlentutiltAbortR(tstreamtnts((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyt readexactlys cCsht|dƒ}tjd|ƒd}|dkrW|rStjtdƒ|ƒ‚ndSt||dƒS(s-return the next chunk from stream as a stringis>lisinvalid chunk length %dt(R tstructtunpackRRR(Rtdtl((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pytgetchunks cCstjd|dƒS(s*return a changegroup chunk header (string)s>li(R tpack(tlength((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyt chunkheader"scCstjddƒS(sBreturn a changegroup chunk header (string) for a zero-length chunks>li(R R(((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyt closechunk&st nocompresscBseZd„Zd„ZRS(cCs|S(N((tselftx((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pytcompress+scCsdS(NR ((R((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pytflush-s(t__name__t __module__RR(((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyR*s R tHG10UNtHG10cCs tjƒS(N(tbz2t BZ2Compressor(((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyt5stHG10BZtHG10GZcCs tjƒS(N(tzlibt compressobj(((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyR 6scCsÄd }d }z{|r't|dƒ}n0tjddddƒ\}}tj|dƒ}|}t|\}}|j|ƒ|ƒ}t} d} x×| s¥| dkrht } | d7} x”t rKt |ƒ} | sÔPnt} |j|j t t | ƒƒƒƒd} xC| t | ƒkrG| d } |j|j | | | !ƒƒ| } qWq¸W|j|j tƒƒƒq’W|j|jƒƒd }|SWd |d k r£|jƒn|d k r¿tj|ƒnXd S( súWrite a bundle file and return its filename. Existing files will not be overwritten. If no filename is specified, a temporary file is created. bz2 compression can be turned off. The bundle file will be deleted in case of errors. twbtprefixs hg-bundle-tsuffixs.hgiiiiNi(tNonetopenttempfiletmkstemptostfdopent bundletypestwritetFalsetTrueRRRRRRtclosetunlink(tcgtfilenamet bundletypetfhtcleanuptfdtheadert compressortztemptytcounttchunktpostnext((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyt writebundle<sF      "    cCsf|dkr|S|dkr(d„}n+|dkr@d„}ntjd|ƒ‚tj||ƒƒS(NtUNtGZcss8tjƒ}x%tj|ƒD]}|j|ƒVqWdS(N(R#t decompressobjRt filechunkitert decompress(tftzdR?((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyt generatorws tBZcssHtjƒ}|jdƒx(tj|dƒD]}|j|ƒVq,WdS(NRKi(RtBZ2DecompressorRGRRF(RHRIR?((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyRJ|s  sunknown bundle compression '%s'(RRt chunkbuffer(R7talgRJ((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyt decompressorss     t unbundle10cBs‰eZeZejeƒZd„Zd„Zd„Z d„Z d„Z d„Z d„Z d„Zd„Zd „Zd „Zd „ZRS( cCs(t||ƒ|_||_d|_dS(N(ROt_streamt_typeR(tcallback(RR7RN((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyt__init__ˆs cCs |jdkS(NRC(RR(R((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyt compressedŒscCs|jj|ƒS(N(RQR(RR((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyRŽscCs|jj|ƒS(N(RQtseek(RR@((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyRVscCs |jjƒS(N(RQttell(R((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyRW’scCs |jjƒS(N(RQR2(R((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyR2”scCsxt|jdƒ}tjd|ƒd}|dkrZ|rVtjtdƒ|ƒ‚ndS|jrp|jƒn|dS(Nis>lisinvalid chunk length %d(R RQR R RRRRS(RRR((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyt chunklength—s   cCsiS(s*v10 does not have a changelog header chunk((R((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pytchangelogheader¢scCsiS(s)v10 does not have a manifest header chunk((R((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pytmanifestheader¦scCs5|jƒ}|siSt|j|ƒ}td|ƒS(sBreturn the header of the filelogs chunk, v10 only has the filenameR5(RXR RQtdict(RRtfname((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyt filelogheaderªs  cCs@|\}}}}|dkr'|}n|}|||||fS(N(R((Rt headertupletprevnodetnodetp1tp2tcst deltabase((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyt _deltaheader²s   c Cs¥|jƒ}|siSt|j|jƒ}tj|j|ƒ}t|j||jƒ}|j||ƒ\}}}} } td|d|d|d| d| d|ƒS(NR`RaRbRcRdtdelta( RXR RQtdeltaheadersizeR R t deltaheaderReR[( RR_Rt headerdataR:RfR`RaRbRdRc((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyt deltachunkºs !(RRt_BUNDLE10_DELTA_HEADERRhR tcalcsizeRgRTRURRVRWR2RXRYRZR]ReRj(((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyRP…s          theaderlessfixupcBseZd„Zd„ZRS(cCs||_||_dS(N(t_ht_fh(RR7th((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyRTÆs cCsp|jr`|j| |j|}|_t|ƒ|kr\|t|j|t|ƒƒ7}n|St|j|ƒS(N(RnRR Ro(RRR((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyRÉs  #(RRRTR(((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyRmÅs cCsát|dƒ}|sUd}|jdƒ rU|jdƒrUt||ƒ}d}qUn|dd!|dd!|dd!}}}|dkr¦tjtd ƒ|ƒ‚n|d krÔtjtd ƒ||fƒ‚nt||ƒS( NiRtHGtRiiis%s: not a Mercurial bundlet10s%s: unknown bundle version %s(R t startswithRmRRRRP(R7R\R:tmagictversionRN((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyt readbundleÑs )  "tbundle10cBs;eZeZd„Zd„Zd„Zd„Zd„ZRS(cCs ||_dS(N(t_lookup(Rtlookup((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyRTäscCstƒS(N(R(R((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyR2æscCstt|ƒƒ|S(N(RR(RR\((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyt fileheaderèsccsÿ|j|ƒ}|j|ƒ\}}|}d}|tkrc|j|ƒ} tjt| ƒƒ}n|j||ƒ} |j||ƒ} |j |ƒ\} } |j|ƒ} |j || | | | ƒ}||7}t|ƒt| ƒ}t |ƒV|V| VdS(NR ( R`t parentrevsRtrevisiontmdiffttrivialdiffheaderRtrevdiffRytparentstbuilddeltaheaderR(RtrevlogtrevtprevR`RaRbtbaseR&Rftlinknodetp1ntp2ntbasenodetmetaR((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pytrevchunkês"   cCstj|j||||ƒS(N(R RRh(RR`RˆR‰RŠR‡((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyR‚þs( RRRkRhRTR2R{RŒR‚(((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyRxâs     (ti18nRR`RR~RR R,RR#R*RkR RRRtobjectRR.tbundlepriorityRBRORPRmRwRx(((s9/sys/lib/python2.7/site-packages/mercurial/changegroup.pyts*<     7 @