o ]Lby-@sddlmZddlZddlZddlmZddlmZmZm Z m Z m Z m Z m Z mZmZmZmZddlmZdZdZdZd Zd Zd Zd Zd ZdZdZeeZeeZ    d ddZ!ddZ"ddZ#e$eeefddZ%e$eddZ&e$eddZ'ddZ(ddZ)dS)!)absolute_importN)_) bundle2 changegrouperrorexchange localrepo narrowspecrepair requirementsscmutilutilwireprototypes) stringutils narrowaclsnarrow:changespecsnarrow:responsespecs narrow:specsincludesexcludesKILLsDONEs >20s20s20sls>20s20s20s20slc sjdds J|d}fdd|D}|sttdt|} ttt|dg} ttt|dg} t || | | |||d ddS) N experimentalnarrowservebrokenellipses changegroupcsg|] }|tvr|qS)rsupportedoutgoingversions).0vrepor8s z3getbundlechangegrouppart_narrow..sno common changegroup version includepats excludepatsdepth) ui configboolget ValueErrorrmaxsortedfilterboolgenerateellipsesbundle2) bundlerrsource bundlecapsb2capsheadscommonkwargs cgversionsversionincludeexcluderrrgetbundlechangegrouppart_narrow+s(    r2c Cstj|j||d}|durt|}|dkrttd|t|p$|}t|p,|j g}t j |||t||d\} } } |j dt| | rytj|||d|du| | d} | || dd } |jd | d }|d |t|r{|d ddSdSdS)N)r0r1sdepth must be positive, got %d)rsFound %d relevant revs Tmatcherellipsesshallow ellipsisroots fullnodesF narrow_widenrdataversion treemanifest1)r matchrootintrAbortrsetr+nullidr_computeellipsisrdebuglenr getbundlergeneratenewpartaddparamr istreemanifest)r'rr0r1r/r,r+rr@ visitnodesrelevant_nodesr8packercgdatapartrrrr&Os8     r&c st|pjg}fdd|D}|fdd}|jt|dtt|||\} } } | r_tj||dd| | d} | || dd } |jd | d}| d |t ra| d d dSdSdS)Ncsh|]}j|qSr) changelogrev)rnrrr sz9generate_ellipses_bundle2_for_widening..c3s*D] }tVj|VqtVdSN)_KILLNODESIGNALrSnode _DONESIGNAL)rdeadrevsrrrgenkillss  z8generate_ellipses_bundle2_for_widening..genkillsr;TFr4r:rr=r>r?) rDrErK_CHANGESPECPARTrrFrrIrJrLr rM)r'roldmatchnewmatchr/r,known knownrevsr^newvisitnewfull newellipsisrPrQrRrr\r&generate_ellipses_bundle2_for_wideningys2      rgcCst|jtd}t|jtd}t|t|tj |j jvr5|j j tj t |j |j ||t|j dS)N)rDparamsr _SPECPART_INCLUDE splitlines_SPECPART_EXCLUDEr validatepatternsr NARROW_REQUIREMENTraddr writereporequirements setnarrowpatscopytoworkingcopy)opinpartrrrrr_handlechangespec_2s   rucCs|}|d\}}t|}t|}t|t|tj|jjvr6|jj tjt |j|j ||t |jdS)N)readsplitrDrkr rmr rnrror rprqrr)rsrtr<incexcrrrrr_handlenarrowspecss     r{c Cs|j}|j}t}t|d}|tkr;|tkr(t|d}||r'||n t t d|t|d}|tks|ro|j |_ Gdddt}tjj ||tj|j|t|ddd}|ro|j|_|j||_t|d r{|dSdS) Ns)unexpected changespec node chunk type: %sc@seZdZddZdS)z'_handlechangespec..dummybmstorecSsdSrWr)selfrtrchangesrrr applychangessz4_handlechangespec..dummybmstore.applychangesN)__name__ __module__ __qualname__rrrrr dummybmstores rTswiden)backuptopicsetnewnarrowpats)rrSrDr readexactlyrZrXhasnoderorrCr _bookmarks_bookmarksbackupdictrlocalrepositoryr striprlistuninterruptible_widen_uninterr __enter__ _widen_bundler safehasattrr) rsrtrclclkills chunksignalckr chgrpfilerrr_handlechangespecs:           rc s|j}|j}|j}|`|j}|td||d}z_t||||}|j s+| nt }|<t |tjrY|dt||fddWdn1sSwYn ||dd||dWdn1spwYW|n|w|D]4\} } z| | Wqty} z| jtjkr|td | | t| fWYd} ~ qd} ~ ww|jddd||dS) zFChangegroup exchange handler which restores temporarily-stripped nodessadding branch srbsstripcsSrWrrrrr"sz)handlechangegroup_widen..Nsbundle:Tserror removing %s: %s )rrrvfsnoteropenr readbundleverbosesilentr nullcontextmanager isinstancer unbundle20 transaction processbundleapplyjoinclose undofilesunlinkOSErrorerrnoENOENTwarnr forcebytestrr__exit__) rsrtrrrrfgen maybe_silentundovfsundofileerrrhandlechangegroup_widen sL     rcsztj}d|d<d|d<d|d<d|d<d|d<tjd fd d }|tjd <tjd fd d }j|_|tjd <dS)z?Enable narrow repo support in bundle2-related extension points.sbooleansnarrowsplainsdepthscsvsoldincludepatssoldexcludepatssknownrcs^|d}|jtrt||}|ddr&|jddr&t|i|dS|i|dS)Nr3narrowFrr)r has_section_NARROWACL_SECTIONrapplynarrowaclr rr2)argsr-r)origcgfnrr wrappedcgfnGs  zsetup..wrappedcgfncsL||t|drt||t|dr$tjj|j|j|`dSdS)Nrr) r rrrrrrDrr)rsrt) origcghandlerrrwrappedcghandlerXs    zsetup..wrappedcghandlerN)rGETBUNDLE_ARGUMENTSrgetbundle2partsmappingrparthandlermappingri) getbundleargsrrr)rrrsetup:s     r)NNNN)* __future__rrstructmercurial.i18nr mercurialrrrrrr r r r r rmercurial.utilsrrr_ _RESSPECS _SPECPARTrjrlrXrZ_ELIDEDCSHEADER_ELIDEDMFHEADERcalcsize _CSHEADERSIZE _MFHEADERSIZEr2r&rg parthandlerrur{rrrrrrrsB  4    $*=   3 .