ó žçƒQc@sÇddlmZddlmZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZdZdZd„Zidgd6d d gd 6d d gd6dgd6Zd„Zdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZied6ed6d„d 6d„d6d„d6ed6Zeddde d„Z!dS( iÿÿÿÿ(t_(thexNi€i cCs$|rtj|ƒ}n}t|tƒs6tdƒ‚ntjj|ƒ}|jƒ}x>t j |gƒD]*}|j |ƒrg|t |ƒ }PqgqgWtjjtj |ƒƒ}tj|ƒ}|j dƒsÛ|d7}n|jdƒstjj|ƒsd|kr tjtdƒƒ‚n|S(sWchoose prefix to use for names in archive. make sure prefix is safe for consumers.s dest must be string if no prefixt/s../s/../s*archive prefix contains illegal components(tutiltnormpatht isinstancetstrt ValueErrortostpathtbasenametlowertextstgettendswithtlent localpathtpconvertt startswithtisabstAbortR(tdesttkindtprefixR tsfxtlpfx((s6/sys/lib/python2.7/site-packages/mercurial/archival.pyt tidyprefixs"  -s.tarttars.tbz2s.tar.bz2ttbz2s.tgzs.tar.gzttgzs.ziptzipcsDx=tjƒD]/\}}tj‡fd†|Dƒƒr |Sq WdS(Nc3s|]}ˆj|ƒVqdS(N(R(t.0text(R(s6/sys/lib/python2.7/site-packages/mercurial/archival.pys 6s(R t iteritemsRtanytNone(RRt extensions((Rs6/sys/lib/python2.7/site-packages/mercurial/archival.pyt guesskind4sttaritcBsEeZdZdejfd„ƒYZdd„Zd„Zd„ZRS(sawrite archive to tar file or stream. can write uncompressed, or compress with gzip or bzip2.tGzipFileWithTimecBseZd„Zd„ZRS(cOsed}d|kr$|jdƒ}n|dkrBtjƒ|_n ||_tjj|||ŽdS(Nt timestamp(R#tpopttimeR(tgziptGzipFilet__init__(tselftargstkwR(((s6/sys/lib/python2.7/site-packages/mercurial/archival.pyR-As   cCs÷|jjdƒ|jjdƒy |j}Wntk rI|j}nX|rl|jdƒrl|d }nd}|r„tj}n|jjt|ƒƒtj |jt |j ƒƒ|jjdƒ|jjdƒ|ró|jj|dƒndS( Ns‹ss.gziýÿÿÿissÿt( tfileobjtwritetnametAttributeErrortfilenameRR+tFNAMEtchrtwrite32utlongR((R.tfnametflags((s6/sys/lib/python2.7/site-packages/mercurial/archival.pyt_write_gzip_headerKs"     (t__name__t __module__R-R=(((s6/sys/lib/python2.7/site-packages/mercurial/archival.pyR'?s tcssˆˆ_dˆ_d‡‡‡fd†}t|tƒrQ||ddƒˆ_n|ddddd|ƒˆ_dS(Ncs‘ˆdkrv|d}|s2t||dƒ}nˆj||dtj|dˆƒ}|ˆ_tjj|||ƒStj||ˆ|ƒSdS(NtgzitbR((topenR'tzlibtZ_BEST_COMPRESSIONR2ttarfiletTarFilettaropen(R4tmodeR2t gzfileobj(RtmtimeR.(s6/sys/lib/python2.7/site-packages/mercurial/archival.pyRHcs   RIsw:R4R@sw|R2(RKR#R2RRtz(R.RRKRRH((RRKR.s6/sys/lib/python2.7/site-packages/mercurial/archival.pyR-_s    cCstj|ƒ}|j|_t|ƒ|_|r`tj|_d|_||_d}d|_n||_t j |ƒ}|j j ||ƒdS(Niÿi(RFtTarInfoRKRtsizetSYMTYPEttypeRItlinknameR#t cStringIOtStringIORLtaddfile(R.R4RItislinktdatati((s6/sys/lib/python2.7/site-packages/mercurial/archival.pyRTvs      cCs*|jjƒ|jr&|jjƒndS(N(RLtcloseR2(R.((s6/sys/lib/python2.7/site-packages/mercurial/archival.pytdone…s  ( R>R?t__doc__R+R,R'R-RTRY(((s6/sys/lib/python2.7/site-packages/mercurial/archival.pyR&;s   ttellablecBs2eZdZd„Zd„Zd„Zd„ZRS(sVprovide tell method for zipfile.ZipFile when writing to http response file object.cCs||_d|_dS(Ni(tfptoffset(R.R\((s6/sys/lib/python2.7/site-packages/mercurial/archival.pyR-Žs cCst|j|ƒS(N(tgetattrR\(R.tkey((s6/sys/lib/python2.7/site-packages/mercurial/archival.pyt __getattr__’scCs)|jj|ƒ|jt|ƒ7_dS(N(R\R3R]R(R.ts((s6/sys/lib/python2.7/site-packages/mercurial/archival.pyR3•scCs|jS(N(R](R.((s6/sys/lib/python2.7/site-packages/mercurial/archival.pyttell™s(R>R?RZR-R`R3Rb(((s6/sys/lib/python2.7/site-packages/mercurial/archival.pyR[Šs    tzipitcBs,eZdZed„Zd„Zd„ZRS(s]write archive to zip file or stream. can write uncompressed, or compressed with deflate.cCs®t|tƒsFy|jƒWqFttfk rBt|ƒ}qFXntj|d|ratjpgtj ƒ|_ d}||kr‹|}n||_ t j |ƒd |_dS(Ntwi¦Îi(RRRbR5tIOErrorR[tzipfiletZipFilet ZIP_DEFLATEDt ZIP_STOREDRLRKR*tgmtimet date_time(R.RRKtcompresstepoch((s6/sys/lib/python2.7/site-packages/mercurial/archival.pyR- s    c Cstj||jƒ}|jj|_d|_t}|rHd}t}n||Bd>|_ |j t j ddddt |jƒƒ7_ |jj||ƒdS( NiiÿlsR?RZtTrueR-RTRY(((s6/sys/lib/python2.7/site-packages/mercurial/archival.pyRcœs  tfileitcBs)eZdZd„Zd„Zd„ZRS(s$write archive as files in directory.cCs"||_tj|jƒ|_dS(N(tbasedirtscmutiltopener(R.R4RK((s6/sys/lib/python2.7/site-packages/mercurial/archival.pyR-Îs cCsx|r|jj||ƒdS|j|ddtƒ}|j|ƒ|jƒtjj|j|ƒ}tj ||ƒdS(NRdt atomictemp( RtsymlinkR{R3RXRR tjoinR}tchmod(R.R4RIRURVtftdestfile((s6/sys/lib/python2.7/site-packages/mercurial/archival.pyRTÒs  cCsdS(N((R.((s6/sys/lib/python2.7/site-packages/mercurial/archival.pyRYÜs(R>R?RZR-RTRY(((s6/sys/lib/python2.7/site-packages/mercurial/archival.pyR|Ës  tfilescCst||dƒS(Ntbz2(R&(R4RK((s6/sys/lib/python2.7/site-packages/mercurial/archival.pytâscCst||dƒS(NRA(R&(R4RK((s6/sys/lib/python2.7/site-packages/mercurial/archival.pyRˆãscCst||tƒS(N(RctFalse(R4RK((s6/sys/lib/python2.7/site-packages/mercurial/archival.pyRˆästuzipc sâ|dkr-ˆr?tjtdƒƒ‚q?nt||ˆƒ‰‡‡‡‡fd†} |tkrtjtdƒ|ƒ‚nˆˆ‰t|||p¦ˆjƒdƒ‰ˆjjddtƒr ‡‡‡fd†} d } | sò|| ƒr | | d t | ƒq n|rEgˆj ƒj ƒD]} || ƒr$| ^q$} nˆj ƒj ƒ} t | ƒ}|rM| j ƒˆjjtd ƒdd tdƒd |ƒxt| ƒD]‚\}} ˆj| ƒ}| | d|krÞdpád d|kˆ| jƒˆjjtd ƒ|dd| d tdƒd |ƒq«Wˆjjtd ƒdƒn|r°xZtˆjƒD]F}ˆj|ƒ}tj||ƒ}||jˆjˆˆ|ƒ7}qcWn|dkrÔtjtdƒƒ‚nˆjƒ|S(s‡create archive of repo as it was at node. dest can be name of directory, name of archive file, or file object to write archive to. kind is type of archive to create. decode tells whether to put files through decode filters from hgrc. matchfn is function to filter names of files to write to archive. prefix is name of path to put before every archive member.R†s*cannot give prefix when archiving to filescsB|ƒ}ˆr$ˆj||ƒ}nˆjˆ||||ƒdS(N(t wwritedataRT(R4RIRUtgetdataRV(tarchivertdecodeRtrepo(s6/sys/lib/python2.7/site-packages/mercurial/archival.pyR3þs sunknown archive type '%s'ituit archivemetacsdˆdjƒtˆƒtjˆjƒƒf}dj‡fd†ˆjƒDƒƒ}|süˆjjƒidd6dd6dd6dd 6}t j ˆjˆ|ƒj ˆƒˆjj ƒj d ƒ\}}djd „|j d ƒDƒƒ}|d |7}n||S(Nsrepo: %s node: %s branch: %s iR@c3s.|]$}ˆj|ƒdkrd|VqdS(tglobalstag: %s N(ttagtype(Rtt(R(s6/sys/lib/python2.7/site-packages/mercurial/archival.pys ss{latesttag} {latesttagdistance}ttemplatetstyletpatchtgits css|]}d|VqdS(slatesttag: %s N((RR”((s6/sys/lib/python2.7/site-packages/mercurial/archival.pys st:slatesttagdistance: %s (Rtencodingt fromlocaltbranchR‚ttagsRt pushbufferR#tcmdutiltshow_changesettshowt popbuffertsplit(tbaseRtoptstltagstdist(tctxtnodeR(s6/sys/lib/python2.7/site-packages/mercurial/archival.pytmetadata s/%  "s.hg_archival.txti¤t archivingtunitttotaltxiítlititems"no files match the archive patternN(RRRRt archiverstdateRt configboolR{R‰tmanifesttkeysRtsorttprogresst enumerateR<RVR#tsortedtsubstatetsubtmatchmodt narrowmatchertarchiveterrorRY(RRR©RRŽtmatchfnRRKtsubreposR3RªR4R„R†R­RWtfftsubpathR»tsubmatch((RR¨RŽR©RRs6/sys/lib/python2.7/site-packages/mercurial/archival.pyR¾èsH   #4  +2"&  ("ti18nRR©RtmatchR¼RŸR~RRšRRRRFR*RfRDR+RvR¿RrRsRR R%tobjectR&R[RcR|R±R{R#R‰R¾(((s6/sys/lib/python2.7/site-packages/mercurial/archival.pyts<  $<        O/