o ]Lb+@sddlmZddlmZddlmZmZddlmZm Z m Z m Z m Z m Z ddlmZmZmZdZdZdZdd d ZGd d d e jZd dZddZdS))absolute_import)_)binhex) bundlerepo changegrouperrormatchmdiffpycompat) constants remotefilelog shallowutilNc cst|tjst||j||||dD]}|VqdSt|dkr(|VdSt||j}||dd}| d|t t|dD]} || || d} } || } | || | | D]}|Vq`qG|VdS)Nunitsrr ) isinstancersupergrouplencloser sortnodesparentsinsertr xrange nodechunk) clsselfnodelistrloglookuprreordercpiprevcurrlinknoder)C/usr/lib/python3/dist-packages/hgext/remotefilelog/shallowbundle.py shallowgroups$    r+csNeZdZfddZdddZfddZdd Zfd d Zd d ZZ S)shallowcg1packerc s.t|jrd}tt|j||||fi|S)NF)r isenabled_reporr,generate)r commonrevsclnodesfastpathlinkrevsourcekwargs __class__r)r*r/9s  zshallowcg1packer.generateNcCstt|||||dS)Nr)r+r,)rrr r!rr"r)r)r*rAs zshallowcg1packer.groupc sz|\}}}Wnty|\}}}}} } Ynwt|jrO|jttjr;tjdjr9t j dddgS| |} | t krOt fdd|D}tt|j|g|Ri|S)Nsfooscannot pull from full bundlessuse `hg unbundle` instead)hintcsg|] }|s|qSr)) shallowmatch).0frepor)r* \sz2shallowcg1packer.generatefiles..) ValueErrorrr-r.rrbundlerepositoryfile _cgfilesposrAbortshouldaddfilegroupsNoFileslistrr, generatefiles) r changedfilesargsr4 linknodesr0r3mfdictsr2fnodesclrevs filestosendr5r;r*rFFs6     zshallowcg1packer.generatefilescCs|j}t|s tS|dks|dkrtS|dkr+|jdd}|dkr%tS|dkr+tS|jp/g}|dks8|d krItj |vr?tS|j t d tSt S) Nspushsbundlesstrips remotefilelogsstrip.includefilesslocalsnoneservespullspulling from a shallow repo ) r.rr-AllFilesuiconfig LocalFiles _bundlecapsr BUNDLE2_CAPABLITYwarnrrD)rr3r<cfgcapsr)r)r*rCcs$   z$shallowcg1packer.shouldaddfilegroupscs^t|tjstt||||S|j}g}|D]}|j|j|d}||vr,| |q|S)N)fileid) rrrr,pruner.filectxfilenamelinkrevappend)rr missingr0r<resultsfnodefctxr5r)r*rYs    zshallowcg1packer.prunec csd}||jkr||}tt|}n|||}||\}}||} ||||||| } | |7} t| t|} t | V| V|VdS)N) nullidrawdatar trivialdiffheaderrrevdiffrflagsbuilddeltaheaderr chunkheader) rrevlognodeprevnoder(prefixdeltap1p2rgmetalr)r)r*rs      zshallowcg1packer.nodechunkNN) __name__ __module__ __qualname__r/rrFrCrYr __classcell__r)r)r5r*r,8s    r,c Ost|s|||||g|Ri|S|j}zd|dkri|d}d} d} |p'gD]+} | dr?| tdd} | r>| d} q(| drS| tdd} | rS| d} q(| sX| rdt|jdd| | |_nt |_|||||g|Ri|W||_S||_w)NrN bundlecapssincludepattern=sexcludepattern=rb) rr-r8get startswithrsplitr rootalways) origr<outgoingversionr3rHr4originalrxincludepatternexcludepatterncaprawr)r)r*makechangegroups4         rc% sts|||||g|Ri|Sd}t} igjjtd|d} |} | s/n\| d} jd| |  | sU | } | }| |||q'd} | |}|s`n|d}|| |f<| |f| | vr~|d7}| | qX|durttdq(tfd d }d}g}D]/\} }| |f}|d|d |d g}|D]}|jks| |fvrq|| t|fqqj|rwd\} }| |fvrq|d7}|tdkrttd  | } | |f}|\ }}}}}}}}}|| || |sq| |}t||} t| ts+t| } t| \}!} d|!vrJ|!d}"t|!d}#|| ||"|#sJq||fD]}$|$jkr`|| || |$s`qNqN| | |!||||| |fd}s| t|fS)Nrsfiles)totalTsfilenamesadding %s revisions r s#received file revlog group is emptycsN|jkr%||fvr%||fvrdSd||fd||fdSdS)NTrF)rcr)r:rkdepfdepnode processedqueuer< revisiondatasr)r* availables z&addchangegroupfiles..availablerscircular node dependencyscopyscopyrev) rr-setrP makeprogressr filelogheaderdebug incrementr8r@ deltaiteraddgroup deltachunkr]addrrBrcr fileserviceprefetchpoprrdr patchrbytes parsemetarcomplete)%rr<r3revmaptrp expectedfilesrHr4newfilesvisitedprogress chunkdatar:fldeltaschain revisiondatar skipcount prefetchfilesrk dependents dependentrorpr( deltabasernrgsidedata proto_flagsbasetextrqcopyfromcopynoder$r)rr*addchangegroupfiless       +               1 rrs) __future__rmercurial.i18nrmercurial.noderr mercurialrrrr r r r rrrDrRrOr+cgpackerr,rrr)r)r)r*s    j