ó `˜Qc@s–ddlZddlZddlZddlZddlZddlZddlZddlZ ddl m Z m Z m Z mZddlmZe jZddlmZddlmZmZmZmZmZddlmZmZmZmZddlmZy‡ddlm Z m!Z!ddl"Z"ddl#Z"ddlZ"ddl$Z"ddl%Z"ddl&Z&ddl'Z'e'j(d d d d e)ƒWne*k r¥e+Z"nXd e,fd„ƒYZ-d„Z.d„Z/d„Z0d„Z1de2fd„ƒYZ3de4e5d„Z6d„Z7de2fd„ƒYZ8d„Z9d„Z:ie:d6e:d6e9d6Z;d„Z<d efd!„ƒYZ=d"Z>d#eefd$„ƒYZ?dS(%iÿÿÿÿN(tstrutiltscmutiltutiltencoding(t_(tStringIO(tNoRepot MissingTooltcommitt encodeargst decodeargs(t commandlinetconverter_sourcetconverter_sinktmapfile(tmakedatetimestamp(tSubversionExceptiontPooltignoretmodulessvn.coretcategorytSvnPathNotFoundcBseZRS((t__name__t __module__(((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR'scCsn|jddƒ\}}|jddƒ}d}t|ƒdkrSd|d}n|dd|t|ƒfS(s8Parse a revision string and return (uuid, path, revnum).t@it/tii(trsplittsplittlentint(trevturltrevnumtpartstmod((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pytrevsplit*s cCstj|dƒS(Ns!$&'()*+,-./:=@_~(turllibtquote(ts((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR&3scCs»y tjjtjj|ƒƒSWntk r3nXtjj|ƒr«tjj tjj |ƒƒ}tj dkr‰dt j |ƒ}nt j|ƒ}dt|ƒ}ntjj|ƒS(NtntRs file://%s(tsvntclientt url_from_pathtcoretsvn_path_canonicalizeRtostpathtisdirtnormpathtabspathtnameRRttolocalR&(R/((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pytgeturl=s  cCs.tjjƒ}tjj|_||j_|S(N(R)R,tsvn_opt_revision_ttsvn_opt_revision_numbertkindtvaluetnumber(R:toptrev((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR;Ms t changedpathcBseZd„ZRS(cCs(|j|_|j|_|j|_dS(N(t copyfrom_patht copyfrom_revtaction(tselftp((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt__init__Ts  (RRRB(((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR<Ssic sÖd‰‡‡fd†}y>tjd|ƒ} tjj| j|||||||ƒWnOtk r|tjdˆˆƒn?t k r§} tjt | ƒˆˆƒnXtjdˆˆƒˆj ƒt j dƒdS(Niÿÿÿÿcsb|dk r<x-|jƒD]\}}t|ƒ||Mercurial failed to run itself, check hg executable is in PATHslog stream exception '%s'( tTrueREtloadRntEOFErrorRRcRt TypeErrort ValueErrorRC(R@tentryRGR!RHRIRJ((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt__iter__Šs   cCs&|jr"|jjƒd|_ndS(N(RnRXRC(R@((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRX™s  (RRt__doc__RBRuRX(((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRm…s  cCs:x3dD]+}tjjtjj||ƒƒstSqWtS(Ntlocksthookstformattdb(RwRxsformatRz(R.R/texiststjointFalseRo(RiR/tprototx((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt filecheck¢s !cCsžy5tjƒ}|jd||fƒ}|jƒ}Wn\tjk r‚}|jdkrp|jtdƒƒtS|j jƒ}nt k r“t SXd|kS(Ns%s://%s/!svn/ver/0/.svni”swsvn: cannot probe remote repository, assume it could be a subversion repository. Use --source-type if you know better. s#( turllib2t build_openertopenRht HTTPErrortcodetwarnRRoRNRVR}(RiR/R~topenertrsptdataRa((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt httpcheck«s  thttpthttpstfilecCs@yž|jddƒ\}}|dkrtjdkr‹|d dkr‹|dd!jƒr‹|dd!jƒdkr‹|d d |d}ntj|ƒ}nWn)tk rÉd}tjj |ƒ}nX|dkrèt j |ƒ}nt j |d „ƒ}x<d|kr;||||ƒr"tS|jddƒd }qWtS( Ns://iRR(Riis%3a/s:/cWstS(N(R}(Rk((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pytÎsi(RR.R3tisalphatlowerR%t url2pathnameRsR/R2RtpconverttprotomaptgetRoRR}(RiR R~R/tcheck((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pytissvnurlÁs$ 2  t svn_sourcecBsÔeZdd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d„Z dd „Z d „Z dd „Zd „Zd „Zd„Zd„Zd„Zdd„Zdd„Zdeed„ZRS(c Cs0tt|ƒj||d|ƒ|jdƒp||jdƒp|tjj|ƒrptjjtjj|dƒƒp|t||ƒs˜t t dƒ|ƒ‚nt dkr¹t t dƒƒ‚nyAt jjt jjf}|dkrùt t d ƒ|ƒ‚nWn#tk rt t d ƒƒ‚nXi|_d}y@|jd ƒ}|d krnt||dƒ}|| }nWntk r‚nXt|ƒ|_d |_y³tjd|jƒ|_|jj|_|jj|_t jj|jƒ|_t j!|jt"|jƒƒ|_#d|_$|j#|_%i|_&i|_'t jj(|jƒ|_)Wn4t*k r„|j+ƒt t dƒ|jƒ‚nX|rËyt|ƒ}WqËtk rÇt,j-t dƒ|ƒ‚qËXn|j.j/dddƒj0dƒ|_1|j.j/dddd ƒ|_2y1t|j2ƒ|_2|j2d kr=d |_2nWn-tk rmt,j-t dƒ|j2ƒ‚nXy|j3|j#|ƒ|_4Wnt5k r¦d|_4nX|j4sÏt,j-t dƒ|j#ƒ‚n|j6|j4ƒ|_7d|_8tjjtjj|dƒƒr||_9n d|_9d|_:dS(NRssvn://s svn+ssh://s.svns-%s does not look like a Subversion repositorys)could not load Subversion python bindingsiis=Subversion python bindings %d.%d found, 1.4 or later requireds=Subversion python bindings are too old, 1.4 or later requiredRisUTF-8R s"svn: revision %s is not an integertconverts svn.trunkttrunkRs svn.startrevtdefaults(svn: start revision %s is not an integersno revision found in module %ss .svn/entries(ii(;tsuperR—RBt startswithR.R/R{R|R–RRR)RCRR,t SVN_VER_MAJORt SVN_VER_MINORtAttributeErrortlastrevstrfindRRsR5R RRQRRRSR*tctxtget_repos_roottbaseurlR%tunquoteRRt prevmodulet rootmoduletcommitsRZtget_uuidtuuidRt tracebackRRcRitconfigtstript trunknametstartrevtlatesttheadRR!t last_changedt _changescachetwct convertfp(R@RiR RtversionR°tat((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRBäsŒ!          "              !  cCsji}xT|jƒD]F}t|ƒ\}}}|j||ƒ}||kr|||tjj|jjdƒdt|ƒ|t|jƒtSWnt k rRtSXdS(NR( R)R*tlsR trstripR&R}R¢RoR(R@R/R;((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR{Ds & c s˜‡fd†}‡fd†}tˆjƒ}d}|d|ƒ}|d|ƒˆ_|d|ƒ}|rшjpud}ˆjd|7_ˆjˆjˆjƒˆ_ˆjsÑtjtdƒˆjƒ‚qÑnˆjgˆ_ ˆjdk rd |ˆjpdfˆ_n|r ˆj j dƒ}t jj|dt|ƒ|tˆjƒ}x¶t|ƒD]¥} d ||| f} || ˆjƒsq_nˆj| ˆjƒ} | sˈjjtd ƒ| ƒq_nˆjjtd ƒ| ˆj| ƒfƒˆj j| ƒq_Wnˆjr‘ˆj r‘tˆj ƒd krJtjtdƒƒ‚nˆjˆj dƒ} | ˆjkr‘tjtdƒˆjƒ‚q‘nˆj S(Ncs"ˆj||ƒ}|tjjkS(N(t _checkpathR)R,t svn_node_dir(R/R!R8(R@(s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR0NscsÔˆjjdd|ƒ}|dk r;|jƒdkr;dS|pD|jdƒ}ˆj||ƒs°ˆjj|ƒr„|dkr„dS|r¬tjt dƒ||fƒ‚ndSˆjj t dƒ||fƒ|S(NR˜ssvn.RRR™s&expected %s to be at %r, but not foundsfound %s at %r ( RiR¬RCR­R{RtendswithRRcRtnote(R3RtcfgpathR/(R@(s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt getcfgpathRs RR™ttagstbranchesRsno revision found in module %ss%s/%ss%s/%s/%ssignoring empty branch %s sfound branch %s at %d is>svn: start revision is not supported with more than one branchis.svn: no revision found after start revision %d(R;R²RÆRR°R±RRcRtheadsRCR R­R)R*R¾R&R}R¢tsortedRiRÃR!tappendR¯R( R@R0RÅRt oldmoduleR™RÇtrpatht branchnamestbranchRtbrevidR!((R@s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pytgetheadsLsR  c Cs9|jr'|jd|kr'|jdSd|_|j|\}}|rm|j|||ƒ\}|_}n’t|ƒ\}}}tjj|j t |ƒt |ƒt |j ƒ} g| jƒD]'\} } | jtjjkrÀ| ^qÀ}i}tƒ|_|jƒt||gt|ƒƒ}|j|=||fS(Nii(R³RCRZt expandpathstremovedR$R)R*R¾R¤R&R;RoR¢RDR8R,t svn_node_filetsettsorttzipR( R@RRZtparentstfilestcopiesRªRR!tentriestnte((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt getchanges”s"  $!   cCs=|j|ƒ}||f|_g|dD]}|d^q)S(Ni(RÝR³(R@Rtitchangestf((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pytgetchangedfiles¬scCsÁ||jkr¦t|ƒ\}}}||_|j|ƒ|jj|dƒ}||krh|d}n|j||ƒ||jkr¦tjt dƒ|ƒ‚q¦n|j|}|j|=|S(Niissvn: revision %s not found( R¨R$RtreparentR R”t_fetch_revisionsRRcR(R@RRªRR!tstopR((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt getcommit±s      c CsVi}|jdkr|Sg}|j}tjj|jƒ}|j|jg||jƒ}zéxâ|D]Ú}|\}}} } } g|jƒD]*\} } | jr| j| j | f^q}|j dt ƒ|}|r|dd|kr|j ƒd}nx–|D]Ž\}}}|j |dƒs/qnxc|D]E}|dj |ƒr6||dt|ƒ}||g|d*Pq6q6W|j|||gƒqWtd„|jƒDƒƒ}tƒ}xg|D]_}xV|D]N\}}}|j |dƒ sÒ|j ||dƒrqÒn|j|ƒPqÒWqÅWxO|D]G}g|D]4} | d|kr<| dj |dƒ r<| ^q<}q/Wg}x°|D]¨\}}}|jdƒd}|j |ƒrÔ|j|||gƒq‡n||kræq‡ny5|j||ƒ}|r||kr|||ús (RÆRCR)RStget_latest_revnumt_getlogR¯RDR=R>RÕRotpopRœRRÊtdictRÔtaddRR°RRX(R@RÆtpendingsttagspathR[tstreamRtt origpathsR!RHRIRJRARÜRÙt srctagspathtsourcet sourcerevtdestttagttagpathtaddedstbadrootstdestroottbadroott renamingsttagnamettagid((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pytgettagsÇsp   :       (   cCsz|js dS|jdkrFttjj|jddƒdƒ|_n|jjd||j|ƒfƒ|jj ƒdS(Ns.svns hg-shamaptas%s %d ( R´RµRCRƒR.R/R|twriteR!tflush(R@Rtdestrev((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt converted%s #cCsd|j|p|j|fS(Ns svn:%s%s@%s(RªR(R@R!R((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR».scCst|jdƒdƒS(NRiÿÿÿÿ(RR(R@R((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR!1scs€d‡fd†}|jˆjƒs<ˆjjd|ƒdS|dkr`tjjˆjƒ}nyDˆjdƒ}tjj ˆj|j dƒ|ƒ}ˆj|ƒWnt k r½d}nX|sãt t dƒ||fƒ‚n||||jƒ\}}|dkrF|||ƒ\}}|dkrFˆjjd|ƒdSn|jˆjƒspˆjjd|ƒdSˆj||ƒS(s]Find the latest revid affecting path, up to stop revision number. If stop is None, default to repository latest revision. It may return a revision in a different module, since a branch may be moved without a change being reported. Return None if computed module does not belong to rootmodule subtree. c s ˆj|g||pdƒ}zÝx½|D]µ}|\}}}}} |dkrY|rYPn||kriPnxq|D]i} |j| ƒ sp|| j ršqpn|| j|t| ƒ} ˆjjd|| |fƒ| }PqpWq(W|sðd}n||fSWd|jƒXdS(Nis#branch renamed from %s to %s at %d (RêRCRœR=RRitdebugRX( R/R[RäRðRtRZR!RHRIRJRAtnewpath(R@(s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt findchanges<s*      signoring foreign branch %r RRs%s not found up to revision %dsignoring empty branch %r N(RCRœR§RiRR)RSRéRâtstatR­RRRt created_revR»(R@R/RäRR¦tdirentR!trealpath((R@s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR°4s2 $     cCs{|j|kr|S|jt|ƒ}|j}|dkrDd}n|jjd|ƒtjj|j|ƒ||_|S(s:Reparent the svn transport and return the previous parent.Rsreparent to %s N( R¦R¤R&RCRiRR)RSRâ(R@RtsvnurlR¦((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRâ~s    c Csutƒtƒ}}i}t|ƒd\}}||jkrZ||_|j|jƒnxßt|ƒD]Ñ\} \} } |jjtdƒ| d| dt|ƒƒ|j | ƒ} |j | |ƒ} | t j j kr“|j|j| ƒƒ| j sg| rqgnt|dƒd\}}| j|kr3qgn|j | j|ƒ}|sTqgn|jjd| || jfƒ|j|ƒ||j| ƒRRÁR­t _iterfilestreplaceR?RCtupdatetlist(R@RRZR×tchangedRÒRÙt new_moduleR!RÞR/tentt entrypathR8tpmoduletprevnumR=t parentpathtfromkindtoroottnroottchildrent childpathtpkindt copyfrompatht copytopath((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRÑ‹s        #  ' cs|ˆkrˆ|}‰ndˆ_‡‡fd†}ˆjjtdƒˆj|ˆfƒyjd}t}ˆjˆjg|ˆƒ}z¬x¥|D]}|\}} } } } | ˆjkrÅt }Pn|s÷ˆjj d| ƒ|pî| dk}q‘n||| | | | ƒ\} }| r$| }n|r‘Pq‘q‘WWd|j ƒX| rÆ|rÆ|j rÆyWˆj |jƒ}|dkr®ˆjˆj|dƒ}|r®|j j|ƒq®nWqÆtk rÂqÆXnWnJtk r\}}|tjjkr tjtdƒˆƒ‚n‚nXdS(Ncs#ˆjjd|t|ƒfƒt}ˆj|ƒ}|ˆjksP|ˆkrZd|fSg}t|jƒƒ}g|D]*\}} ˆj j |ƒry|| f^qy} | ry| d\} } | j rft }| j ˆj t| ƒ} ˆj | | jƒ}|dk rvt|ƒd\}}|ˆjkrc|g}ˆjjtdƒˆj ||fƒqcqvqyˆjjdƒng}xB|D]:\} } ˆj| ƒdkr­q†n|j| | fƒq†Wtj|d ddgƒ}ˆjjd d ƒr t|d ƒ}n|rˆj|ƒp!d }|r9ˆj|ƒp<d }y2ˆj jd ƒd}|ˆjkrpd}nWntk rŠd}nXtd|dtj|dƒd|d|d|d|ƒ}|ˆj|<||jfˆj |<ˆj!rˆj!j r|gˆj!j(n|ˆ_!||fS(slReturn the parsed commit object or None, and True if the revision is a branch root. s!parsing revision %d (%d changes) iÿÿÿÿis$found parent of branch %s at %d: %s s)no copyfrom path, don't know what to do. is UTCs%Y-%m-%dT%H:%M:%SR˜t localtimezoneiRRRHRIs%Y-%m-%d %H:%M:%S %1%2tdescR×RÎRN("RiRRR}R»R¨RCRÉRDRRœR=RoR°R>R$R¯RÃRRRÊRt parsedatet configboolRRRR®t IndexErrorRtdatestrR×RZt child_cset(RGR!RHRIRJtbranchedRR×RARÜt root_pathsR/RRtprevidR¦RRZtlogRÎtcset(R@t to_revnum(s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt parselogentryösh  $            s-fetching revision log for "%s" from %d to %d srevision %d has no entries iissvn: branch has no revision %s(RCR.RiRÃRRR}RêR¯RoRRXR×R!RR°RÊRRR)R,tSVN_ERR_FS_NO_SUCH_REVISIONRRc(R@t from_revnumR4R5t firstcsett lastonbranchRðRtRZR!RHRIRJR3t firstrevnumR°Ratnum((R@R4s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRãðsR  L         c Csv||jkrt‚nd}yÎt|ƒd\}}|j|krb||_|j|jƒntƒ}tjj|j|||ƒ}|j ƒ}|j ƒt |t ƒr»|d}nd|krÍdpÐd}d|krådpè|}WnFt k r4} tjjtjjf} | j| kr.t‚n‚nX|dkrld} |j| ƒrl|t| ƒ}qln||fS( NRiiÿÿÿÿssvn:executableRs svn:specialtlslink (RÒRUR$RRâRR)RStget_filetgetvalueRXt isinstanceRRR,tSVN_ERR_FS_NOT_FOUNDtSVN_ERR_RA_DAV_PATH_NOT_FOUNDtapr_errRœR( R@RRtmodeRR!tiotinfoR‰RÜtnotfoundt link_prefix((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pytgetfileps6         cs“ˆjdƒ‰tƒ}dj|jtˆƒgƒjdƒ}tjj|t|ƒt |j |ƒ}ˆryˆd7‰n‡fd†|j ƒDƒS(s3Enumerate all files in path at revnum, recursively.Rc3s4|]*\}}|jtjjkrˆ|VqdS(N(R8R)R,RÓ(RèRARÜ(R/(s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pys ˜s ( R­RR|R¤R&R)R*R¾R;RoR¢RD(R@R/R!RKRÌRÚ((R/s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRs '' cCsˆ|dkr|j}n|j|ƒrj|jdƒt|ƒ}|jdƒrW|dS|dkrj|Sn|jjd||fƒdS(NRiRs%r is not under %r, ignoring (RCRRœR¿RRiR(R@R/Rtrelative((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR›s   cCsv|dk r,|jdƒ}|d|}nz&tjj|j|jdƒ|ƒSWd|dk rq|j|ƒnXdS(NRR(RCRâR)RSt check_pathR­(R@R/R!RR¦((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRÀ¯s & icCsg}xG|D]?}|jdƒs6|jd|}n|j|jdƒƒq W|j||||||g} t| ƒ} tjƒ} dtj| ƒ} tj tj | ƒƒ\} }| j | ƒy| j ƒWn&t k rútjtdƒƒ‚nXt|ƒS(NRs%s debugsvnlogs>Mercurial failed to run itself, check hg executable is in PATH(RœRRÊR­R¤R Rt hgexecutablet shellquotetpopen2t quotecommandRRXRURcRRm(R@RZR[R\R]R^R_trelpathsRARktargthgexetcmdRfRg((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRê»s"      N(RRRCRBR½R{RÐRÝRáRåRÿRR»R!R°RâRÑRãRHRRRÀRoR}Rê(((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR—ãs* W  H    ^   J e €  sW#!/bin/sh REPOS="$1" REV="$2" USER="$3" PROPNAME="$4" ACTION="$5" if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi if [ "$ACTION" = "A" -a "$PROPNAME" = "hg:convert-branch" ]; then exit 0; fi if [ "$ACTION" = "A" -a "$PROPNAME" = "hg:convert-rev" ]; then exit 0; fi echo "Changing prohibited revision property" >&2 exit 1 tsvn_sinkcBsãeZejdejƒZejdejƒZd„Zd„Zd„Z d„Z d„Z d„Z d„Z ed „ƒZd „Zd „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(sCommitted revision (\d+).sRepository UUID:\s*(\S+)cCs |jrtj|jƒndS(N(R´R.tchdir(R@((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pytprerunæs cCs |jrtj|jƒndS(N(R´R.RTtcwd(R@((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pytpostrunês cCstjj|jd|ƒS(Ns.svn(R.R/R|R´(R@R3((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR|îscCs |jdƒS(Ns hg-shamap(R|(R@((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt revmapfileñscCs |jdƒS(Ns hg-authormap(R|(R@((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt authorfileôscCsûtj|||ƒtj||dƒg|_g|_g|_g|_d|_t j ƒ|_ t }t j jt j j|ddƒƒr±t j j|ƒ|_|jdƒnPtjd|ƒs—t j j|ƒ}t j jt j j|ƒƒr—t j jt j j|ddƒƒs\|jtdƒt j j|ƒƒt|d ƒjd |ƒ|}ntj|ƒ}|jd ƒs‡d |}nd |}q—nt j jt j ƒt j j|ƒd ƒ}|jtdƒt j j|ƒƒ|jd||ƒ||_tj|jƒ|_tj|jƒ|_t ||jdƒƒ|_!tj"|jƒratj#pdd|_$|rÄt j j|ddƒ}t%|dƒ}|j&t'ƒ|j(ƒtj)|t t*ƒn|jdƒ}|j+j|ƒj,dƒj-ƒ|_.dS(NR)s.svnRÚRs#^(file|http|https|svn|svn\+ssh)\://Rzsfs-typesinitializing svn repository %r tsvnadmintcreateRsfile://s-wcs!initializing svn working copy %r tcheckouts hg-childmapRxspre-revprop-changetwREi(/R RBR tdeletetsetexectdelexecRÙRCR´R.tgetcwdRVR}R/tisfileR|R trun0tretsearchR0tdirnameR{tstatusRtbasenameRR1RœRR‡twopenerRtchildmapt checkexectisexectis_execRƒRtpre_revprop_changeRXtsetflagsRotuuid_retgroupR­Rª(R@RiR/tcreatedtwcpaththookRNtoutput((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyRB÷sR     $$  + $  cGstjj|j|ŒS(N(R.R/R|R´(R@tnames((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pytwjoin)scCsÎtƒ}|jddtdtƒ}tjjj|ƒ}xŽ|jdƒD]}}xt|jD]i}|j |j ksY|j dkr†qYndj d„|jDƒƒ}|j tj|jdƒƒƒPqYWqIW|S( NR¾t recursivetxmlRtR3Rcss*|] }|j|jkr|jVqdS(N(tnodeTypet TEXT_NODER‰(Rètc((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pys 8ssutf-8(RÔRcRoRytdomtminidomt parseStringtgetElementsByTagNamet childNodesRzt ELEMENT_NODEttagNameR|RíRR4tencode(R@tmRutdocRÜRÛR3((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pytmanifest,s ! cCsd|kr"|jj||ƒnÝy/tjj|j|ƒƒrPtj|ƒnWntk rdnX|jj||ƒ|j rÿ|j |j|ƒƒr»d|krÚ|j j |ƒqÚnd|krÚ|j j |ƒnt j|j|ƒtd|kƒndS(NR<R(RitsymlinkR.R/tislinkRwtunlinktOSErrorRRmR`RÊR_RRoR}(R@tfilenametflagsR‰((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pytputfileCs     cCsë|j|ƒ}tjj|ƒ}|r~tjdddtjj|ƒƒ\}}tj|ƒtj|ƒtj ||ƒnz|j d||ƒWd|j j |ƒ|ræytj|ƒWnt k rÒnXtj ||ƒnXdS(Ntprefixshg-copy-tdirtcopy(RwR.R/tlexiststtempfiletmkstempRfRXRŠtrenameRcR‡RíR‹(R@RóRõtwdestR{tfdttempname((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt _copyfileWs" !   cCswtƒ}xg|D]_}tjj|j|ƒƒrA|j|ƒnx+tj|dƒD]}|j|| ƒqTWqW|S(NR(RÔR.R/R0RwRíRtrfindall(R@RØtdirsRàRÞ((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pytdirs_ofns  cCspgt|j|ƒƒD]}||jkr|^q}|rl|jj|ƒ|j|ddtdtƒn|S(NRít non_recursivetquiet(RÉRœR‡RtxargsRo(R@RØtdtadd_dirs((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyR¡ws cCs[g|D]}||jkr|^q}|rW|jj|ƒ|j|ddtƒn|S(NRíRž(R‡RRŸRo(R@RØRà((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt add_filess (cCs„g}xwt|j|ƒdtƒD]Z}|j|ƒ}tj|ƒdkr"|jd|ƒ|jj|ƒ|j |ƒq"q"W|S(NRæs.svnR^( RÉRœRoRwR.tlistdirRcR‡tremoveRÊ(R@RvtdeletedR twd((s</sys/lib/python2.7/site-packages/hgext/convert/subversion.pyt tidy_dirs†s"cCs||j|sXT " ("                  "ÿÿÿ