^c&PdZddlmZddlmZddlmZmZmZm Z m Z m Z m Z m Z mZmZmZmZddlmZGddejZGdd eejZGd d ee jZGd d e j ZGdde jZGddZddZdZdS)z~Repository class for "in-memory pull" of one local repository to another, allowing operations like diff and log with revsets. )_)getattr) changelogcmdutilencodingerrorfilelog localrepomanifestmdiffpathutilrevlogutilvfs) constantscZeZdZdZdZfdZd fd Zd dZ d dZd Z d Z xZ S) unionrevlogctj|}t|dd}| |jj}t j||||||_t|}|dz |_ t|_ |jD]<}|jj |}|\ } } } } } }}}}}}}}| dz}| | |ksJ|}n || }| || } |j |}||j ||j|}|j|}|d| | ||||||ddt"jt"j|f }|j ||j ||dz }>dS)Ntarget)rradixri)vfsmod readonlyvfsr_revlogrr__init__revlog2len repotiprevset bundlerevsindexget_revaddnoderevrevlog_constantsCOMP_MODE_INLINEappend)selfopenerrr linkmapperrnrev2r&_start_csizersizebaselinkrevp1revp2revr%_sdo_sds_dcm_sdcmrankflagslinkthis_revp1nodep2nodees 5/usr/lib/python3/dist-packages/mercurial/unionrepo.pyrzunionrevlog.__init__'s#F++(D11 >_+F tVF%HHH IIa%%%L9 9 D,$T*C  VOE!$!z'**%!z$''z))$//H###H---\&&u--F\&&u--F      1 1A J  a O   " " " FAAs9 9 c||jkr tj||S|j||SN)rr_chunkrr%)r*r&s rArEzunionrevlog._chunktsG $/ ! !=''c22 2|""499S>>222rBc||jkr|||jkrq|j|j|||j||S||jkr4||jkr)t t |||Stj| || |S)z1return or calculate a delta between two revisions) rrrevdiffr&r%superrr textdiffrawdata)r*rev1r. __class__s rArGzunionrevlog.revdiffys $/ ! !dT_&<&<<''   411   411 T_ $ $)@)@d++33D$?? ?~dll400$,,t2D2DEEErBNFc8t|tr|}||}n|}||}||jkr#t |jd|j}|j}ntt|j}||||S)Nr)_dfraw) isinstanceintr%r&rrr _revisiondatarHr) r* nodeorrevrNrOr&r%rfuncrLs rArRzunionrevlog._revisiondatas i % % !C99S>>DDD((4..C  dlIt|DDG(DDd++9DtDcs++++rBctrDNotImplementedError)r*text transactionr<p1p2ds rA addrevisionzunionrevlog.addrevision!!rBctrDrV)r*deltasr,rY alwayscache addrevisioncbduplicaterevisioncbmaybemissingparentss rAaddgroupzunionrevlog.addgroups "!rBctrDrV)r*minlinkrYs rAstripzunionrevlog.stripr^rBctrDrVr*s rA checksizezunionrevlog.checksizer^rBNF)NNN)FNNF) __name__ __module__ __qualname__rrErGrRr]rerhrk __classcell__)rLs@rArr&sKKKZ333 F F F F F,,,,,, """" ! " " " """""""""""rBrceZdZdZdS)unionchangelogctj||d}tj|}t|||j||dSrD)rrrr)r*r+opener2r, changelog2s rArzunionchangelog.__init__sT$$T6222 (11 T64:z:NNNNNrBNrmrnrorrBrArrrrs(OOOOOrBrrceZdZdZdS) unionmanifestctj|||tj||}t|||jj||dSrD)r manifestrevlogrrrr)r* nodeconstantsr+rtr, manifest2s rArzunionmanifest.__init__sa((}fEEE+M7CC  &$,,i     rBNrvrwrBrAryrys#     rBryceZdZdZdZdS) unionfilelogctj|||tj||}t||jj|j||_||_|jj|_|jj|_dSrD)r rrrr_reporr)r*r+pathrtr,repofilelog2s rArzunionfilelog.__init__st  vt444?7D11" DL&(8*    ,1|+ rBc||jkr tj||S||}|j|j|S)z Check if a revision is censored.)rr iscensoredr%rr&)r*r&r%s rArzunionfilelog.iscensoreds\ $/ ! !?--dC88 8yy~~|&&t|'7'7'='=>>>rBN)rmrnrorrrwrBrArrs2,,,?????rBrceZdZdZdS) unionpeercdSrlrwrjs rAcanpushzunionpeer.canpushurBN)rmrnrorrwrBrArrs#rBrceZdZdZdZejdZejdZdZ dZ dZ dZ d Z d Zd Zd S) unionrepositoryzRepresents the union of data in 2 repositories. Instances are not usable if constructed directly. Use ``instance()`` or ``makeunionrepository()`` to create a usable instance. c\||_||_|jdddddS)NsphasesspublishFs unionrepo)repo2_urlui setconfig)r*rurls rArzunionrepository.__init__s2   )Z EEEEErBc@t|j|jjSrD)rrsvfsrrjs rArzunionrepository.changelogsdi999rBct|j|j|jj|j}t j|j|||SrD) ryr|rr unfiltered_clrevr manifestlog narrowmatch)r* rootstores rArzunionrepository.manifestlogsa!   I JO OO   $   # ItY(8(8(:(:   rBct|jj|}|j|S)z?map from repo2 changelog rev to temporary rev in self.changelog)rrr%r&)r*r.r%s rArzunionrepository._clrevs0z#((..~!!$'''rBc|jSrD)rrjs rArzunionrepository.urls yrBctt|j||jj|j|SrD)rrrrr)r*fs rAfilezunionrepository.files2 Iq$*/4??+<+<+CT   rBc8|jdSrD)rcloserjs rArzunionrepository.closes rBcdSrlrwrjs rAcancopyzunionrepository.cancopyrrBc t|SrD)rrjs rApeerzunionrepository.peersrBc(tjSrD)rgetcwdrjs rArzunionrepository.getcwds   rBN)rmrnro__doc__rr unfilteredpropertycacherrrrrrrrrrwrBrArrs FFF &::'&:&   '&  (((    !!!!!rBrNc|r!tjtd|dd}|s)t jt j}|d}|r\t j}||krd}n@tj |}| |r|t|d}| drT| ddd dd}t|dkr ||d } }n |\}} n||} }t||| S) Ns"cannot create new union repositorysbundles mainreporootrBsunion::r+r)rAbortrconfigrfindreporrr normasprefix startswithrsplitmakeunionrepository) rrcreateintents createopts parentpathcwdsrepopath repopath2s rAinstancer sF Dk!ABBCCC9o66J %ho&7&788  J 4o   JJ',,C$$S)) 4'C 3  y!!/ JJtQ   " ( (q 1 1 q66Q;;",adiHH"# Hii($) r8Y 7 77rBc4tj||d}tj||d}dtj|tj|fz}Gddt|j}|}||_t||||S)z7Make a union repository object from 2 local repo paths.F)rs union:%s+%sceZdZdS)3makeunionrepository..derivedunionrepositoryN)rmrnrorwrBrAderivedunionrepositoryr4s rBr)r rr expandpathrrLr)r repopath1rrepo1rrrrs rArr*s  r9U ; ; ;E  r9U ; ; ;E   ""  "" C      %/    D+DNUE3/// KrB)NN) ri18nrpycompatrrrrrr r r r r rrrr revlogutilsrr'rrrr{ryr localpeerrrrrrwrBrArs)                              B"B"B"B"B"&-B"B"B"JOOOOO[)"5OOO     K!8   ?????7????& # 4!4!4!4!4!4!4!4!n8888>rB