Ë ü|ëgå7=ãóø—ddlZddlZddlZddlZddlZddlZddlZddlZddlZ ddl m Z ddl m Z mZmZddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddl!m"Z"m#Z#m$Z$m%Z%da&ejNZ'ejPZ(ejRZ)ejTZ*d„Z+d„Z,Gd „d ejZ«Z.d „Z/d „Z0d „Z1d„Z2ddddœZ3d„Z4dd„Z5d„Z6Gd„d«Z7Gd„de7«Z8Gd„de7«Z9Gd„de7«Z:e8e9e:dœZ;y)éNé)Ú_)ÚbinÚhexÚshort)ÚcmdutilÚencodingÚerrorÚexchangeÚ logcmdutilÚmatchÚmergeÚpathutilÚphasesÚpycompatÚscmutilÚ subrepoutilÚutilÚvfs)ÚdateutilÚhashutilÚprocutilÚurlutilcóü—tjtj|««}tj|«}|j s2tj tj|j««}|S)zU get a path or url and if it is a path expand it and return an absolute path ) rÚ urllocalpathrÚ expandpathÚurlÚschemeÚnormpathÚabspathÚpath)r!Ú expandedpathÚus ú5usr/lib/python3.12/site-packages/mercurial/subrepo.pyÚ_expandedabspathr%7sR€ô×'Ñ'¬¯©¸Ó(=Ó>€LÜ� ‰ �LÓ!€AØ �8Š8Ü�}‰}œTŸ\™\¨!¯&©&Ó1Ó2ˆØ €Kócór—ttjt|««j ««ddS)zEget a unique filename for the store hash cache of a remote repositoryré )rrÚsha1r%Údigest)Ú remotepaths r$Ú_getstorehashcachenamer,Bs,€ä Œx�}‰}Ô-¨jÓ9Ó:×AÑAÓCÓ DÀQÀrÐ JÐJr&có—eZdZdZd„Zy)Ú SubrepoAbortzEException class used to avoid handling a subrepo error more than oncecó¦—|jdd«|_|jdd«|_tjj |g|¢­i|¤Žy)NÚsubrepoÚcause)Úpopr0r1r ÚAbortÚ__init__)ÚselfÚargsÚkws r$r4zSubrepoAbort.__init__JsB€Ø—v‘v˜i¨Ó.ˆŒ Ø—V‘V˜G TÓ*ˆŒ Ü � ‰ ×јTÐ/ DÒ/¨BÓ/r&N)Ú__name__Ú __module__Ú __qualname__Ú__doc__r4©r&r$r.r.Gs „ÙOó0r&r.có‡—ˆfd„}|S)Ncó•— ‰|g|¢­i|¤Ž}|S#t$r}|‚d}~wtj$rY}t|«}|jdzt d«|zz}t||j |tj«¬«‚d}~wwxYw)Nó s(in subrepository "%s"))Úhintr0r1) r.r r3Ú subrelpathÚmessagerr@ÚsysÚexc_info)r5r6ÚkargsÚresÚexr0ÚerrormsgÚfuncs €r$Údecoratedmethodz-annotatesubrepoerror..decoratedmethodQs”ø€ð Ù�tÐ,˜dÒ, eÑ,ˆCðˆ øôò àˆHûÜ�{‰{ò Ü  Ó&ˆGà— ‘ ˜TÑ!¤AÐ&@Ó$AÀGÑ$KÑKð ôؘrŸw™w°¼s¿|¹|»~ôð ûð  úsƒ ‘ B šœB ²ABÂB r<)rIrJs` r$ÚannotatesubrepoerrorrKPsø€ôð" Ðr&có”—|rtd«t|«||fz}ntd«t|«||fz}|j|d«S)Ns‰ subrepository sources for %s differ you can use (l)ocal source (%s) or (r)emote source (%s). what do you want to do?$$ &Local $$ &Remotes¢ subrepository sources for %s differ (in checked out version) you can use (l)ocal source (%s) or (r)emote source (%s). what do you want to do?$$ &Local $$ &Remoter)rrAÚ promptchoice)ÚuiÚsubÚdirtyÚlocalÚremoteÚmsgs r$Ú _updatepromptrTesb€Ù Üð $ó ô ˜‹_˜e VÐ ,ñ -‰ôð $ó ô ˜‹_˜e VÐ ,ñ -ˆð �?‰?˜3 Ó "Ð"r&có¢—|j«D]¼\}}}t|«D]\}}|j«|k(sŒ||=n|j|«j«dk7rŒU|D]c}|j«dk(sŒ|j t d«|j |«z«|j|j||««ŒeŒ¾y)Ns.hgóhgrcs5warning: removing potentially hostile 'hgrc' in '%s' ) ÚwalkÚ enumerateÚlowerÚbasenameÚwarnrÚjoinÚunlinkÚreljoin) rNrÚignoreÚdirnameÚdirsÚnamesÚiÚdÚfs r$Ú _sanitizerfxs¿€Ø #§¡¦ ш��uܘd–O‰DˆAˆqØ�w‰w‹y˜FÓ"ؘ�GÙð$ð �<‰<˜Ó × &Ñ &Ó (¨FÒ 2Ø ÛˆAØ�w‰w‹y˜GÓ#Ø—‘Üð%óð—h‘h˜wÓ'ñ (ôð— ‘ ˜3Ÿ;™; w°Ó2Õ3ññ!+r&cób—|jd«sd|vstj|«|k7r!tjt d«|z«‚t j|j«|«|jj|«r!tjt d«|z«‚y)Nó~ó$ó+subrepo path contains illegal component: %ss$subrepo '%s' traverses symbolic link) Ú startswithrrr r3rrÚ pathauditorÚrootÚwvfsÚislink)Úrepor!s r$Ú_auditsubrepopathrqŒs�€à ‡��tÔ ¨¡ ´·±ÀÓ0EÈÒ0MÜ�k‰kÜ Ð<Ó =ÀÑ Dó ð ð$„H×јŸ™Ó# DÔ)Ø ‡y�y×јÔÜ�k‰kœ!ÐCÓDÀtÑKÓLÐLðr&TF)óhgógitósvncó~—|jddd«s)tjtd«td«¬«‚tj |d«}|jdd|z|«s,tjtd «|ztd«¬«‚|t vr!tjtd «|z«‚y) NósubrepossallowedTssubrepos not enableds)see 'hg help config.subrepos' for details©r@Fs %s:alloweds%s subrepos not allowedsunknown subrepo type %s)Ú configboolr r3rÚSUBREPO_ALLOWED_DEFAULTSÚgetÚtypes)rNÚkindÚdefaults r$Ú _checktyper~Ÿs±€ð �=‰=˜ j°$Ô 7Ü�k‰kÜ Ð%Ó &ÜÐ?Ó@ô ð ô '×*Ñ*¨4°Ó7€GØ �=‰=˜ m°dÑ&:¸GÔ DÜ�k‰kÜ Ð(Ó )¨DÑ 0ÜÐ?Ó@ô ð ð  ”5ÑÜ�k‰kœ!Ð6Ó7¸$Ñ>Ó?Ð?ðr&có—ddlm}|a|j«}t||«|j|}t |j |d«|r|d|j|«|df}t|d|||dd|«S)z>return instance of the right subrepo class for subrepo in pathr©ÚhgérN) Úr�rprqÚsubstater~rNÚsubrevr{)Úctxr!Ú allowwdirÚ allowcreateÚhrpÚstates r$r0r0³s€€õà €Bà �8‰8‹:€DÜ�d˜DÔ!Ø �L‰L˜Ñ €E܈t�w‰w˜˜a™Ô!ÙØ�q‘˜3Ÿ:™: dÓ+¨U°1©XÐ6ˆÜ ��q‘‰?˜3  e¨B¨Q i°Ó =Ð=r&cóä—ddlm}|a|j«}t||«|j|}t |j |d«d}|ddk(rd}t|d|||d|fd«S) z=return an empty subrepo in pctx for the extant subrepo in ctxrr€r‚r&rrs(0000000000000000000000000000000000000000rT)rƒr�rprqr„r~rNr{)r†r!Úpctxr‰rprŠr…s r$Ú nullsubrepor�Çsy€õà €Bà �8‰8‹:€DÜ�d˜DÔ!Ø �L‰L˜Ñ €E܈t�w‰w˜˜a™Ô!Ø €FØ ˆQ�x�5ÒØˆÜ ��q‘‰?˜4 ¨¨a©°&Ð'9¸4Ó @Ð@r&có—eZdZd„Zd„Zd„Zd&d„Zd&d„Zd'd„Zd„Z d „Z d „Z d „Z d „Z d(d „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd)d„Zd„Zd*d„Zd„Zd„Zd„Z d „Z!d!„Z"d"„Z#d(d#„Z$e%d$„«Z&e%d%„«Z'y)+Úabstractsubrepocó^—|j«j|_||_||_y)zæInitialize abstractsubrepo part ``ctx`` is the context referring this subrepository in the parent repository. ``path`` is the path to this subrepository as seen from innermost repository. N)rprNÚ_ctxÚ_path)r5r†r!s r$r4zabstractsubrepo.__init__às#€ð—(‘(“*—-‘-ˆŒØˆŒ ؈� r&có—y)zÐAdd the hgwebdir entries for this subrepo, and any of its subrepos. ``serverpath`` is the path component of the URL for this repo. ``webconf`` is the dictionary of hgwebdir entries. Nr<©r5Ú serverpathÚwebconfs r$Ú addwebdirpathzabstractsubrepo.addwebdirpathís€ð r&có—y)z‡ returns true if the repository has not changed since it was last cloned from or pushed to a given repository. Fr<©r5r!s r$Ú storecleanzabstractsubrepo.storecleanös€ð r&có—t‚)a returns true if the dirstate of the subrepo is dirty or does not match current stored state. If ignoreupdate is true, only check whether the subrepo has uncommitted changes in its dirstate. If missing is true, check for deleted files. ©ÚNotImplementedError©r5Ú ignoreupdateÚmissings r$rPzabstractsubrepo.dirtyýs €ô "Ð!r&cóX—|j||¬«rtd«t|«zSy)z·return reason string if it is ``dirty()`` Returned string should have enough information for the message of exception. This returns None, otherwise. ©rŸr s)uncommitted changes in subrepository "%s"N)rPrrAržs r$Ú dirtyreasonzabstractsubrepo.dirtyreasons8€ð �:‰: <¸ˆ:Ô AÜÐAÓBÄZØóFñð ð Br&Ncó\—|j|d¬«}|rtj||¬«‚y)z+raise Abort if subrepository is ``dirty()``Tr¢rwN)r£r r3)r5rŸr@r£s r$Ú bailifchangedzabstractsubrepo.bailifchangeds0€à×&Ñ&°LÈ$Ð&ÓOˆ Ù Ü—+‘+˜k°Ô5Ð 5ð r&có—t‚)zpcurrent working directory base state, disregarding .hgsubstate state and working directory modificationsrœ©r5s r$Ú basestatezabstractsubrepo.basestates €ô"Ð!r&có—y)z7check if path is a subrepository within this repositoryFr<r™s r$Ú checknestedzabstractsubrepo.checknesteds€àr&có—t‚)z¨commit the current changes to the subrepo with the given log message. Use given user and date if possible. Return the new state of the subrepo. rœ)r5ÚtextÚuserÚdates r$Úcommitzabstractsubrepo.commit!ó €ô "Ð!r&có"—tjS)z6returns phase of specified state in the subrepository.)rÚpublic©r5rŠs r$Úphasezabstractsubrepo.phase(s €ä�}‰}Ðr&có—t‚)zTremove the subrepo (should verify the dirstate is not dirty first) rœr§s r$Úremovezabstractsubrepo.remove,r°r&có—t‚)zTrun whatever commands are needed to put the subrepo into this state rœ)r5rŠÚ overwrites r$rzzabstractsubrepo.get3s €ô"Ð!r&có—t‚)z/merge currently-saved state with the new state.rœr³s r$rzabstractsubrepo.merge9ó€ä!Ð!r&có—t‚)zhperform whatever action is analogous to 'hg push' This may be a no-op on some systems. rœ©r5Úoptss r$Úpushzabstractsubrepo.push=r°r&c ó—gS©Nr<©r5rNr ÚprefixÚuipathfnÚ explicitonlyr½s r$Úaddzabstractsubrepo.addDs€Øˆ r&cóV—|jjd|td«fz«y)Ns%s: %ssaddremove is not supportedr©rNr[r)r5ÚmatcherrÂrÃr½s r$Ú addremovezabstractsubrepo.addremoveGs%€Ø �‰� ‰ �Y &¬!Ð,IÓ*JÐ!KÑKÔLØr&c ó—y©Nrr<)r5r ÚfmÚ fntemplaterÂr½s r$Úcatzabstractsubrepo.catKó€Ør&c ó8—tjggggggg«SrÀ)rÚstatus)r5Úrev2r½s r$rÑzabstractsubrepo.statusNs€Ü�~‰~˜b " b¨"¨b°"°bÓ9Ð9r&c ó—yrÀr<)r5rNÚdiffoptsÚnode2r rÂr½s r$Údiffzabstractsubrepo.diffQs€Ø r&có—yrËr<)r5rNÚdestr½s r$Úoutgoingzabstractsubrepo.outgoingTrÏr&có—yrËr<)r5rNÚsourcer½s r$Úincomingzabstractsubrepo.incomingWrÏr&có—t‚)zreturn filename iteratorrœr§s r$Úfileszabstractsubrepo.filesZrºr&có—t‚)z9return file data, optionally passed through repo decodersrœ©r5ÚnameÚdecodes r$Úfiledatazabstractsubrepo.filedata^rºr&có—y)zreturn file flagsr&r<)r5rás r$Ú fileflagszabstractsubrepo.fileflagsbs€àr&có.—tj|¬«S)z,Resolve the fileset expression for this repo©Úbadfn)ÚmatchmodÚnever)r5ÚcwdÚexprrès r$Ú matchfilesetzabstractsubrepo.matchfilesetfs€ä�~‰~ EÔ*Ð*r&có—y)z)handle the files command for this subreporr<)r5rNÚmrÃrÌÚfmtÚsubreposs r$Ú printfileszabstractsubrepo.printfilesjs€àr&c ó—|�'|j«D�cgc] }||«sŒ |‘Œ}}n|j«}t|«}t|«}|jj t d«|zt d«|¬«} | j d«|D]Z} |j| «} d| vxrdxsd} d| v} |j|| z| | |j| |««| j«Œ\| j«|Scc}w) Nóarchiving (%s)ófiles)ÚunitÚtotalróxiíi¤ól) rÞÚlenrArNÚ makeprogressrÚupdateråÚaddfilerãÚ incrementÚcomplete)r5ÚarchiverrÂr rârerÞr÷ÚrelpathÚprogressráÚflagsÚmodeÚsymlinks r$Úarchivezabstractsubrepo.archivens€Ø Ð Ø $§ ¡ ¤ Ó9¡ ˜1±°aµ’Q  ˆEÑ9à—J‘J“LˆEÜ�E“ ˆÜ˜TÓ"ˆØ—7‘7×'Ñ'Ü ÐÓ  7Ñ *´°8³ÀEð(ó ˆð �‰˜ÔÛˆDØ—N‘N 4Ó(ˆEؘ5�=Ò* UÒ3¨eˆDؘe�mˆGØ × Ñ Ø˜‘ ˜t W¨d¯m©m¸DÀ&Ó.Iô ð × Ñ Õ ðð ×ÑÔØˆ ùò%:s • D£Dcó—y)zv walk recursively through the directory tree, finding all files matched by the match function Nr<)r5r s r$rWzabstractsubrepo.walk„ó�r&có —ggfSrÀr<©r5r rÂrÃÚdryrunÚ interactives r$Úforgetzabstractsubrepo.forgetŠs €Ø�Bˆxˆr&c óR—|jtd«|jz«y)zÒremove the matched files from the subrepository and the filesystem, possibly by force and/or after the file has been removed from the filesystem. Return 0 on success, 1 on any warning. s)warning: removefiles not implemented (%s)r)Úappendrr’© r5rÈrÂrÃÚafterÚforcerñr Úwarningss r$Ú removefileszabstractsubrepo.removefiles�s'€ð �‰Ü Ð:Ó ;¸d¿j¹jÑ Hô ðr&cód—|jjtd«|d|dfz«gS)Ns)%s: reverting %s subrepos is unsupported rr‚rÇ©r5r„Úpatsr½s r$Úrevertzabstractsubrepo.revert¡s7€Ø �‰� ‰ Ü Ð;Ó <ؘ‰{˜H Q™KÐ(ñ )ô ðˆ r&có—|SrÀr<©r5Úrevids r$Úshortidzabstractsubrepo.shortid¨s€Øˆ r&có—y)zH convert this repository from shared to normal storage. Nr<r§s r$Úunsharezabstractsubrepo.unshare«rr&có—y)a1verify the revision of this repository that is held in `_state` is present and not hidden. Return 0 on success or warning, 1 on any error. In the case of ``onpush``, warnings or errors will raise an exception if the result of pushing would be a broken remote repository. rr<)r5Úonpushs r$Úverifyzabstractsubrepo.verify°s€ð r&có¢—tj|jj«jj |j ««S)z@return vfs to access the working directory of this subrepository)Úvfsmodrr‘rprnr\r’r§s r$rnzabstractsubrepo.wvfs¸s3€ô�z‰z˜$Ÿ)™)Ÿ.™.Ó*×/Ñ/×4Ñ4°T·Z±ZÓ@ÓAÐAr&có�—|jjt|jj ««|j «S©zCreturn path to this subrepository as seen from outermost repository)rnr^Ú reporelpathr‘rpr’r§s r$Ú_relpathzabstractsubrepo._relpath½s/€ð�y‰y× Ñ ¤¨T¯Y©Y¯^©^Ó-=Ó!>ÀÇ Á ÓKÐKr&©FF)FN©FrÀ©NT)(r8r9r:r4r—ršrPr£r¥r¨rªr¯r´r¶rzrr¾rÅrÉrÎrÑrÖrÙrÜrÞrãråríròrrWr rrrrr!Ú propertycachernr'r<r&r$r�r�ßsØ„ò ò òó"ó ó6ò "ò ò"òò"ó"ò "ò"òòòò:ò òòò"ò"òó+òóò, ò òò(òò ó ðñBóðBðñLóñLr&r�có2‡—eZdZˆfd„Zed„«Zd„Zd„Zd„Ze d„«Z d„Z d„Z d „Z ed „«Zed „«Zed „«Zed „«Zed„«Zed„«Zed,d„«Zed-d„«Zd„Zd„Zed„«Zed„«Zed„«Zd„Zed.d„«Zed„«Zed„«Zed„«Zed„«Z ed„«Z!d„Z"d„Z#ed „«Z$ed/d!„«Z%d"„Z&ed#„«Z'ed$„«Z(ed%„«Z)d&„Z*d'„Z+ed(„«Z,d.d)„Z-e d*„«Z.e d+„«Z/ˆxZ0S)0Ú hgsubrepocóð•—tt|� ||«||_|j «}|j t j|««}|xr|jjd|z« }tjj|«}tjjtjjt j|«««} | |k7r!tj t#d«|z«‚t$j'|j(||¬«|_tjj|j*j,«tjj|«k7r.tj.d||j*j,fz«‚||j1«ur|j*j1«|_|j*j2|_dD]B\} } |j2j5| | «} | sŒ%|j2j7| | | d«ŒD|j2j7ddd d«|j9||d |«y) Ns%s/.hgrj©Úcreates9failed to reject unsafe subrepo path: %s (expanded to %s)))óuiscommitsubreposósubrepor1s_usedassubreposTruer)Úsuperr-r4Ú_staterpÚwjoinrÚ localpathrnÚexistsÚosr!ÚnormcaseÚrealpathrr r3rr�Ú repositoryÚbaseuiÚ_repormÚProgrammingErrorÚ unfilteredrNÚconfigÚ setconfigÚ _initrepo)r5r†r!rŠrˆÚrrmr0Ú norm_rootÚ real_rootÚsÚkÚvÚ __class__s €r$r4zhgsubrepo.__init__ÄsÜø€Ü Œi˜Ñ'¨¨TÔ2؈Œ Ø �H‰H‹JˆØ�w‰w”t—~‘~ dÓ+Ó,ˆØÒD Q§V¡V§]¡]°9¸tÑ3CÓ%DÐ!Dˆô—G‘G×$Ñ$ TÓ*ˆ Ü—G‘G×$Ñ$¤R§W¡W×%5Ñ%5´d·o±oÀdÓ6KÓ%LÓMˆ Ø ˜ Ò !Ü—+‘+ÜÐ@ÓAÀDÑHóð ô—]‘] 1§8¡8¨T¸&�]ÓAˆŒ Ü �7‰7× Ñ ˜DŸJ™JŸO™OÓ ,´·±×0@Ñ0@ÀÓ0FÒ FÜ×(Ñ(ð-Ø04°d·j±j·o±oÐ/FñGóð ð �— ‘ “Ñ ØŸ™×.Ñ.Ó0ˆDŒJà—*‘*—-‘-ˆŒÛ0‰DˆAˆqØ—‘— ‘ ˜A˜qÓ!ˆAÚØ—‘×!Ñ! ! Q¨¨:Õ6ð1ð �‰×ј%Ð!2°G¸ZÔHØ �‰�q˜% ™( FÕ+r&cóX—tj|jt|«|«yrÀ)rr—r=rAr”s r$r—zhgsubrepo.addwebdirpathæs€ä×јdŸj™j¬*°TÓ*:¸GÕDr&có„—|jj«5|j|«cddd«S#1swYyxYwrÀ)r=ÚlockÚ _storecleanr™s r$ršzhgsubrepo.storecleanês*€Ø �Z‰Z�_‰_Õ Ø×#Ñ# DÓ)÷× Ò ús›6¶?cóž—d}|j|«}|j|«D]}|t|d«k7sŒd}n|rt|d«du}|S)NTF)Ú_calcstorehashÚ_readstorehashcacheÚnext)r5r!ÚcleanÚ itercacheÚfilehashs r$rMzhgsubrepo._storecleanîs`€ØˆØ×'Ñ'¨Ó-ˆ Ø×0Ñ0°Ö6ˆHØœ4  ¨4Ó0Ó0Ø�Ùð7ñ ô˜ DÓ)¨TÐ1ˆE؈ r&c#óòK—d}dt|«z–—|jj}|D]F}tt j |j |««j««}d||fz–—ŒHy­w)z˜calculate a unique "store hash" This method is used to to detect when there are changes that may require a push to a given remote path.)s bookmarkssstore/phaserootssstore/00changelog.is# %s ó%s = %s N)r%r=rrrr)Útryreadr*)r5r+ÚfilelistrÚrelnamerTs r$rOzhgsubrepo._calcstorehashûskèø€ð OˆØÔ*¨:Ó6Ñ6Ò6Ø�j‰j�n‰nˆÛˆGÜœ8Ÿ=™=¨¯©°WÓ)=Ó>×EÑEÓGÓHˆHØ '¨8Ð!4Ñ4Ó 4ñ ùs‚A5A7cór—tj|jjjd««S)Nscache/storehash)r#rr=r\r§s r$Ú_cachestorehashvfszhgsubrepo._cachestorehashvfss%€ä�z‰z˜$Ÿ*™*Ÿ.™.×-Ñ-Ð.@ÓAÓBÐBr&cóP—t|«}|jj|d«S)z7read the store hash cache for a given remote repositoryór)r,r[Ú tryreadlines)r5r+Ú cachefiles r$rPzhgsubrepo._readstorehashcache s%€ä*¨:Ó6ˆ Ø×&Ñ&×3Ñ3°I¸tÓDÐDr&cóî—t|«}|jj«5t|j |««}|j }|j ||dd¬«ddd«y#1swYyxYw)zÄcache the current store hash Each remote repo requires its own store hash cache, because a subrepo store may be "clean" versus a given remote repo, but not versus another swbT)rÚ notindexedN)r,r=rLÚlistrOr[Ú writelines)r5r+r_Ú storehashrs r$Ú_cachestorehashzhgsubrepo._cachestorehashs\€ô +¨:Ó6ˆ Ø �Z‰Z�_‰_Õ Ü˜T×0Ñ0°Ó<Ó=ˆIØ×)Ñ)ˆCØ �N‰N˜9 i°eȈNÔ M÷× Ñ ús ¦.addpathconfig-s8ø€ÙØ—L‘L °°e° Ñ!<Ô=Ø—G‘G×%Ñ% h°°U¸JÕGðr&F)ÚabortTsdefaults default-pushrVr&) r=Ú _subparentÚ _subsourceÚ _abssourcerÚwriterÚ tonativeeolr\)r5Ú parentreporÛr0rnÚdefpathÚ defpushpathrms` @r$rBzhgsubrepo._initrepo%s›ù€à *ˆ� ‰ ÔØ &ˆ� ‰ Ôá Ø!�NˆEõ Hô ! §¡°5Ô9ˆGÜ$ T§Z¡Z°¸UÔCˆKÙ ˜* gÔ .ؘ+Ò%Ù˜o¨{Ô;à �J‰J�N‰N× Ñ  ¬$×*:Ñ*:¸3¿8¹8ÀE»?Ó*KÕ Lð r&c óH—|jj«5|jjj|j«5t j ||j||||fi|¤Žcddd«cddd«S#1swYnxYwddd«y#1swYyxYwrÀ)r=ÚwlockÚdirstateÚchanging_filesrrÅrÁs r$rÅz hgsubrepo.add:s{€ð �Z‰Z× Ñ Õ  §¡×!4Ñ!4×!CÑ!CÀDÇJÁJÕ!OÜ—;‘;ØØ— ‘ ØØØØñ ðñ÷"PÐ!O× Ñ ×!OÐ!Oú× × Ñ ús#›0BÁ %BÁ0 BÂB ÂBÂB!c óx—tj|«}d|d<|jj«5|jjj |j«5t j |j||||«cddd«cddd«S#1swYnxYwddd«y#1swYyxYw)NTrv)Úcopyr=ryrzr{rrÉ)r5rïrÂrÃr½s r$rÉzhgsubrepo.addremoveKs‰€ô �y‰y˜‹ˆØ ˆˆ[Ñð �Z‰Z× Ñ Õ  §¡×!4Ñ!4×!CÑ!CÀDÇJÁJÕ!OÜ×$Ñ$Ø— ‘ ØØØØó ÷"PÐ!O× Ñ ×!OÐ!Oú× × Ñ ús#µ0B0Á%#B B0ÂB$  B0Â0B9c óž—|jd}|j|}tj|j|j|||||fi|¤ŽSrË)r4r=rrÎrN)r5r rÌrÍrÂr½rgr†s r$rÎz hgsubrepo.cat_sL€à�k‰k˜!‰nˆØ�j‰j˜‰oˆÜ�{‰{Ø �G‰G�T—Z‘Z  e¨R°¸Vñ ØGKñ ð r&c ót— |jd}|j|}|j|}|jj||fi|¤ŽS#tj$rW}|j j td«|t|«fz«tjggggggg«cYd}~Sd}~wwxYw)Nró*warning: error "%s" in subrepository "%s" ) r4r=rÑr ÚRepoLookupErrorrNr[rrAr)r5rÒr½Úrev1Úctx1Úctx2Úinsts r$rÑzhgsubrepo.statusgs¬€ð >Ø—;‘;˜q‘>ˆDØ—:‘:˜dÑ#ˆDØ—:‘:˜dÑ#ˆDØ$�4—:‘:×$Ñ$ T¨4Ñ8°4Ñ8Ð 8øÜ×$Ñ$ò >Ø �G‰G�L‰LÜÐ@ÓAØœ DÓ)Ð*ñ+ô ô—>‘> " b¨"¨b°"°b¸"Ó=Õ =ûð  >ús‚A A Á B7Á A B2Â,B7Â2B7c óx— t|jd«}|� t|«}tj||j||j||j||f|ddœ|¤Žy#t j $r<}|jjtd«|t|«fz«Yd}~yd}~wwxYw)NrT)rÂÚ listsubreposr€) rr4r Údiffordiffstatr=r r�rNr[rrA) r5rNrÔrÕr rÂr½Únode1r…s r$rÖzhgsubrepo.diffus¿€ð ܘŸ ™  A™Ó'ˆEðРܘE› �Ü × %Ñ %ØØ— ‘ ØØ— ‘ ˜5Ñ!Ø— ‘ ˜5Ñ!Øð ðØ!ñ ðó øô×$Ñ$ò Ø �G‰G�L‰LÜÐ@ÓAØœ DÓ)Ð*ñ+÷ ñ ûð ús‚A'A*Á*B9Á=2B4Â4B9cóP—|j|jdz«|j«}|r|D�cgc] }||«sŒ |‘Œ}}|jd}|j|}t j |j|j «t j|j|«fg«tj||||«} |jD]D} t|| d«} tj| |«} || zdz} | | j|| | |«z } ŒF| Scc}w)N)rrrTó/)Ú_getr4rÞr=rÚ prefetchfilesrgÚ matchfilesr�rr„r0réÚ subdirmatcher)r5rrÂr rârÞrergr†r÷ÚsubpathrFÚsubmatchÚ subprefixs r$rzhgsubrepo.archiveŽs €à � ‰ �$—+‘+ Ñ(Ô)Ø— ‘ “ ˆÙ Ù %Ó2¡˜1©¨q­’Q ˆEÐ2Ø�k‰k˜!‰nˆØ�j‰j˜‰oˆÜ×ÑØ �J‰J˜#Ÿ'™'›)¤W×%7Ñ%7¸¿ ¹ ÀEÓ%JÐKÐLô ô ×'Ñ'¨¨h¸ÀÓFˆØ—|”|ˆGܘ˜W dÓ+ˆAÜ×-Ñ-¨g°uÓ=ˆHØ Ñ(¨4Ñ/ˆIØ �Q—Y‘Y˜x¨°H¸fÓEÑ E‰Eð $ð ˆ ùò3s µ D#ÁD#cóº—|jd}|dk(r|sy|jd}||j«j«k7r|sy|j |¬«S)Nrr&T)r )r4r=Úp1rrP)r5rŸr rCÚws r$rPzhgsubrepo.dirty¡sS€à �K‰K˜‰NˆØ �Š8™LØØ �J‰J�tÑ ˆØ �—‘“— ‘ “ Ò ¡\àØ�w‰w˜wˆwÓ'Ð'r&có<—|jdj«S©Nó.)r=rr§s r$r¨zhgsubrepo.basestate¬s€Ø�z‰z˜$Ñ×#Ñ#Ó%Ð%r&cój—|jj|jj|««SrÀ)r=Ú _checknestedr5r™s r$rªzhgsubrepo.checknested¯s&€Ø�z‰z×&Ñ& t§z¡z×'7Ñ'7¸Ó'=Ó>Ð>r&có:—|jd«s|jdj«S|jj dt |«z«|jj |||«}|s|jdj«St|«S)NTr˜scommitting subrepo %s )rPr=rrNÚdebugrAr¯)r5r¬r­r®Úns r$r¯zhgsubrepo.commit²s€ð�z‰z˜$ÔØ—:‘:˜dÑ#×'Ñ'Ó)Ð )Ø �‰� ‰ Ð0´:¸dÓ3CÑCÔDØ �J‰J× Ñ ˜d D¨$Ó /ˆÙØ—:‘:˜dÑ#×'Ñ'Ó)Ð )Ü�1‹vˆ r&cóD—|j|xsdj«Sr—)r=r´r³s r$r´zhgsubrepo.phase¾s€à�z‰z˜%š- 4Ñ(×.Ñ.Ó0Ð0r&cóΗ|jjtd«t|«z«tj |j |j jd«y)Nóremoving subrepo %s F)rNÚnoterrAr�rRr=Únullidr§s r$r¶zhgsubrepo.removeÂsB€ð �‰� ‰ ”QÐ/Ó0´:¸dÓ3CÑCÔDÜ �‰�—‘˜TŸZ™Z×.Ñ.°Õ6r&c󚇇—|\}}}‰jj}|‰jj«vr)t‰j«dk7s|j «sy|‰j_t ‰j«Šˆˆfd„}t‰j«dk(�rC‰jjj«|j «rÂtj‰«r­‰jjtd«t‰«‰fz«|«} tj‰jjj |‰jj"dd¬«}|j%«|j'«‰_�n'|j «rS‰jj)dd«} | rt+j,| «} | ‰jj)dd «d œ} ni} ‰jjtd «t‰«t/j0‰«fz«|«} tj3‰jjj i|‰jj"d| ¬ «\} } |j%«| j'«‰_‰j5||d¬ «‰j7‰«y‰jjtd«t‰«t/j0‰«fz«‰j9‰«} |«} t;j<‰j|«|j%«| r‰j7‰«y#|j%«wxYw#|j%«wxYw#|j%«wxYw)NrTcóF•—tj‰ji‰«SrÀ)r�Úpeerr=)r5Úsrcurls€€r$Úz hgsubrepo._get..Ösø€œ"Ÿ'™' $§*¡*¨b°&Ô9r&ssharing subrepo %s from %s F)rüÚ bookmarkssshareópools poolnaming)r©smodeócloning subrepo %s from %s )rüÚ shareoptsr/ópulling subrepo %s from %s )r=rpr?rúÚsharedrqrrrÚrmtreer�ÚislocalrNrÑrrAÚsharer<rmÚcloserQr@rrrÚ hidepasswordÚclonerBreršr Úpull)r5rŠrÛÚrevisionr|ruÚgetpeerr¥r­Úpoolr«ÚotherÚclonedÚcleansubr¦s` @r$rŒzhgsubrepo._getÉsù€Ø!&ш�˜$Ø—Z‘Z×*Ñ*ˆ à �t—z‘z×,Ñ,Ó.Ñ .ä�4—:‘:‹ !Ò#¨:×+<Ñ+<Ô+>ØØ &ˆ� ‰ ÔܘDŸJ™JÓ'ˆô:ˆä ˆt�z‰z‹?˜aÓ à �J‰J�N‰N× !Ñ !Ô #ð× Ñ Ô"¤r§z¡z°&Ô'9Ø—‘—‘ÜÐ5Ó6Ü! $Ó'¨Ð0ñ1ôñ“y�ð !ÜŸX™XØŸ ™ ×-Ñ-×4Ñ4ØØŸ ™ Ÿ™Ø$Ø"'ð &ó�Fð—J‘J”LØ#Ÿ\™\›^�– ð×$Ñ$Ô&ØŸ7™7Ÿ>™>¨(°GÓ<�DÙÜ#Ÿ™¨tÓ4˜ð"&Ø!%§¡§¡°¸-Ó!Hñ!‘Ið !#�Ià—‘—‘ÜÐ5Ó6Ü! $Ó'¬×)=Ñ)=¸fÓ)EÐFñGôñ“y�ð !Ü$&§H¡HØŸ ™ ×-Ñ-×4Ñ4ØØØŸ ™ Ÿ™Ø$Ø"+ð %-ó%‘M�E˜6ð—J‘J”LØ#Ÿ\™\›^�” Ø �N‰N˜: v°dˆNÔ ;Ø × Ñ  Ô (ðð �G‰G�N‰NÜÐ1Ó2ܘdÓ#¤W×%9Ñ%9¸&Ó%AÐBñCô ð—‘ vÓ.ˆHÙ“9ˆDð Ü— ‘ ˜dŸj™j¨$Ô/à— ‘ ” Ùà×$Ñ$ VÔ,Øøðe—J‘J•Lûð@—J‘J•Lûð— ‘ • ús&Ä,A NÉAN#Í N8ÎN Î#N5Î8O có¾—|j|«}|\}}}|j}|jjd|jz«|r]|j «}||} | j «r8|jjtd«|dd|jfz«|}|rtj||«ytj||«y)Nsgetting subrepo %s s,revision %s in subrepository "%s" is hidden rr() rŒr=rNrœr’r?Úhiddenr[rrÚ clean_updaterü) r5rŠr¸ÚinreporÛrµr|rpÚurepor†s r$rzz hgsubrepo.get$s¼€à—‘˜5Ó!ˆØ!&ш�˜$Ø�z‰zˆØ �‰� ‰ Ð-°· ± Ñ:Ô;Ù Ø—O‘OÓ%ˆEؘ‘/ˆCØ�z‰zŒ|Ø—‘— ‘ ÜÐFÓGØ  "�~ t§z¡zÐ2ñ3ôð�Ù Ü × Ñ ˜t H™~Õ .ä �L‰L˜˜h™Õ (r&cól‡‡‡‡‡—‰j‰«‰jdЉj‰dЉj‰«Šˆˆˆˆˆfd„}‰jd}‰j«r=‰‰k7r/t ‰j ‰|j«‰‰«r|«y|«yy|«y)Nr˜rc󾕗‰‰k(rl‰j«‰j«k(rK‰jjdt‰«z«tj ‰j ‰d«y‰‰k(r(‰jjdt‰«z«y‰jjdt‰«z«tj‰d¬«y)Nsupdating subrepository "%s" rsskipping subrepository "%s" smerging subrepository "%s" F)Úremind)ÚbranchrNrœrAr�rür=r)ÚancÚcurÚdstr5rŠs€€€€€r$Ú mergefuncz"hgsubrepo.merge..mergefunc?s§ø€Ø�cŠz˜cŸj™j›l¨c¯j©j«lÒ:Ø—‘— ‘ Ø4´zÀ$Ó7GÑGôô— ‘ ˜$Ÿ*™* e¨A¡hÕ/ؘ’Ø—‘— ‘ Ø4´zÀ$Ó7GÑGõð—‘— ‘ Ø3´jÀÓ6FÑFôô—‘˜ U�Õ+r&)rŒr=ÚancestorrPrTrN)r5rŠrÇÚwctxrÄrÅrÆs`` @@@r$rzhgsubrepo.merge8s˜ü€à � ‰ �%ÔØ�j‰j˜ÑˆØ�j‰j˜˜q™Ñ"ˆØ�l‰l˜3Óˆ÷ ,ð ,ð �z‰z˜$ÑˆØ �:‰:Œ<Ø�cŠzÜ  §¡¨$°· ± ³ ¸cÀ3ÔGÙ•Ká• ðHñ �Kr&có‚—|jd«}|jd«}|jd«}|jd}|j}t|«D]'}|j |«j |«dk(sŒ'yt |jd«}|sW|j|«rF|jjtd«t|«tj|«fz«y|jjtd «t|«tj|«fz«tj|jd|i|«} t!j |j| ||¬ «} | j#«|j%|«| j&S#| j#«wxYw) Nóforces new_branchssshr˜rFTs4no changes made to subrepo %s since last push to %s spushing subrepo %s to %s )Ú newbranch)rzr=r„ÚsortedrOr¾rrršrNrÑrrArr²r�r¥r r±reÚcgresult) r5r½rrÌÚsshÚcÚsubsrFÚdsturlr¸rFs r$r¾zhgsubrepo.pushYsk€à—‘˜Ó"ˆØ—H‘H˜]Ó+ˆ Ø�h‰h�vÓˆð �J‰J�tÑ ˆØ�z‰zˆÜ˜–ˆAØ�u‰u�Q‹x�}‰}˜TÓ" aÓ'Ùðô˜DŸJ™J¨Ó-ˆÙØ�‰˜vÔ&Ø—‘—‘ÜÐNÓOÜ! $Ó'¬×)=Ñ)=¸fÓ)EÐFñGôðØ �‰�‰Ü Ð+Ó ,ܘ$Ó¤×!5Ñ!5°fÓ!=Ð>ñ ?ô ô—‘˜Ÿ ™  V¨S M°6Ó:ˆð Ü—-‘- § ¡ ¨E°5ÀIÔNˆCà �K‰KŒMð ×јVÔ$Ø�|‰|Ðøð �K‰K�Mús Å#F,Æ,F>có —d|vsd|vr9tj|«}|jdd«|jdd«tj|j«}t j ||j|||¬«S©Nsrevsbranch)r�)r}r2rÚrepo_rel_or_abs_sourcer=r�rÙ)r5rNrØr½r�s r$rÙzhgsubrepo.outgoing|sj€à �T‰>˜Y¨$Ñ.Ü—9‘9˜T“?ˆDØ �H‰H�V˜TÔ "Ø �H‰H�Y Ô %Ü×4Ñ4°T·Z±ZÓ@ˆÜ�{‰{˜2˜tŸz™z¨4°¸wˆ{ÓGÐGr&có —d|vsd|vr9tj|«}|jdd«|jdd«tj|j«}t j ||j|||¬«SrÔ)r}r2rrÕr=r�rÜ)r5rNrÛr½r�s r$rÜzhgsubrepo.incoming…sj€à �T‰>˜Y¨$Ñ.Ü—9‘9˜T“?ˆDØ �H‰H�V˜TÔ "Ø �H‰H�Y Ô %Ü×4Ñ4°T·Z±ZÓ@ˆÜ�{‰{˜2˜tŸz™z¨6°4Àˆ{ÓIÐIr&cóz—|jd}|j|}|j«j«SrË)r4r=ÚmanifestÚkeys)r5rgr†s r$rÞzhgsubrepo.filesŽs1€à�k‰k˜!‰nˆØ�j‰j˜‰oˆØ�|‰|‹~×"Ñ"Ó$Ð$r&có —|jd}|j||j«}|r|jj||«}|SrË)r4r=ÚdataÚ wwritedata)r5rárârgrÛs r$rãzhgsubrepo.filedata”sH€Ø�k‰k˜!‰nˆØ�z‰z˜#‰˜tÑ$×)Ñ)Ó+ˆÙ Ø—:‘:×(Ñ(¨¨tÓ4ˆD؈ r&có`—|jd}|j|}|j|«SrË)r4r=r)r5rárgr†s r$råzhgsubrepo.fileflags›s*€Ø�k‰k˜!‰nˆØ�j‰j˜‰oˆØ�y‰y˜‹Ðr&c óÈ—|jj«€|jd}n|jd}|j|}t j |||||||«SrË)r‘rgr=r4rrÞ) r5rNrïrÃrÌrðrñr†rgs r$ròzhgsubrepo.printfiles sW€ð �9‰9�=‰=‹?Ð "Ø—*‘*˜TÑ"‰Cà—+‘+˜a‘.ˆCØ—*‘*˜S‘/ˆCÜ�}‰}˜R  a¨°2°s¸HÓEÐEr&c ó’—|jj«€|jd}n|jd}|j|}|j |||¬«g}|j D]Q}|j |«} |j |||¬«} tj|| |¬«} |j| «ŒSt%|«dk(r|dStj&|«S#tj$rM|jjtd«|jj!t#|«|«z«YŒÛwxYw)Nrrçs#skipping missing subrepository: %s r)r‘rgr=r4rír„rOréÚprefixdirmatcherrr Ú LookupErrorrNrÑrrnr^r&rúÚ unionmatcher) r5rërìrèr†rgÚmatchersr�rOÚsmÚpms r$rízhgsubrepo.matchfileset«s$€à �9‰9�=‰=‹?Ð "Ø—*‘*˜TÑ"‰Cà—+‘+˜a‘.ˆCØ—*‘*˜S‘/ˆCà×$Ñ$ S¨$°eÐ$Ó<Ð=ˆà—|”|ˆGØ—'‘'˜'Ó"ˆCð Ø×%Ñ% c¨4°uÐ%Ó=�Ü×.Ñ.¨w¸À%ÔH�Ø—‘ Õ#ð $ô ˆx‹=˜AÒ Ø˜A‘;Ð Ü×$Ñ$ XÓ.Ð.øô×$Ñ$ò Ø—‘—‘ÜÐ=Ó>Ø—i‘i×'Ñ'¬ °DÓ(9¸7ÓCñDöð úsÁ?=C&Ã&AEÅEcóB—|jd}|j|«SrÀ)r=rW)r5r r†s r$rWzhgsubrepo.walkÅs€Ø�j‰j˜ÑˆØ�x‰x˜‹Ðr&c ó`—|jj«5|jjj|j«5t j |j |j|||d||¬«cddd«cddd«S#1swYnxYwddd«y#1swYyxYw)NT)r r )r=ryrzr{rr rNr s r$r zhgsubrepo.forgetÉs{€ð �Z‰Z× Ñ Õ  §¡×!4Ñ!4×!CÑ!CÀDÇJÁJÕ!OÜ—>‘>Ø—‘Ø— ‘ ØØØØØØ'ô ÷"PÐ!O× Ñ ×!OÐ!Oú× × Ñ úó#›0B$Á 1BÁ< B$ÂB ÂB$Â$B-c ó`—|jj«5|jjj|j«5t j |j |j|||||||« cddd«cddd«S#1swYnxYwddd«y#1swYyxYwrÀ)r=ryrzr{rr¶rNrs r$rzhgsubrepo.removefilesÛs~€ð �Z‰Z× Ñ Õ  §¡×!4Ñ!4×!CÑ!CÀDÇJÁJÕ!OÜ—>‘>Ø—‘Ø— ‘ ØØØØØØØó ÷"PÐ!O× Ñ ×!OÐ!Oú× × Ñ úrècó"—|jjtd«|dz«|jd«s/|j «}d|d<|d|d<|j |i|¤Ž|jd«s|j|d¬ «yy) Nóreverting subrepo %s rÚ no_backupr®rrgÚdry_runT©r¸)rNrÑrrzr}Ú filerevertrs r$rzhgsubrepo.revertøsˆ€ð �‰�‰”qÐ2Ó3°h¸q±kÑAÔBØ�x‰x˜ Ô$ð—9‘9“;ˆD؈D�‰LØ" 1™+ˆD�‰Kà ˆD�O‰O˜TÐ * TÒ *ð�x‰x˜ Ô"Ø �H‰H�X¨ˆHÕ .ð#r&cóš—|j|d}|jd«rdg}ng}|jj«5|jjj |j«5t j |j|j|g|¢­i|¤Žddd«ddd«y#1swYŒxYw#1swYyxYw)NrgÚallsset:modified())r=rzryrzr{rrrN)r5rr½r†s r$rïzhgsubrepo.filereverts•€Ø�j‰j˜˜e™Ñ%ˆØ �8‰8�EŒ?Ø%Ð&‰DàˆDð �Z‰Z× Ñ Õ  §¡×!4Ñ!4×!CÑ!CÀDÇJÁJÕ!OÜ �N‰N˜4Ÿ7™7 D§J¡J°Ð C°dÒ C¸dÒ C÷"P× Ð ×!OÐ!Oú× Ð ús$Á0CÁ40B5Â$CÂ5B> Â:CÃC có —|ddS)Nr(r<rs r$rzhgsubrepo.shortids€Ø�S�bˆzÐr&cóþ—ddlm}|a|jj«r1|jj t d«|jz«tj|j|j«y)Nrr€sunsharing subrepo '%s' ) rƒr�r=r­rNrÑrr'r)r5r‰s r$rzhgsubrepo.unsharesS€õ à ˆð �:‰:× Ñ Ô Ø �G‰G�N‰Nœ1Ð8Ó9¸D¿M¹MÑIÔ Jä � ‰ �4—7‘7˜DŸJ™JÕ'r&có˜— |jd}|jj«|}|j«rzt d«|j t |jj««fz}|rtj|«‚|jjjd|z«y#tj$r}t d«|j t |jj««fz}|rtj|«‚|jjjd|z«YywxYw)Nrs%subrepo '%s' is hidden in revision %ss%s rs%subrepo '%s' not found in revision %s)r4r=r?r¼rr'rr‘Únoder r3rNr[r�)r5r rgr†rSs r$r!zhgsubrepo.verify1s€ð Ø—+‘+˜a‘.ˆCØ—*‘*×'Ñ'Ó)¨#Ñ.ˆCØ�z‰zŒ|ôÐ@ÓAØ—M‘Mܘ$Ÿ)™)Ÿ.™.Ó*Ó+ðEñ�ñ ÜŸ+™+ cÓ*Ð*à—J‘J—M‘M×&Ñ& w°¡}Ô5ØøÜ×$Ñ$ò ôÐ<Ó=Ø— ‘ Ü�d—i‘i—n‘nÓ&Ó'ðAñˆCñ Ü—k‘k #Ó&Ð&à— ‘ — ‘ ×"Ñ" 7¨S¡=Ô1Ùð ús‚B6B9Â9B E ÅE có.—|jjS)z.return own wvfs for efficiency and consistency)r=rnr§s r$rnzhgsubrepo.wvfsPs€ð�z‰z�‰Ðr&có,—t|j«Sr%)r&r=r§s r$r'zhgsubrepo._relpathUs€ô˜4Ÿ:™:Ó&Ð&r&r*r(r)rÀ)1r8r9r:r4rKr—ršrMrOr+r[rPrerhrBrÅrÉrÎrÑrÖrrPr¨rªr¯r´r¶rŒrzrr¾rÙrÜrÞrãråròrírWr rrrïrrr!rnr'Ú __classcell__©rIs@r$r-r-Ãsƒø„ô ,ðDñEóðEò*ò ò 5ðñCóðCòEò Nò#ðñMóðMð(ñóðð ñóðð&ñ óð ðñ >óð >ðñóðð0òóðð$ò(óð(ò&ò?ðñ óð ðñ1óð1ðñ7óð7ò Yðvò)óð)ð&ñóðð@ñ óð ðDñHóðHðñJóðJðñ%óð%ò òð ñFóðFðò/óð/ò2ðñóðð"ñóðð8ñ/óð/ò* Dòðñ(óð(ó$ð>ñóððñ'óô'r&r-cóć—eZdZˆfd„Zdd„Zed„«Zd„Zd„Zd„Z d„Z e dd„«Z d „Z e d „«Ze d „«Ze dd „«Ze d „«Zd„Ze d„«Zd„ZˆxZS)Ú svnsubrepocóÞ•—tt|� ||«||_t j d«|_|j s+tjtd«|jz«‚y)Nrts+'svn' executable not found for subrepo '%s') r3rûr4r4rÚfindexeÚ_exer r3rr’©r5r†r!rŠrˆrIs €r$r4zsvnsubrepo.__init__]s\ø€Ü Œj˜$Ñ(¨¨dÔ3؈Œ Ü×$Ñ$ VÓ,ˆŒ Ø�yŠyÜ—+‘+ÜÐ@ÓAÀDÇJÁJÑNóð ðr&c ól—|jg}i}|jj«s+tj|d<|ddvr|j d«t jtd«rttd«|d<|j|«|�Z|jj|jj«j|j|«}|j |«t!t"j$«}|j'd«}|r||d<|d=d |d <tj(t+j,t.j0|«fd t.j2tjtjt/j4|«d œ|¤Ž} t7t j8| j;««\} } | j=«} |sR| j>r&tAjB| xsd | j>z«‚| r|jjE| dz«| | fS)NÚstdinr)óupdateócheckoutócommits--non-interactiveÚCREATE_NO_WINDOWÚ creationflagsóLC_ALLsLANGóCs LC_MESSAGESéÿÿÿÿ)ÚbufsizeÚ close_fdsÚstdoutÚstderrÚenvsexited with code %dó )#rþrNr Ú subprocessÚPIPErrÚ safehasattrÚgetattrÚextendrnr^r‘rpÚorigrootr’Údictr ÚenvironrzÚPopenrÚrapplyrÚ tonativestrÚclosefdsÚ tonativeenvÚmapÚ fromnativeeolÚ communicateÚstripÚ returncoder r3r[) r5ÚcommandsÚfilenameÚfailokÚcmdÚextrakwr!rÚlc_allÚpr r s r$Ú _svncommandzsvnsubrepo._svncommandfsÒ€Ø�y‰yˆkˆØˆØ�w‰w×"Ñ"Ô$ô *Ÿ™ˆG�GÑ ð ˜‰{ÐAÑAØ— ‘ Ð/Ô0Ü × Ñ œJÐ(:Ô ;ô(/¬zÐ;MÓ'NˆG�OÑ $Ø � ‰ �8ÔØ Ð Ø—9‘9×$Ñ$Ø— ‘ —‘Ó ×)Ñ)¨4¯:©:°xóˆDð �J‰J�tÔ Ü”8×#Ñ#Ó$ˆà—‘˜Ó#ˆÙ Ø!ˆC�‰LØ�I�Ø"ˆˆNÑÜ × Ñ Ü �O‰OœH×0Ñ0°#Ó 6ð àÜ×'Ñ'Ü—?‘?Ü—?‘?Ü×$Ñ$ SÓ)ñ  ðñ ˆôœT×/Ñ/°·±³ÓA‰ˆ�Ø—‘“ˆÙØ�|Š|Ü—k‘kØÒCÐ4°q·|±|ÑCóðñØ—‘— ‘ ˜V e™^Ô,Ø�vˆ~Ðr&có—|jddgd¬«\}}tjd|«}|stjt d««‚t |jd««t |jd««fS)Nó --versionó--quiet)r#s ^(\d+)\.(\d+)s cannot retrieve svn tool versionrr‚)r)ÚreÚsearchr r3rÚintÚgroup)r5ÚoutputÚerrrïs r$Ú _svnversionzsvnsubrepo._svnversion˜ss€à×&Ñ&Ø ˜:Ð &°ð'ó ‰ ˆ�ô �I‰IÐ'¨Ó 0ˆÙÜ—+‘+œaÐ CÓDÓEÐ EÜ�A—G‘G˜A“J“¤ Q§W¡W¨Q£Z£Ð1Ð1r&có:—|jjd« S)Nó.svn©rnr7r§s r$Ú _svnmissingzsvnsubrepo._svnmissing¢ó€Ø—9‘9×#Ñ# GÓ,Ð,Ð,r&có�—|jddg«\}}tjjj |«}|j d«}d\}}|rlt j|djd««xsd}|dj d«}|r+t j|djd««xsd}||fS) Nsinfoó--xmlÚentry)ó0r<rrµr<r¯) r)ÚxmlÚdomÚminidomÚ parseStringÚgetElementsByTagNamerÚbytestrÚ getAttribute)r5r1r2ÚdocÚentriesÚlastrevrgÚcommitss r$Ú_wcrevszsvnsubrepo._wcrevs¥s€ð×&Ñ&¨°Ð':Ó;‰ ˆ�Ü�g‰g�o‰o×)Ñ)¨&Ó1ˆØ×*Ñ*¨7Ó3ˆØ!‰ ˆ�Ù Ü×"Ñ" 7¨1¡:×#:Ñ#:¸:Ó#FÓGÒOÈ4ˆCؘa‘j×5Ñ5°hÓ?ˆGÙä×$Ñ$ W¨Q¡Z×%<Ñ%<¸ZÓ%HÓIòØðð˜ˆ~Ðr&có(—|j«dS)Nr)rHr§s r$Ú_wcrevzsvnsubrepo._wcrev·s€Ø�|‰|‹~˜aÑ Ð r&cóº—|jddg«\}}ggg}}}tjjj |«}|j d«D]¥}|j d«}|sŒ|dj d«} |dj d«} |j d«jd «} | d k(r|j| «n| d k(r|j| «| d vs| d vsŒ•|j| «Œ§|D]B} |D];} | | k(s#| j| tjz«sŒ+ddt|«fccSŒDt|«dt|«fS)zýReturn (changes, extchanges, missing) where changes is True if the working directory was changed, extchanges is True if any of these changes concern an external entry and missing is True if any change is a missing entry. óstatusr:r;z wc-statusrÚitemÚpropsr!Úutf8Úexternalr )rƒÚnormalÚ unversionedrP)rƒÚnonerQTF) r)r=r>r?r@rArCÚencoderrkrÚossepÚbool) r5r1r2Ú externalsÚchangesr rDÚerFrMrNr!Úexts r$Ú _wcchangedzsvnsubrepo._wcchangedºsU€ð ×&Ñ&¨ °8Ð'<Ó=‰ ˆ�Ø&(¨"¨b˜G�7ˆ Ü�g‰g�o‰o×)Ñ)¨&Ó1ˆØ×)Ñ)¨'Ö2ˆAØ×&Ñ& {Ó3ˆAÙØØ�Q‘4×$Ñ$ VÓ,ˆDØ�a‘D×%Ñ% gÓ.ˆEØ—>‘> &Ó)×0Ñ0°Ó8ˆDØ�zÒ!Ø× Ñ  Õ&ؘÒ"Ø—‘˜tÔ$àðñðÐ 6Ò6à—‘˜tÕ$ð+3ó,ˆDÛ �ؘ3’; $§/¡/°#¼¿¹Ñ2FÕ"GØ ¤t¨G£}Ð4Ô4ñ!ðô�G‹}˜e¤T¨'£]Ð2Ð2r&cóЗ|j«r|jddk7S|j«}|dxs |xr|d}|s"|jd|j«vs|ryy)Nrr&rr‚FT)r7r4r[rH)r5rŸr Ú wcchangedÚchangeds r$rPzsvnsubrepo.dirtyßse€à × Ñ Ô Ø—;‘;˜q‘> SÑ(Ð (Ø—O‘OÓ%ˆ ؘA‘,Ò< 7Ò#;¨y¸©|ˆÙØ�{‰{˜1‰~ §¡£Ñ/±<ØØr&cóº—|j«\}}||k7r( |jdd|jd|fzg«|S|S#tj$rY|SwxYw)Nólistó%s@%sr)rHr)r4r r3)r5rFrgs r$r¨zsvnsubrepo.basestateêsp€Ø—|‘|“~‰ ˆ�Ø �cŠ>ð  Ø× Ñ Ø˜h¨$¯+©+°a©.¸'Ð)BÑBÐCôð�ðˆ øô—;‘;ò ØØˆ ð úsš&AÁAÁAcó”—|j«\}}}|s|j«S|rtjt d««‚|rtjt d««‚|j dd|g«\}}|j j|«tjd|«} | sT|j«stjt d««‚tj|j«d«‚| j«d} |j j|j d d | g«d«| S) Nscannot commit svn externalss!cannot commit missing svn entriesró-msCommitted revision ([0-9]+).sfailed to commit svn changesr rró-r) r[r¨r r3rr)rNrÑr-r.r Ú splitlinesÚgroups) r5r¬r­r®r^Ú extchangedr Ú commitinfor2Únewrevs r$r¯zsvnsubrepo.commitús€ð(,§¡Ó'8Ñ$ˆ�˜WÙØ—>‘>Ó#Ð #Ù ä—+‘+œaÐ >Ó?Ó@Ð @Ù ô—+‘+œaÐ DÓEÓFÐ FØ×*Ñ*¨I°u¸dÐ+CÓD‰ˆ �CØ �‰�‰�zÔ"Ü—‘Ð:¸JÓGˆÙØ×#Ñ#Ô%ô —k‘k¤!Ð$CÓ"DÓEÐEÜ—+‘+˜j×3Ñ3Ó5°bÑ9Ó:Ð :Ø—‘“ Ñ#ˆØ �‰�‰�t×'Ñ'¨°E¸6Ð(BÓCÀAÑFÔG؈ r&cóÞ—|j«r2|jjtd«|jz«y|jj td«|jz«|j jd¬« |jj«j }|j|j|j««y#t$rYywxYw)Nó-not removing repo %s because it has changes. r T)Úforcibly) rPrNr[rr’r¡rnr®r‘rpÚ removedirsr`ÚOSError)r5Úpwvfss r$r¶zsvnsubrepo.removes±€à �:‰:Œ<Ø �G‰G�L‰LÜÐCÓDØ—*‘*ñô ð Ø �‰� ‰ ”QÐ/Ó0°4·:±:Ñ=Ô>à � ‰ ×Ñ $ÐÔ'ð Ø—I‘I—N‘NÓ$×)Ñ)ˆEØ × Ñ ˜UŸ]™]¨4¯:©:Ó6Õ 7øÜò Ù ð úsÂAC à C,Ã+C,có|—|r|jddg«dg}|jdk\r|jd«|jd|d|dfz«tj|d«|j|d ¬ «\}}t |j |jd «tjd |«shd |vr:|j«dddk(r$|j«|j|d¬«ytj|xs|j«d«‚|j j!|«y)Nsrevertó --recursiver)réó--forcerarrT)r$r5sChecked out revision [0-9]+.s-is already a working copy for a different URLr‚r(Frîr )r)r3rrÚ checksafesshrfrNrnr-r.r[r¶rzr r3rerÑ)r5rŠr¸r6rÑr2s r$rzzsvnsubrepo.get's€á Ø × Ñ ˜i¨Ð8Ô 9؈}ˆØ × Ñ ˜vÒ %Ø �K‰K˜ Ô #ð � ‰ �H  a¡¨%°©(Ð3Ñ3Ô4ô ×јU 1™XÔ&à×&Ñ& t°DÐ&Ó9‰ ˆ�Ü�$—'‘'˜4Ÿ9™9 gÔ.Ü�y‰yÐ8¸&ÔAØ?À3ÑFØ—‘Ó! " 1Ð%¨Ò7ð— ‘ ” Ø—‘˜¨%�Ô0ØÜ—+‘+˜vš}¨×8Ñ8Ó:¸2Ñ>Ó?Ð ?Ø �‰�‰�vÕr&cóä—|jd}|d}|j«}||k7rG||k(xs|j«d}t|j||||«r|j |d«yyy)NrrF)r4rJr[rTrNrz)r5rŠÚoldÚnewÚwcrevrPs r$rzsvnsubrepo.mergeBsp€à�k‰k˜!‰nˆØ�A‰hˆØ— ‘ “ ˆØ �%Š<ؘ5‘LÒ8 D§O¡OÓ$5°aÑ$8ˆEܘTŸW™W d¨E°5¸#Ô>Ø—‘˜ Õ&ð?ð r&có—yr*r<r¼s r$r¾zsvnsubrepo.pushLs€àr&có°—|jgd¢«d}tjjj |«}g}|j d«D]€}t j|jd««}|dk7rŒ-djd„|j d«djD««}|j|jd ««Œ‚|S) N)r`rqr:rr;r|sfilerƒc3ófK—|])}|j|jk(r|j–—Œ+y­wrÀ)ÚnodeTypeÚ TEXT_NODErÛ)Ú.0rÐs r$Ú z#svnsubrepo.files..Ys,èø€ðáE�AØ—:‘: §¡Ò,ð—•ÙEùs‚/1rárO) r)r=r>r?r@rArrBrCr\Ú childNodesrrT)r5r1rDÚpathsrYr|rás r$rÞzsvnsubrepo.filesPs¼€à×!Ñ!Ò"EÓFÀqÑIˆÜ�g‰g�o‰o×)Ñ)¨&Ó1ˆØˆØ×)Ñ)¨'Ö2ˆAÜ×#Ñ# A§N¡N°6Ó$:Ó;ˆDØ�wŠØØ—7‘7ñà×/Ñ/°Ó7¸Ñ:×EÒEóóˆDð �L‰L˜Ÿ™ VÓ,Õ -ð3ðˆ r&có.—|jdg|«dS)Nscatr)r)ràs r$rãzsvnsubrepo.filedataas€Ø×Ñ  ¨$Ó/°Ñ2Ð2r&)r&Fr(r))r8r9r:r4r)r+r3r7rHrJr[rKrPr¨r¯r¶rzrr¾rÞrãrørùs@r$rûrû\s¾ø„ôó0ðdñ2óð2ò-òò$!ò#3ðJòóðòð ñóðð6ñóðð òóðð4ñ'óð'òðñóðö 3r&rûcól‡—eZdZˆfd„Zd„Zed„«Zed„«Zd"d„Zd"d„Z d#d„Z d„Z d „Z d „Z d „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zed$d„«Zd„Zed%d„«Zed„«Zed„«Zed„«Zed„«Zed„«Zd&d„Z ed„«Z!ed„«Z"ed„«Z#ed „«Z$d!„Z%ˆxZ&S)'Ú gitsubrepocóΕ—tt|� ||«||_|j «j |«|_|j «|_|j«yrÀ) r3r„r4r4rpr5Ú_abspathrpÚ _ensuregitrÿs €r$r4zgitsubrepo.__init__fsJø€Ü Œj˜$Ñ(¨¨dÔ3؈Œ ØŸ™› ×(Ñ(¨Ó.ˆŒ ØŸ(™(›*ˆŒØ �‰Õr&c óT— d|_|jdg«\}}|j|«}|d k(r%|jj!td ««y|d k(rt jtd ««‚|d k(r%|jj!td««yy#t$�rv}td«}td«}|jtj k7rAt j||jtj|j«fz«‚tjrº d|_|jdg«\}}nÉ#t$r�}|jtj k(r-t jtd«|jz|¬«‚t j||jtj|j«fz«‚d}~wwxYwt jtd«|jz|¬«‚Yd}~�Œd}~wwxYw)Nrsr+s(error executing git for subrepo '%s': %ss'check git is installed and in your PATHsgit.cmds1couldn't find 'git' or 'git.cmd' for subrepo '%s'rws"couldn't find git for subrepo '%s'óunknownscannot retrieve git version óaborts,git subrepo requires at least 1.6.0 or laterówarnings-git subrepo requires at least 1.6.0 or later )Ú_gitexecutableÚ _gitnodirrnrÚerrnoÚENOENTr r3r’r Ú strtolocalÚstrerrorrÚ iswindowsÚ _checkversionrNr[)r5Úoutr2rYÚ genericerrorÚ notfoundhintÚe2Ú versionstatuss r$r‡zgitsubrepo._ensuregitmsæ€ð! Ø"(ˆDÔ Ø—~‘~ | nÓ5‰HˆC�ð@×*Ñ*¨3Ó/ˆ Ø ˜JÒ &Ø �G‰G�L‰LœÐ;Ó<Õ =Ø ˜hÒ &Ü—+‘+ÜÐAÓBóð ð˜jÒ (Ø �G‰G�L‰LœÐLÓMÕ Nð)øôMó ÜÐHÓIˆLÜÐGÓHˆLØ�w‰wœ%Ÿ,™,Ò&Ü—k‘kØ  D§J¡J´×0CÑ0CÀAÇJÁJÓ0OÐ#PÑPóðô×#Ò#ðØ*4�DÔ'Ø#Ÿ~™~¨|¨nÓ=‘H�C™øÜòØ—x‘x¤5§<¡<Ò/Ü#Ÿk™kÜð!5óð#Ÿj™jñ )ð ".ô ðô$Ÿk™kØ(Ø#Ÿz™z¬8×+>Ñ+>¸r¿{¹{Ó+KÐLñMóðûðúô —k‘kÜÐ;Ó<¸t¿z¹zÑIØ%ôðõ#ûð ús=‚B'Â' H'Â1BH"Ä6EÅH"Å G,ÅB G'Ç'G,Ç,0H"È"H'cóh—tjd|«}|rMt|jd««t|jd««t|jd««fStjd|«}|r5t|jd««t|jd««dfSy)Ns ^git version (\d+)\.(\d+)\.(\d+)rr‚és^git version (\d+)\.(\d+)rr )r-r.r/r0)r”rïs r$Ú _gitversionzgitsubrepo._gitversionšsƒ€ä �I‰IÐ:¸CÓ @ˆÙ ܘŸ™ › “O¤S¨¯©°«£_´c¸!¿'¹'À!»*³oÐFÐ Fä �I‰IÐ3°SÓ 9ˆÙ ܘŸ™ › “O¤S¨¯©°«£_°aÐ8Ð 8àr&cóR—tj|«}|dk(ry|dkry|dkryy)ašensure git version is new enough >>> _checkversion = gitsubrepo._checkversion >>> _checkversion(b'git version 1.6.0') 'ok' >>> _checkversion(b'git version 1.8.5') 'ok' >>> _checkversion(b'git version 1.4.0') 'abort' >>> _checkversion(b'git version 1.5.0') 'warning' >>> _checkversion(b'git version 1.9-rc0') 'ok' >>> _checkversion(b'git version 1.9.0.265.g81cdec2') 'ok' >>> _checkversion(b'git version 1.9.0.GIT') 'ok' >>> _checkversion(b'git version 12345') 'unknown' >>> _checkversion(b'no') 'unknown' r r‰)rrrrrŠ)rérr‹sok)r„r›)r”Úversions r$r“zgitsubrepo._checkversion¦s9€ô0×(Ñ(¨Ó-ˆð �bŠ=ØØ �YÒ ØØ �yÒ ØØr&có0—|j|||¬«dS)N)rÚstreamr©Ú_gitdir©r5r"rr s r$Ú _gitcommandzgitsubrepo._gitcommandÊs€Ø�|‰|˜H¨#°fˆ|Ó=¸aÑ@Ð@r&có@—|j||||j¬«S)N)rr rë)r�r†r£s r$r¢zgitsubrepo._gitdirÍs%€Ø�~‰~Ø ˜# f°$·-±-ðó ð r&c óÞ—|jjd|jdj|«fz«|€tj j «}d|d<d|vrd|d<d}|jjr$tjtjd«}|jjr%t|«r|d d k(r|jd d «i}tj t"d «rt%t"d «|d<t#j&tj(t*j,|j.g|z«fdtj(t*j,|«t+j0|«t*j2t"j4|dœ|¤Ž}|r|j6dfS|j6j9«j;«}|j=«|j>d k7r^|j>d k7rO|d } | dvr||j>fStAjBtEd«| |j>|jfz«‚||j>fS)zœCalls the git command The methods tries to call the git command. versions prior to 1.6.0 are not supported and very probably fail. s %s: git %s r?NrrsGIT_ALLOW_PROTOCOLsfile:git:http:https:sshówródiffrs--colorrrr )r rërr r r )ócat-fileó symbolic-refsgit %s error %d in %s)#rNrœr'r\r rr}ÚquietrÚopenr8ÚdevnullÚ _colormoderúÚinsertrrrrrrrrrŒrrrr Úreadr Úwaitr!r r3r) r5r"rr rëÚerrpiper&r(ÚretdataÚcommands r$r�zgitsubrepo._gitnodirÒs €ð �‰� ‰ �o¨¯©¸¿ ¹ À(Ó8KÐ(LÑLÔMØ ˆ;Ü×"Ñ"×'Ñ'Ó)ˆCàˆˆI‰à ¨Ñ +Ø)CˆCÐ%Ñ &ðˆØ �7‰7�=Š=Ü—m‘m¤B§J¡J°Ó5ˆGØ �7‰7× Ò ¤# h¤-°H¸Q±KÀ7Ò4Jð �O‰O˜A˜zÔ *ØˆÜ × Ñ œJÐ(:Ô ;ô(/¬zÐ;MÓ'NˆG�OÑ $Ü × Ñ Ü �O‰OÜ×$Ñ$ t×':Ñ':Ð&;¸hÑ&Fó ð ðÜ—‘¤× 4Ñ 4°cÓ:Ü×$Ñ$ SÓ)Ü×'Ñ'Ü—?‘?Øñ ðñ ˆñ Ø—8‘8˜T�>Ð !à—(‘(—-‘-“/×'Ñ'Ó)ˆà �‰Œà �<‰<˜1Ò  §¡°Ò!2à˜q‘kˆGØÐ8Ñ8Ø § ¡ Ð,Ð,ä—+‘+ÜÐ*Ó+ؘAŸL™L¨$¯-©-Ð8ñ9óð 𠘟 ™ Ð$Ð$r&có:—|jjd« S)Nó.gitr6r§s r$Ú _gitmissingzgitsubrepo._gitmissingr8r&có(—|jddg«S)Ns rev-parseóHEAD©r¤r§s r$Ú _gitstatezgitsubrepo._gitstates€Ø×Ñ ¨wÐ 7Ó8Ð8r&có:—|jgd¢«\}}|rd}|S)N)rªr¹r,r¡)r5Úcurrentr2s r$Ú_gitcurrentbranchzgitsubrepo._gitcurrentbranchs"€Ø—|‘|Ò$JÓK‰ ˆ�٠؈G؈r&có˜—|jddd|g«}|jd«d}|jd«td«z}||dS)Nsremoteóshows-nrrsURL: )r¤ÚsplitÚindexrú)r5rRr”Úlinercs r$Ú _gitremotezgitsubrepo._gitremotesP€Ø×Ñ  ¨7°E¸6ÐBÓCˆØ�y‰y˜Ó Ñ"ˆØ �J‰J�xÓ ¤3 x£=Ñ 0ˆØ�A�Bˆxˆr&có:—|jdd|g«\}}|dk(S)Nr©s-err¡)r5rµr”Úcodes r$Ú_githavelocallyzgitsubrepo._githavelocally s%€Ø—L‘L +¨u°hÐ!?Ó@‰ ˆˆTØ�q‰yÐr&có4—|jd||g«}||k(S)Nó merge-baserº)r5Úr1Úr2Úbases r$Ú_gitisancestorzgitsubrepo._gitisancestor$s#€Ø×Ñ °°BÐ 7Ó8ˆØ�r‰zÐr&có.—|jgd¢«dk(S)N)óconfigs--booló core.bareótruerºr§s r$Ú _gitisbarezgitsubrepo._gitisbare(s€Ø×ÑÒ DÓEÈÑPÐPr&có*—|jgd¢«y)z This must be run before git diff-index. diff-index only looks at changes to file stat; this command looks at file contents and updates the stat.)s update-indexó-qs --refreshNrºr§s r$Ú_gitupdatestatzgitsubrepo._gitupdatestat+s€ð ×ÑÒ?Õ@r&cód—i}i}|jgd¢«}|jd«D]‚}|jd«\}}|jd«s|jd«sŒ:|jd«r|jd«rŒ]|||<|j |g«j |«Œ„||fS)zcreturns 2 things: a map from git branch to revision a map from revision to branches)s for-each-refs--formats%(objectname) %(refname)rr?s refs/heads/ó refs/remotes/s/HEAD)r¤rÁrkÚendswithÚ setdefaultr)r5Ú branch2revÚ rev2branchr”rÃrµÚrefs r$Ú _gitbranchmapzgitsubrepo._gitbranchmap1s³€ðˆ ؈ à×ÑÚ Gó ˆð—I‘I˜eÖ$ˆDØ ŸJ™J tÓ,‰MˆH�cØ—>‘> .Ô1¸#¿.¹.Ø ô;ðØ�~‰~Ð.Ô/°C·L±LÀÔ4JØØ&ˆJ�s‰OØ × !Ñ ! (¨BÓ /× 6Ñ 6°sÕ ;ð%ð˜:Ð%Ð%r&c óþ—i}|D]u}|jd«rŒ|jdd«d}|jdd|zg«}|sŒC|jdd|zg«}||d||jdd«dfz<Œw|S)z4return map of remote branch to local tracking branchr×r‹r‚rÏsbranch.%s.remotesbranch.%s.mergesrefs/remotes/%s/%s)rkrÁr¤)r5ÚbranchesÚtrackingÚbÚbnamerRrÜs r$Ú _gittrackingzgitsubrepo._gittrackingGs¤€ðˆÛˆAØ�|‰|Ð,Ô-ØØ—G‘G˜D !Ó$ QÑ'ˆEØ×%Ñ% yÐ2EÈÑ2MÐ&NÓOˆFÚØ×&Ñ&¨ Ð3EÈÑ3MÐ'NÓO�ððØ)¨V°S·Y±Y¸tÀQÓ5GÈÑ5JÐ,KÑKòððˆr&cól—d|vr|jd«}|dk7r d|d|vr|S||_t|«S)Ns://ó:r r‹)Úfindrqrr)r5rÛÚcolons r$rrzgitsubrepo._abssourceWsC€Ø ˜Ñ à—K‘K Ó%ˆEؘŠ{˜t¨6°&°5¨>Ñ9Ø� Ø ˆŒÜ˜$ÓÐr&cóZ—|j«rwtj|«|j|«}|jj t d«|j|fz«|jd||jg«|j|«ry|jj t d«|j|jd«fz«|jdg«|j|«s-tjt d«||jfz«‚y)Nrªscloner¬óoriginsfetchs1revision %s does not exist in subrepository "%s" )r·rrtrrrNrÑrr'r�r†rÇrÄr¤r r3)r5rÛrµs r$Ú_fetchzgitsubrepo._fetch`sþ€Ø × Ñ Ô ä × Ñ  Ô (à—_‘_ VÓ,ˆFØ �G‰G�N‰NÜÐ1Ó2°d·m±mÀVÐ5LÑLô ð �N‰N˜H f¨d¯m©mÐ<Ô =Ø × Ñ  Ô )Ø Ø �‰�‰Ü Ð-Ó .Ø�}‰}˜dŸo™o¨iÓ8Ð9ñ :ô ð ×ј(˜Ô$Ø×#Ñ# HÔ-Ü—+‘+ÜÐGÓHؘTŸ]™]Ð+ñ,óð ð.r&có—|j«r|jddk7S|j«ry|s!|jd|j«k7ry|j «|j gd¢«\}}|dk(S)Nrr&T©ó diff-indexr,r¹)r·r4rÒr»rÕr¢)r5rŸr r”rÆs r$rPzgitsubrepo.dirtyxss€à × Ñ Ô Ø—;‘;˜q‘> SÑ(Ð (Ø �?‰?Ô ØÙ § ¡ ¨A¡°$·.±.Ó2BÒ Bàà ×ÑÔØ—L‘LÒ!EÓF‰ ˆˆTØ�q‰yÐr&có"—|j«SrÀ)r»r§s r$r¨zgitsubrepo.basestate†s€Ø�~‰~ÓÐr&có‡‡—|\}Š}‰s‰j«y‰j|‰«‰j«r:‰jgd¢«‰j «‰k(rP‰jgd¢«y‰j «‰k(r)‰r&‰jddg«‰jgd¢«y‰j «\}}ˆˆfd„Šˆˆˆfd„}‰|vr|«y|‰}d} |D])} | dk(r ‰dg«y| rŒ| j d«rŒ(| } Œ+| r ‰| g«y‰j|j««} |d } | | vr|D] } | | vsŒ| } n| | vr!| jd d «d } ‰d | | g«y‰j|| | | «rX| | ‰j«k7r ‰| | g«‰jd d| g«t‰j‰jd«y|«y)N)rÏrÐsfalse)óresets--hardr¹rðr¹có•—dg}‰r$‰jddg«|jd«‰j||z«t‰j‰jd«y)Nrrðr¹ó-fr¶)r¤rrfrNrn)r6r%r¸r5s €€r$Úcheckoutz gitsubrepo.get..checkout sTø€Ø�-ˆCÙð× Ñ  (¨GÐ!4Ô5Ø— ‘ ˜5Ô!Ø × Ñ ˜S 4™ZÔ (Ü �d—g‘g˜tŸy™y¨'Õ 2r&cóÄ•—‰jjtd«‰jz«‰jjtd««‰d‰g«y)Ns1checking out detached HEAD in subrepository "%s" s5check out a git branch if you intend to make changes rÔ)rNr[rr')rórµr5s€€€r$Ú rawcheckoutz#gitsubrepo.get..rawcheckout«sRø€à �G‰G�L‰LÜÐGÓHØ—-‘-ñ ô ð �G‰G�L‰LÜÐKÓLô ñ �e˜XÐ&Õ 'r&srefs/heads/masterr×rr‹ršs-bómerges--ffr¶)r¶rêrÒr¤r»rÝrkrãrÙrÁrÍr¾rfrNrn)r5rŠr¸rÛr|rÚrÛrõrßÚfirstlocalbranchráràrRrQrórµs` ` @@r$rzzgitsubrepo.get‰s û€à!&ш�˜$ÙØ �K‰KŒMØ Ø � ‰ �F˜HÔ%à �?‰?Ô Ø × Ñ Ò@Ô AØ�~‰~Ó 8Ò+Ø× Ñ Ò!?Ô@ØØ �^‰^Ó  Ò )Ùð× Ñ  (¨GÐ!4Ô5Ø× Ñ Ò!?Ô@Ø Ø!%×!3Ñ!3Ó!5ш �Jõ 3ö (ð ˜:Ñ %Ù ŒMØ Ø˜hÑ'ˆØÐÛˆAØÐ(Ò(áÐ.Ð/Ô0ÙÚ#¨A¯L©LÐ9IÕ,JØ#$Ñ ð ñ Ù Ð&Ð'Ô (Ø à×$Ñ$ Z§_¡_Ó%6Ó7ˆà˜!‘ˆØ ˜Ñ !Û�ؘ’=Ø�FÙðð ˜Ñ !à—L‘L  qÓ)¨!Ñ,ˆEÙ �e˜U FÐ+Õ ,Ø × Ñ  ¨H°VÑ,<Ñ!=¸vÔ Fð˜Ñ 4×#9Ñ#9Ó#;Ò;Ù˜( 6Ñ*Ð+Ô,Ø × Ñ ˜h¨°Ð8Ô 9Ü �d—g‘g˜tŸy™y¨'Õ 2ñ �Mr&cóN—|j«r+tjtd«|jz«‚ddd|g}t j j«}|r|d|gz }|rtj|d«|d<|j||¬«|j«S) Nósubrepo %s is missingrs-arcs--authors%Y-%m-%dT%H:%M:%S %1%2sGIT_AUTHOR_DATE)r) r·r r3rr'r rr}rÚdatestrr¤r»)r5r¬r­r®r%rs r$r¯zgitsubrepo.commitâs¥€à × Ñ Ô Ü—+‘+œaÐ 8Ó9¸D¿M¹MÑIÓJÐ Jؘ% ¨Ð-ˆÜ×Ñ×#Ñ#Ó%ˆÙ Ø �K Ð&Ñ &ˆCÙ ô'/×&6Ñ&6ØÐ/ó'ˆCÐ"Ñ #ð ×ј #ÐÔ&ð�~‰~ÓÐr&c ó臇‡‡ —‰\}Š }‰j|‰ «‰jd‰ ‰jdg«Š‰j«‰j gd¢«\}}ˆˆ ˆˆfd„}‰j «rp‰j «‰ k7r\‰j «‰jdk(xs|dk7}t‰j‰|‰jddd‰ dd«r|«yyy|«y)NrÉrrìcó•—‰‰k(r‰j‰«n&‰‰jdk7r‰jdd‰g«t‰j‰j d«y)Nrrös --no-commitr¶)rzr4r¤rfrNrn)rÌrµr5rŠs€€€€r$rÇz#gitsubrepo.merge..mergefuncýsOø€Ø�xÒØ—‘˜•ؘŸ™ Q™Ò'Ø× Ñ  (¨N¸HÐ!EÔFÜ �d—g‘g˜tŸy™y¨'Õ 2r&ré) rêr¤r4rÕr¢rPr»rTrN) r5rŠrÛr|r”rÆrÇrPrÌrµs `` @@r$rzgitsubrepo.mergeõsàû€à!&ш�˜$Ø � ‰ �F˜HÔ%Ø×Ñ °¸$¿+¹+Àa¹.Ð IÓJˆØ ×ÑÔØ—L‘LÒ!EÓF‰ ˆˆT÷ 3ð �:‰:Œ<Ø�~‰~Ó 8Ò+ØŸ™Ó(¨D¯K©K¸©NÑ:ÒG¸dÀa¹i�Ü Ø—G‘G˜T 5¨$¯+©+°a©.¸¸!Ð*<¸hÀrȸlôñ•Kðð,ñ �Kr&có(—|jd«}|jdsy|j«r+tjt d«|j z«‚|j«\}}|jd|vr*||jdD]}|jd«sŒy|j«D]8\}}|jd«sŒ|j|jd|«sŒ8ydg}|r|jd«|j«}|rµ|j|jd|«s2|jjt d«|j z«y |jjt d «|j!d d «d |j fz«|j#|d |gz«} | ddk(S|jjt d«|j |jdfz«y )NrËrTrùsrefs/remotes/origin/spushrss7unrelated git branch checked out in subrepository "%s" Fs(pushing branch %s of subrepository "%s" r‹r‚rérsDno branch checked out in subrepository "%s" cannot push revision %s )rzr4r·r r3rr'rÝrkÚitemsrÍrr¾rNr[rÑrÁr¢) r5r½rrÚrÛrárµr%r½Úrets r$r¾zgitsubrepo.pushsã€à—‘˜Ó"ˆà�{‰{˜1Š~ØØ × Ñ Ô Ü—+‘+œaÐ 8Ó9¸D¿M¹MÑIÓJÐ Jà!%×!3Ñ!3Ó!5ш �JØ �;‰;�q‰>˜ZÑ 'Ø § ¡ ¨A¡Ô/�Ø—<‘<Ð 7Õ8Ùð0ð&×+Ñ+Ö-‰KˆAˆxØ�|‰|Ð3Õ4Ø×&Ñ& t§{¡{°1¡~°xÕ@Ùð.ð ˆiˆÙ Ø �J‰J�zÔ "à×(Ñ(Ó*ˆÙ à×&Ñ& t§{¡{°1¡~°wÔ?Ø—‘— ‘ Üð3óð—m‘mñ $ôðØ �G‰G�N‰NÜÐ>Ó?Ø—=‘=  qÓ)¨!Ñ,¨d¯m©mÐ<ñ=ô ð—,‘,˜s i°Ð%9Ñ9Ó:ˆCØ�q‘6˜Q‘;Ð à �G‰G�L‰LÜð1óð—=‘= $§+¡+¨a¡.Ð1ñ 2ô ðr&c ó6—|j«rgS|jddd¬«}t«}|j|j|j |j fD]} |j| «Œ|j} | j|j««g} tt| ««D� cgc] } || «sŒ | ‘Œ} } | D]™} |j| «} dg}| r|jd«|js| s#|jtd«|| «z«| |vr| r| j| «Œs|j!d«rŒ…|j#|| gz«Œ›| D]%} |j%td«|| «z«Œ'| Scc} w)NT)ÚunknownrRsaddròs adding %s rís%s already tracked! )r·rÑÚsetÚmodifiedÚaddedÚdeletedrRrürrrÞrÍÚexactrÚverboserrzr¤r[)r5rNr rÂrÃrÄr½rFÚtrackedÚlrÞÚrejectedrerr´s r$rÅzgitsubrepo.addAs`€à × Ñ Ô ØˆIà �K‰K˜ d°$ˆKÓ 7ˆä“%ˆà—*‘*˜aŸg™g q§y¡y°!·'±'Ó:ˆAØ �N‰N˜1Õ ð;ð— ‘ ˆØ � ‰ �U—[‘[“]Ô#àˆä"¤3 u£:Ô.Ó;Ñ.�q±%¸µ(’Ð.ˆÐ;ÛˆAØ—K‘K “NˆEØ�hˆGÙØ—‘˜uÔ%Ø�zŠz¡Ø— ‘ œ!˜NÓ+©h°q«kÑ9Ô:à�G‰|ÙØ—O‘O AÔ&ØØ—8‘8˜IÕ&Ø× Ñ  ¨A¨3¡Õ/ðóˆAØ �G‰G”AÐ.Ó/±(¸1³+Ñ=Õ >ððˆùò'| j«r | j}nL| j!| «}|r|j#«}n(|j j%td «| z«Œ§|j'|| z| j(| j«|«|d z }| j+«Œì| j-«|S) NrsarchiveT)r zr|)Úfileobjrrôrõ)rösskipping "%s" (unknown type)r)r4rêr¤Útarfiler¬rArNrûrrüÚisdirrÚfsencoderáÚissymÚlinknameÚ extractfiler°r[rýrrþrÿ)r5rrÂr râr÷rÛrµÚ tarstreamÚtarrrÚinforârÛres r$rzgitsubrepo.archive~sh€ØˆØŸ;™;ш�ÙØˆLØ � ‰ �F˜HÔ%ð ×$Ñ$ j°(Ð%;ÀDÐ$ÓIˆ Ü�l‰l 9°4Ô8ˆÜ˜TÓ"ˆØ—7‘7×'Ñ'Ü ÐÓ  7Ñ *´°8³ð(ó ˆð �‰˜ÔÛˆDØ�z‰zŒ|ØÜ×%Ñ% d§i¡iÓ0ˆEÙ™U 5œ\ØØ�z‰zŒ|Ø—}‘}‘à—O‘O DÓ)�ÙØŸ6™6›8‘Dà—G‘G—L‘L¤Ð#BÓ!CÀeÑ!KÔLØØ × Ñ ˜V e™^¨T¯Y©Y¸¿ ¹ » ÀdÔ KØ �Q‰JˆEØ × Ñ Õ ð#ð$ ×ÑÔØˆ r&c óz—|jd}|j«ry|j«sy|j«D]w}|jdd||fzg«}t j |j ||jj||«¬«} | j|«| j«Œyy)NrrÀs%s:%s)Úpathnamer) r4ÚanypatsrÞr¤rÚ makefileobjr‘rnr^rsr±) r5r rÌrÍrÂr½rgrer1Úfps r$rÎzgitsubrepo.cat¤sŸ€à�k‰k˜!‰nˆØ �=‰=Œ?Øà�{‰{Œ}Øð—‘–ˆAØ×%Ñ% w°¸CÀ¸8Ñ0CÐ&DÓEˆFÜ×$Ñ$Ø— ‘ ˜:°· ± ×0AÑ0AÀ&È!Ó0LôˆBð �H‰H�VÔ Ø �H‰H�Jð ðr&c ó—|jd}|j«s|stjggggggg«Sggg}}}|j «|rddd||g}ndd|g}|j |«}|j d«D]n} | jd«} | dk(rŒ| | dz | | | dzd} } | d k(r|j| «ŒA| d k(r|j| «ŒX| d k(sŒ^|j| «Œpggggf\} }}}gd ¢}|jd «r|dgz }|jd«r|dgz }|j |«}t«}|j|«|j|«|j|«|j d«D]�} | sŒ| dd}| jd«dk\r| ddj d«\}}n| dd}d}|j|«|r|j|«|dk(r|j|«Œy|dk(sŒ|j|«Œ‘|jd«r>|j dg«}|j d«D]} | |vsŒ|j| «Œtj|||| |||«S)Nrs diff-treeó --no-renamesrdríró r óMóAóD)rLs --porcelains-zrs--untracked-files=allÚignoreds --ignoredórr‚ršs??s!!rRsls-files) r4r·rrÑrÕr¤rÁrærrzrrürÅ)r5rÒr½r‚rrÚremovedr´r”rÃÚtabrÑrerrr&rRÚ changedfilesÚstÚ filename1Ú filename2s r$rÑzgitsubrepo.status·sœ€à�{‰{˜1‰~ˆØ × Ñ Ô ¡Tä—>‘> " b¨"¨b°"°b¸"Ó=Ð =Ø#% r¨2˜�%ˆØ ×ÑÔÙ Ø# _°e¸TÀ4ÐH‰Gà$ o°tÐ<ˆGØ×јwÓ'ˆØ—I‘I˜eÖ$ˆDØ—)‘)˜EÓ"ˆCØ�bŠyØØ˜S 1™W sÐ+¨T°#¸±'°)¨_�AˆFؘŠ~Ø—‘ Õ"ؘ4’Ø— ‘ ˜Q•ؘ4“Ø—‘˜qÕ!ð%ð,.¨r°2°r¨>Ñ(ˆ�˜' 5â4ˆØ �8‰8�IÔ Ø Ð0Ð1Ñ 1ˆGØ �8‰8�IÔ Ø ˜ �~Ñ %ˆGØ×јwÓ'ˆä“uˆ Ø×јHÔ%Ø×јEÔ"Ø×јGÔ$Ø—I‘I˜eÖ$ˆDÙØØ�a˜�ˆBà�y‰y˜Ó 1Ò$Ø'+¨A¨B x§~¡~°eÓ'<Ñ$� ™9à   ˜H� Ø � à × Ñ ˜YÔ 'ÙØ× Ñ  Ô+à�UŠ{Ø—‘˜yÕ)Ø�u“Ø—‘˜yÕ)ð%%ð( �8‰8�GÔ Ø×"Ñ" K =Ó1ˆCØ—Y‘Y˜uÖ%�ؘLÒ(Ø—L‘L •Oð&ô�~‰~Ø �e˜W g¨w¸Àó ð r&c óà—|jd}ddg}|dr|jd«n|jd|jz«|jr|j d|zd|zg«n|j d |zd |zg«|j r|jd «|j r|jd «|j|jd g««dk\r|jr|jd«|j|«|r|j|«d} |j«r| |j|«dzz } nv|j|«} | j| j| jfD� � cgc] } | D]} | ‘ŒŒ } } } | D]'} || «sŒ | |j|d| gz«dzz } Œ)| j«r|j!| «yycc} } w)Nrr¨r!rs--stats-U%ds--src-prefix=%s/s--dst-prefix=%s/s--src-prefix=a/%s/s--dst-prefix=b/%s/s--ignore-all-spaces--ignore-space-changer+)réés--ignore-blank-linesr&rs--)r4rÚcontextÚnoprefixrÚignorewsÚignorewsamountr›r¤ÚignoreblanklinesÚalwaysrÑrrr(r rs)r5rNrÔrÕr rÂr½r‰r%r1r+ÚsublistrerÞs r$rÖzgitsubrepo.diffûsÜ€à— ‘ ˜A‘ˆØ˜Ð(ˆØ �Š<Ø �J‰J�yÕ !ð �J‰J�w ×!1Ñ!1Ñ1Ô 2à × Ò Ø �J‰JØ$ vÑ-Ð/BÀVÑ/KÐLõ ð �J‰JØ&¨Ñ/Ð1FÈÑ1OÐPô ð × Ò Ø �J‰JÐ,Ô -Ø × "Ò "Ø �J‰JÐ/Ô 0à × Ñ ˜T×-Ñ-¨|¨nÓ=Ó >À)Ò KØ×)Ò)à �J‰JÐ.Ô /à � ‰ �5ÔÙ Ø �J‰J�uÔ àˆØ �<‰<Œ>Ø �d×&Ñ& sÓ+¨eÑ3Ñ 3‰Fà—‘˜UÓ#ˆBð!#§ ¡ ¨R¯X©X°r·z±zÑBôáB�GÛ �Aòà ðØBð ñó �Ù˜•8ؘd×.Ñ.¨s°e¸Q°ZÑ/?Ó@À5ÑHÑH‘Fðð �<‰<Œ>Ø �H‰H�VÕ ð ùósÆG*có —|jjtd«|dz«|jd«sî|jd«}|j}|D]Ì}t j j|j|«}tj|j|j|«}|jjtd«|t j j|«fz«tj|j j|«|«ŒÎ|jd«s|j|d¬«gS)Nrërrìs#saving current version of %s as %s ríTrî)rNrÑrrzrr8r!r\r’rÚ backuppathrpr¡rrÚrenamern) r5r„rr½rÑrbráÚ parentnameÚbaknames r$rzgitsubrepo.revert-sü€à �‰�‰”qÐ2Ó3°h¸q±kÑAÔBØ�x‰x˜ Ô$Ø—[‘[ Ó&ˆFØ—O‘OˆEÛ�ô ŸW™WŸ\™\¨$¯*©*°dÓ;� Ü!×,Ñ,Ø—G‘G˜TŸ_™_¨jó�ð—‘— ‘ ÜÐ=Ó>ØœRŸW™WŸ_™_¨WÓ5Ð6ñ7ôô— ‘ ˜DŸI™IŸN™N¨4Ó0°'Õ:ðð�x‰x˜ Ô"Ø �H‰H�X¨ˆHÔ .؈ r&có —|ddS)Nrýr<rs r$rzgitsubrepo.shortidDs€Ø�R�aˆyÐr&)NF)NFNr(r)r*)'r8r9r:r4r‡Ú staticmethodr›r“r¤r¢r�r·r»r¾rÄrÇrÍrÒrÕrÝrãrrrêrKrPr¨rzr¯rr¾rÅr¶rrÎrÑrÖrrrørùs@r$r„r„es|ø„ôò+OðZñ óð ðñ!óð!óFAó ó :%òx-ò9òò ò òòQòAò &ò,ò  òð0ò óð ò ðòVóðVðpñ óð ð$ñóðð0ñ0óð0ðdñ$óð$ðLñ$óð$ó*$ðLñóðð$ñA óðA ðFñ/óð/ðbñóðö,r&r„)rrrtrs)FT)rBs"ðó Û Û Û Û ÛÛ ÛÛå÷ñ÷ ÷÷÷÷ óð €Ø×%Ñ%€ Ø × #Ñ #€ Ø × #Ñ #€ Ø×"Ñ"€ òòKô 0�5—;‘;ô0òò*#ò&4ò( Mð Ø Ø ñÐò@ó(>ò(A÷0aLñaLôHV '�ôV 'ôrF3�ôF3ôR` �ô` ðH Ø Ø ñ �r&