o ]Lb@sddlmZddlmZddlmZddlmZmZm Z m Z m Z m Z m Z ddlmZejZdZdd Zd d Zd d ZGdddeZdS))absolute_import)_)hex)bundle2 changegrouperror extensionspycompat revsetlangutil)commonsb2x:infinitepushc Cs|js ttdtt|vrttdtt|t d|j|t |}| dt |}t||jt |||d}i}||d<|r`||d<d|d <|j} || vr`t| ||d <t|shd |d <g} | tjtt||d | S) Nsno commits to pushsno server support for %rs%lns01spushs cgversionsbookmarks bookprevnode1spushbackbookmarks)advisoryparamsdata)missingrAbortrscratchbranchparttyper bundle2caps_validaterevsetr formatspecrsupportedoutgoingversionsdiscardmin _handlelfs makestream _bookmarksrisremotebooksenabledappend bundlepartupperr iteritems) repopeeroutgoinguibookmarksupportedversions cgversioncgparams bookmarkspartsr.@/usr/lib/python3/dist-packages/hgext/infinitepush/bundleparts.pygetscratchbranchpartssB    r0cCsJ||s ttd|r!|d|}t|dkr#ttddSdS)zAAbort if the revs to be pushed aren't valid for a scratch branch.snothing to pushs heads(%r)r s2cannot push more than one head to a scratch branchN)revsrrrlen)r#revsetr'headsr.r.r/rOs   rcCs4ztd}|j||WdStyYdSw)zSpecial case if lfs is enabled If lfs is enabled then we need to call prepush hook to make sure large files are uploaded to lfs slfsN)rfindwrapperuploadblobsfromrevsKeyError)r#rlfsmodr.r.r/r\s   rc@s*eZdZdZddZddZd ddZdS) copiedpartz9a copy of unbundlepart content that can be consumed latercCsL|j|_|j|_|j|_|j|_|j|_|j|_|j|_t| |_ dSN) typeid mandatorymandatoryparamsrr+ mandatorykeysr stringioread_io)selfpartr.r.r/__init__mszcopiedpart.__init__cCsdSr;r.)rDr.r.r/consumeyszcopiedpart.consumeNcCs|dur |jS|j|Sr;)rCrB)rDsizer.r.r/rB|s  zcopiedpart.readr;)__name__ __module__ __qualname____doc__rFrGrBr.r.r.r/r:js  r:N) __future__rmercurial.i18nrmercurial.noder mercurialrrrrr r r r rrr0rrobjectr:r.r.r.r/s   $ 3