ó  çƒQc@sJdZddlmZddlmZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZdejfd„ƒYZdee j fd„ƒYZd ee j fd „ƒYZd ee j fd „ƒYZd e jfd„ƒYZde jfd„ƒYZd„ZdS(s~Repository class for "in-memory pull" of one local repository to another, allowing operations like diff and log with revsets. iÿÿÿÿ(tnullid(t_Nt unionrevlogcBsYeZd„Zd„Zd„Zd„Zdddd„Zd„Zd„Z d„Z RS( c Cs†tj|ƒ}tjj|||ƒ||_t|ƒ}|d|_tƒ|_x,|jD]!}|jj |}|\}} } } } } }}|dkr¸| |ks¯t ‚|}n || ƒ}||j krð|jj |j |ƒq]n|jj| ƒ}|jj|ƒ}dddd||j|ƒ|j|ƒ|f}|j jd|ƒ||j |<|jj |ƒ|d7}q]WdS(Niiÿÿÿÿ(tscmutilt readonlyvfstrevlogt__init__trevlog2tlent repotiprevtsett bundlerevstindextNonetAssertionErrortnodemaptaddtnodetrevtinsert(tselftopenert indexfileRt linkmappertntrev2Rt_startt_csizet_rsizet_basetlinkrevtp1revtp2revRtlinktp1nodetp2nodete((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyRs0        $ cCs;||jkr"tjj||ƒS|jj|j|ƒƒS(N(R Rt_chunkRR(RR((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyR%=scCsÃ||jkr[||jkr[|jj|jj|j|ƒƒ|jj|j|ƒƒƒS||jkr||jkrtjj|||ƒStj|j|j|ƒƒ|j|j|ƒƒƒS(s1return or calculate a delta between two revisions( R RtrevdiffRRRtmdiffttextdifftrevision(Rtrev1R((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyR&Bs cCs›t|tƒr'|}|j|ƒ}n|}|j|ƒ}|tkrLdS||jkr‚|jj|ƒ}|||f|_nt j j||ƒ}|S(sTreturn an uncompressed revision of a given node or revision number. t( t isinstancetintRRRR RR)t_cacheR(Rt nodeorrevRRttext((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyR)Ns cCs t‚dS(N(tNotImplementedError(RR0t transactionR!tp1tp2td((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyt addrevisiondscCs t‚dS(N(R1(RtrevsRR2((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pytaddgroupfscCs t‚dS(N(R1(RRtminlink((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pytstriphscCs t‚dS(N(R1(R((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyt checksizejsN( t__name__t __module__RR%R&R)R R6R8R:R;(((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyRs (    tunionchangelogcBseZd„ZRS(cCsHtjj||ƒd}tj|ƒ}tj|||j||ƒdS(N(t changelogRR RR(RRtopener2Rt changelog2((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyRns (R<R=R(((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyR>mst unionmanifestcBseZd„ZRS(cCsBtjj||ƒtj|ƒ}tj|||j||ƒdS(N(tmanifestRRR(RRR@Rt manifest2((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyRvs(R<R=R(((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyRBust unionfilelogcBseZd„Zd„ZRS(cCsQtjj|||ƒtj||ƒ}tj|||j||ƒ||_dS(N(tfilelogRRRt_repo(RRtpathR@Rtrepotfilelog2((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyR}s cCs|jj|ƒdS(N(RGtfile(Rtf((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyt_file„s(R<R=RRM(((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyRE|s t unionpeercBseZd„ZRS(cCstS(N(tFalse(R((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pytcanpushˆs(R<R=RP(((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyRN‡stunionrepositorycBsteZd„Zejd„ƒZd„Zejd„ƒZd„Zd„Z d„Z d„Z d„Z d „Z RS( cCsjtjj|||ƒ|jjddtƒdtj|ƒtj|ƒf|_tj||ƒ|_ dS(Ntphasestpublishs union:%s+%s( t localrepotlocalrepositoryRtuit setconfigROtutilt expandpatht_urltrepo2(RRVRHtpath2((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyRŒs cCst|j|jjƒS(N(R>tsopenerR[(R((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyR?”scCs%|jjj|ƒ}|jj|ƒS(s?map from repo2 changelog rev to temporary rev in self.changelog(R[R?RR(RRR((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyt_clrev˜scCst|j|jj|jƒS(N(RBR]R[R^(R((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyRCscCs|jS(N(RZ(R((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyturl¢scCs"t|j||jj|j|ƒS(N(RER]R[R^(RRL((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyRK¥scCs|jjƒdS(N(R[tclose(R((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyR`©scCstS(N(RO(R((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pytcancopy¬scCs t|ƒS(N(RN(R((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pytpeer¯scCs tjƒS(N(tostgetcwd(R((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyRd²s(R<R=RRTtunfilteredpropertycacheR?R^RCR_RKR`RaRbRd(((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyRQ‹s       cCsJ|rtjtdƒƒ‚n|jdddƒ}|sftjtjƒƒ}|dkrfd}qfn|rÇtjƒ}||krd}qÇtj j |dƒ}|j |ƒrÇ|t |ƒ}qÇn|j dƒr-|j ddƒdj ddƒ}t |ƒdkr||d }}q:|\}}n ||}}t|||ƒS( Ns"cannot create new union repositorytbundlet mainreporootR+sunion:t:it+i(RXtAbortRtconfigtcmdutiltfindrepoRcRdR RHtjoint startswithRtsplitRQ(RVRHtcreatet parentpathtcwdtstrepopatht repopath2((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pytinstanceµs*     " (t__doc__RRti18nRRcRXR'RlRRTR?RCRFRRR>RBREt localpeerRNRURQRw(((s7/sys/lib/python2.7/site-packages/mercurial/unionrepo.pyt s 0<Y *