ó œt•Pc@sŐddlZddlmZejjdddgƒddlmZddlmZddlm Z m Z m Z y0dd l m Z mZmZdd lmZWnek r´nXdZd e fd„ƒYZdS(i˙˙˙˙N(t demandimportsbzrlib.transactionssbzrlib.urlutilst ElementPath(t_(tutil(tNoRepotcommittconverter_source(tbzrdirtrevisionterrors(t RevisionSpectfiletsymlinkt bzr_sourcecBs†eZdZdd„Zd„Zd„Zd„Zd„Zd„Z d„Z d„Z d „Z d „Z d „Zd „Zd „ZRS(s>Reads Bazaar repositories by using the Bazaar Python librariescCs˙tt|ƒj||d|ƒtjjtjj|dƒƒsYttdƒ|ƒ‚nyt Wn#t k r†ttdƒƒ‚nXtjj |ƒ}|j |ƒyt j j|ƒjƒ|_Wn*tjk rńttdƒ|ƒ‚nXi|_dS(Ntrevs.bzrs)%s does not look like a Bazaar repositorys"Bazaar modules could not be loaded(tsuperR t__init__tostpathtexiststjoinRRRt NameErrortabspatht_checkrepotypetBzrDirtopentopen_repositoryt sourcerepoR tNoRepositoryPresentt _parentids(tselftuiRR((s5/sys/lib/python2.7/site-packages/hgext/convert/bzr.pyR$s !     cCsěyžddlm}|jj|ƒd}y|jdtƒ}|j}Wn/tjtj fk ryd}|j ƒ}nX|dk r˝|jj j |jj j kr˝|jjtdƒƒnWn'tk rç|jjtdƒƒnXdS(Ni˙˙˙˙(Ritrecommend_upgradesawarning: lightweight checkouts may cause conversion failures, try with a regular branch instead. s(bzr source type could not be determined (tbzrlibRRtopen_containingtopen_workingtreetFalsetbranchR t NoWorkingTreet NotLocalUrltNonet open_branchtroot_transporttbaseRtwarnRt Exceptiontnote(RRRtdirttreeR%((s5/sys/lib/python2.7/site-packages/hgext/convert/bzr.pyR:s  cCs|jjƒdS(s Before the conversion begins, acquire a read lock for all the operations that might need it. Fortunately read locks don't block other reads or writes to the repository, so this shouldn't have any impact on the usage of the source repository. The alternative would be locking on every operation that needs locks (there are currently two: getting the file and getting the parent map) and releasing immediately after, but this approach can take even 40% longer.N(Rt lock_read(R((s5/sys/lib/python2.7/site-packages/hgext/convert/bzr.pytbeforeNs cCs|jjƒdS(N(Rtunlock(R((s5/sys/lib/python2.7/site-packages/hgext/convert/bzr.pytafter[scCs|jjdtƒS(Ntusing(Rt find_branchestTrue(R((s5/sys/lib/python2.7/site-packages/hgext/convert/bzr.pyt _bzrbranches^scCsö|js7tg|jƒD]}|jƒ^qƒ}n–d}xY|jƒD]K}y%tj|jƒ}|j|ƒ}Wntj k r‹nX|j }qJW|dkrÄt j t dƒ|jƒ‚n|g}g|D]}|dkrÔ|^qÔ}|S(Ns%s is not a valid revisionsnull:(RtsortedR8t last_revisionR(R t from_stringt in_historyR tBzrErrortrev_idRtAbortR(RtbtheadstrevidR%trtinfoth((s5/sys/lib/python2.7/site-packages/hgext/convert/bzr.pytgetheadsas .   %c Cs |jj|ƒ}|j|j|jp*dƒƒ}d}|dk rW|j|ƒ}n|tkr‚tt dƒ||fƒ‚n|j ||f}|dkrč|j |ƒ}|dkrŢt j t dƒ||fƒ‚n||fS|j|ƒ}|jƒ|fSdS(Nsutf-8s!%s is not available in %s anymoreR s%s.%s symlink has no target(Rt revision_treetpath2idtdecodetencodingR(tkindtsupportedkindstIOErrorRt _modecachetget_symlink_targetRR?tget_filetread( RtnameRtrevtreetfileidRKtmodettargettsio((s5/sys/lib/python2.7/site-packages/hgext/convert/bzr.pytgetfileus"!      cCsYi|_|jj|ƒ|_|jj|ƒ}|jj|dƒ}|j|j|ƒS(Ni(RNRRGt_revtreeRtpopt_gettreechanges(Rtversiont parentidstprevtree((s5/sys/lib/python2.7/site-packages/hgext/convert/bzr.pyt getchangesŠs  c CsÝ|jj|ƒ}|js7g}tjf|j|Çstreverseiuit directoryt/txR tsttl(Ns directory(t _revision_idtsetR9t iter_changesR7R(tappendRjt inventoryRHt iter_entriesRKtaddt executableRN(RtcurrenttoriginRBR}trenamestseent curchangesRTtpathstchanged_contentt versionedtparentRRRKRtrenamingtsubdirtentrytfrompathttopathRURR|((s5/sys/lib/python2.7/site-packages/hgext/convert/bzr.pyR[żsj    " #       )cCsA|jj|ƒ}tg|D]}||kr|^qƒ}|S(sqFilters out ghost revisions which hg does not support, see (Rtget_parent_mapttuple(Rtidst parentmapR™Rb((s5/sys/lib/python2.7/site-packages/hgext/convert/bzr.pyRis+N(t__name__t __module__t__doc__R(RRR2R4R8RFRXR_RqRxR~R[Ri(((s5/sys/lib/python2.7/site-packages/hgext/convert/bzr.pyR !s        X(sfilessymlink(Rt mercurialRtignoretextendtmercurial.i18nRRtcommonRRRR!RRR tbzrlib.revisionspecR t ImportErrorRLR (((s5/sys/lib/python2.7/site-packages/hgext/convert/bzr.pyt s