\x89\x50\x4E\x47\x0D\x0A\x1A\x0A PNG  \x89\x50\x4E\x47\x0D\x0A\x1A\x0A  13\c @@s[ddlmZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z m Z mZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z mZmZmZm Z m!Z"m#Z#m$Z$m%Z%m&Z'm(Z)ej*Z*dZ+dZ,d Z-e.d Z/ie d 6e#d 6e,d 6ed6ed6ed6e d6Z0dZ1dZ2dZ3gZ4e5e.e.e.dZ6de5e.e.e.dZ7e5e.e.dZ8dZ9dZ:e.e;e;e.e5dZ<dZ=e.dZ>e.dZ?dZ@e5e.e;e5d ZAd!ZBe.e5e.e;e5e.e.e.e.e.d" ZCe5d#ZDe.d$ZEe5e.d%ZFeFZGe;e5d&ZHeHZIe5e.d'ZJe.e;e5e.e5d(Ze5d)ZKd*ZLd+ZMd,ZNd-Z&d.ZOd/d0fd/d1fd/d2fd3dfgZPd4eQfd5YZRdS(6i(tabsolute_importNi(t_(tnullid(t bookmarkst bundlerepot cacheutiltcmdutiltdestutilt discoveryterrortexchanget extensionsthttppeert localrepotlockt logcmdutilt logexchangetmerget narrowspectnodetphasestscmutiltsshpeertstatichttprepotuit unionrepoturltutiltverifytvfsRcC@s4tjtj|}tjj|r0tp3tS(N(Rt expandpatht urllocalpathtostpathtisfileRR (R!((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyt_local9sc @sf|j}|\}}| rU| rUp/d}rEd}nd}||fSrjtng|jds|rtjtdnj|dfS|j}|j dij WdQXfd} x6|D].} | | stj td| qqW|rX| |sXj|qXndfS(Nit branchmaps"remote branch lookup not supportedc@su|dkr<s*tjtdnjj}n|krmjdt|DtStSdS(Nt.sdirstate branch not accessiblecs@s|]}tj|VqdS(N(Rthex(t.0tr((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pys [s( R tAbortRtdirstatetbranchtextendtreversedtTruetFalse(R+(R$tlrepotrevs(s2/usr/lib64/python2.7/site-packages/mercurial/hg.pytprimaryUs  !sunknown branch '%s'( tpeertNonetlisttcapableR R)Rtappendtcommandexecutort callcommandtresulttRepoLookupError( R0tothertbranchesR1R3t hashbranchtxtyteR2R+((R$R0R1s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyt addbranchrevs=s4          cC@sOtj|}d}|jr3|j}d|_nt|||pHgffS(s5parse url#branch, returning (url, (branch, branches))N(RRR4tfragmenttbytes(R!R=tuR+((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pytparseurlhs    tbundletuniontfilethttpthttpstsshs static-httpcC@svtj|}|jpd}tj|p4td}y||SWn*tk rqtj|dsmn|SXdS(NRItinstance(RRtschemetschemestgett TypeErrort safehasattr(R!RERNtthing((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyt _peerlookup|s cC@sHt|tr>yt|j|SWq>tk r:tSXn|jS(s7return true if repo (or path pointing to repo) is local(t isinstanceRDRTtislocaltAttributeErrorR/tlocal(trepo((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyRVs  cC@sQtj|dtdt}|jr=tj|jdStj||SdS(s0open path with open if local, url.open if remotet parsequeryt parsefragmenttrbN(RRR/RVt posixfilet localpathtopen(RR!tpathurl((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pytopenpaths c @snt|j||d|d|}t|djddr]fd}n d}x!|prgD]}||qsW|dtjd } xtjD]p\} } |d | ft| d d } | rtjd | } | |Wd QX|d| | qqWWd QX|d| |jsjxt D]}||qPWn|S(s1return a repository object for the specified pathtintentst createoptsRtdevelsdebug.extensionsc@sjd||ddS(Nsdebug.extensions: tlabelsdebug.extensions(tdebug(tmsgtvalues(R(s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyts c_@sdS(N(R4(tatkw((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyRiss- executing reposetup hooks s all reposetups - running reposetup for %s t reposetups reposetup %rNs > reposetup for %r took %s s> all reposetup took %s ( RTRMtgetattrt configboolRttimedcmR R4RXtwirepeersetupfuncs(RR!tcreatet presetupfuncsRbRctobjtlogtftallreposetupstatstnametmodulethooktstats((Rs2/usr/lib64/python2.7/site-packages/mercurial/hg.pyt _peerorrepos,      tc C@skt|||d|d|d|}|j}|s^tjtd|pT|jn|jdS(s1return a repository object for the specified pathRrRbRcsrepository '%s' is not localtvisible(R{RXR R)RRtfiltered(RR!RqRrRbRcR3RY((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyt repositorys cC@s1t||}t|||d|d|jS(s/return a repository peer for the specified pathRbRc(tremoteuiR{R3(tuiorrepotoptsR!RqRbRctrui((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyR3scC@s8tj|j}|sdStjjtjj|S(s9return default destination of clone if none is given >>> defaultdest(b'foo') 'foo' >>> defaultdest(b'/foo/bar') 'bar' >>> defaultdest(b'/') '' >>> defaultdest(b'') '' >>> defaultdest(b'http://example.org/') '' >>> defaultdest(b'http://example.org/foo/') 'foo' R|(RRR!R tbasenametnormpath(tsourceR!((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyt defaultdestscC@s|j|jkrdStj|dr8|jr8|jS|jj|jd}t|\}}t |j |}||_|S(s}Returns repository object for source repository of a shared repo. If repo is not a shared repository, returns None. tsrcrepoiN( t sharedpathR!R4RRRRRtsplitRFRR(RYRtsrcurlR=R((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pytsharedreposources c C@s0t|s$tjtdn|s9t|}n|j|}t|tr|j|}t|\}}t ||} t | | |d \} } n|j } d } t } |r| jtnt ||dtdi| d6|d6| d6} t| | d|t| |d| | S( screate a shared repositorys!can only share local repositoriesRqRct sharedrepotsharedrelativet shareditemst defaultpathtcheckoutN(RVR R)RRRRURDRFRRBR4RXtsettaddtsharedbookmarksR.t postsharet_postshareupdate(RRtdesttupdateRRtrelativet origsourceR=RtrevRRR(((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pytshares,    c C@s d}}|j}zit|||j}|jjd}tj||d|jj d|jj d|j Wd|o|j |o|j Xt |j |jdt}|d}|j}x't|D]}|j|jqWtj||S(sconvert a shared repository to a normal one Copy the store data to the repo and remove the sharedpath data. Returns a new repository object representing the unshared repository. The passed repository object is not usable after this function is called. Rs.oldtsharedt relsharedNRqR%(R4Rt copystoreR!RtjoinRtrenamet requirementstdiscardt_writerequirementstreleaseRtbaseuitrootR/tsubstatetsortedtsubtunshareR tpoisonrepository( RRYtdestlockRt sharefiletnewrepotctsubsts((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyRs$     cC@sN|p|jjdd}|rJd}|jjdtj||ndS(sACalled after a new shared repo is created. The new repo only has a requirements file and pointer to the source. This function configures additional shared data. Extensions can wrap this function and write additional entries to destrepo/.hg/shared to indicate additional pieces of data to be shared. tpathstdefaults[paths] default = %s thgrcN(RtconfigRtwriteRt tonativeeol(t sourcerepotdestrepoRRttemplate((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyRCs cC@s|s dS|jjtd|tk r5|}nxW|ddfD]F}|dkr]qEny|j|}PWqEtjk rqEqEXqEWt||dS(sMaybe perform a working directory update after a shared repo is created. ``update`` can be a boolean or a revision to update to. Nsupdating working directory Rttip( RtstatusRR.R4tlookupR R;t_update(RYRRttesttuprev((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyRRs    c C@sd }yd }|r!tdn td}|j|dtdW}d}|j}tj|j} tj|} x|jjD]} |r| j drqnt j j | } | r| j |  r| j| n| j | r| j dr/t j j| d} tj| | }ntj| j| | j| ||\}}||7}qqW|r|jd |n|jd |Wd QX|SWnt|nXd S( sGcopy files from store of srcrepo in destpath returns destlock tlinkingtcopyingtunittfilesit phaserootstdataRslinked %d files scopied %d files N(R4Rt makeprogresst publishingtvfsmodRRtstoretcopylisttendswithR R!tdirnametexiststmkdirRRRt copyfilesRfR(RRtdestpathRthardlinkttopictprogresstnumt srcpublishingtsrcvfstdstvfsRutdstbasetlockfiletn((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyRgs:  c C@sCd} |r|jds3tjtdng} xI|D]A} |j-} | j| jdi| d6jWdQXq@W| } nt j j |}yt j |tWn+tk r} | jtjkrqnXtj|}t j j|}tj|d|vt j j|rF|jtd|nE|jtd|t|||d|d td |d td | WdQXt|rt j jt j|}n|}t|d |}t||d|d tdtd|t|d |}tj ||d| t!|||t"|||fS(sPerform a clone using a shared repo. The store for the repository will be located at /.hg. The specified revisions will be cloned or pulled from "source". A shared repo will be created at "dest" and a working copy will be created if "update" is True. RsXsrc repository does not support revision lookup and so doesn't support clone by revisiontkeyNs%s.locks-(sharing from existing pooled repository %s) s((sharing from new pooled repository %s) RtpullR1RtstreamR!RRtheads(#R4R6R R)RR8R7R9R:R R!RRtmakedirR/tOSErrorterrnotEEXISTRRRRRRtcloneR.RVtabspathRRRR RRR3(Rtpeeroptst sharepathRtsrcpeerRRRRRR1t remoterevsR(RAtpooldirtpoolvfsRRt sharerepoR((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pytclonewithsharesF       cC@sv|jjd|}tjj||}tjj|rrtjj|s_tj|ntj||ndS(s8copy a cache from srcrepo to destcachedir (if it exists)scache/%sN(RRR R!RRRtcopyfile(Rt dstcachedirtfnametsrcbranchcachetdstbranchcache((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyt _copycaches c 2C@s t|trH|j|} t| |\}}t|||}n.|j}d|p`gf}|j} }t||||\}}|dkrt|}|r|j t d|qn|j|}t j |}t j |}|st jt dntj|dt}|jr|js`t jt d|q|jrt jt d|qni}t}| dk rtj| t}n| dk rtj| t}n|r| r| rdh} nt|d||$|%q\Wt|||}&|j2d&d d!d't j%t j!nUy(t|p|||d(td)|}&WnJt7k r$}!|!j8t8j9krd}t jt d|nnX|r|jdsRt jt d*ng}'xI|D]A}(|j-}|'j?|jdi|(d6jWdQXq_W|'}|d+}nd}|&j+})|)r|r|)j0|)j@| | WdQXnt j|}*t|*}+|)jAjBd,d-|+d!|sM|rDt}qMd}nitdA6},|)jAjC|,d!0tDjE|)||d0|d1| d2| d3| WdQXna|r|rt jt d4ntDjF||&d5|d$|jGjHnt jt d6d}|&j+}-|-r tIjJd7}.t j|}*d|*_Kt|*}+|-jjLd8t jM|.|+|-jAjBd,d-|+d!|jNd9d:r tOjP|-|n|r |tk r |j&}|jdi|d6j}WdQXnd}/d}0|dk r tQ|d;kr4 ||-kr4 |}/q tRjS|-|ra tRjT|-|j }/q |tk r y|-jU|}/Wq t j&k r q Xq n|/dkrK yR|-jGd<}/d<}|-|/jV}1|1d-kr t d=}0nt d>|1}0WqK tWk rG y|-jXd-}/WqH t j&k rC |-jUd?}/qH XqK Xn|0st |-|/jV}1t d@|1}0n|-jAj |0tY|-|/||-jGkr tZj[|-|q q nWdt\|||dk r t]j^|tn|dk r |j_nX||&fS(BsMake a copy of an existing repository. Create a copy of an existing repository in a new directory. The source and destination are URLs, as passed to the repository function. Returns a pair of repository peers, the source and newly created destination. The location of the source is added to the new repository's .hg/hgrc file, as the default to be used for future pulls and pushes. If an exception is raised, the partly cloned/updated destination repository will be deleted. Arguments: source: repository object or URL dest: URL of destination repository to create (defaults to base name of source repository) pull: always pull from source repository, even in local case or if the server prefers streaming stream: stream raw data uncompressed from repository (fast over LAN, slow over WAN) revs: revision to clone up to (implies pull=True) update: update working directory after clone completes, if destination is local repository (True means update to default rev, anything else is treated as a revision) branch: branches to clone shareopts: dict of options to control auto sharing behavior. The "pool" key activates auto sharing mode and defines the directory for stores. The "mode" key determines how to construct the directory name of the shared repository. "identity" means the name is derived from the node of the first changeset in the repository. "remote" means the name is derived from the remote's path/URL. Defaults to "identity." storeincludepats and storeexcludepats: sets of file patterns to include and exclude in the repository copy, respectively. If not defined, all files will be included (a "full" clone). Otherwise a "narrow" clone containing only the requested files will be performed. If ``storeincludepats`` is not defined but ``storeexcludepats`` is, ``storeincludepats`` is assumed to be ``path:.``. If both are empty sets, no files will be cloned. sdestination directory: %s s#empty destination path is not validRsdestination '%s' already existssdestination '%s' is not emptyspath:.t narrowfilestshallowfilestores lfs-servetlfsse(remote is using large file support (lfs), but it is explicitly disabled in the local configuration) sT(remote is using large file support (lfs); lfs will be enabled for this repository) tpooltmodetidentityRt0RNs7(not using pooled storage: remote appears to be empty) sA(not using pooled storage: unable to resolve identity of remote) tremotesunknown share naming mode: %ss1(pooled storage not supported for narrow clones) RRRRtwaitt preoutgoingtthrowRRs.hgt notindexedRtcachetoutgoingRRqRcsXsrc repository does not support revision lookup and so doesn't support clone by revisioniRRRtquietbookmarkmovetstreamclonerequestedt includepatst excludepatstdepths2narrow clone not available for remote destinationsR1s)clone from remote to remote not supportedtclonedRt experimentalt remotenamesit@supdating to bookmark @ s$updating to bookmark @ on branch %s Rsupdating to branch %s (RR(`RURDRRFR3R4RRBRRRRRR R)RRR.tlexiststisdirtlistdirR/RtvalidatepatternsR6R t disabledextRPRVR8R9R:RRR R!RR&R;thashlibtsha1tdigestRRXRtcancopyRt hassecretRt LockErrorRytrealpathRtmakedirsRRRRRRRt cachetocopyRR7t setnarrowpatsRt setconfigtconfigoverrideR Rtpusht _bookmarkstkeystuimodt samplehgrcstpasswdRRRnRtpullremotenamestlenRt isrevsymbolt revsymbolRR+tKeyErrort branchtipRRtactivateRtshutiltrmtreetclose(2RRRRRR1RRR+t shareoptststoreincludepatststoreexcludepatsRRR=RRtdestvfsRctnarrowt sharepoolt sharenamemodeRRAtrootnodetsrclockRtcleandirRRtcopythgdirRtinstt srcbookmarkst dstbookmarksRRtdestpeerRRRXREt defaulturlt overridesRRRRtbn((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyRs5                    !  '         !                                cC@sL|r|jrdS|jjtd|j|j|j|jfdS(NsI%d files updated, %d files merged, %d files removed, %d files unresolved (tisemptyRRRt updatedcountt mergedcountt removedcounttunresolvedcount(RYRzt quietempty((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyt _showstatsFs  c C@s.tj||dtd|dddgd|S(sUpdate the working directory to node. When overwrite is set, changes are clobbered, merged else returns stats (see pydoc mercurial.merge.applyupdates)t branchmergetforcetlabelss working copyt destinationt updatecheck(tmergemodRR/(RYRt overwriteRK((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyt updaterepoNs cC@sWt||td|}t||||jrJ|jjtdn|jdkS(s$update the working directory to nodeRKs1use 'hg resolve' to retry unresolved file merges i(RNR/RFRDRRR(RYRRERKRz((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyRXs  cC@sNt||t}|jjddt|rAt|||n|jdkS(sAforcibly switch the working directory to node, clobbering changest graftstatet ignoremissingi(RNR.Rt unlinkpathRFRD(RYRt show_statsRERz((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pytcleancs c C@s^|dkr6|jdd}|dkr6d}q6n|jd}t}|dkrtj|d|}|\}}}t}n|rt||} n=|dkrtj |dtd}nt ||d |} | r|r||d j krq;t j ||g|d j rT|j|jd } |jtd | q;|j|jd } |jtd| t j|n||jkr||jkr|j|d } |jtd| nt j||nN|r;|jr+|j|jd } |jtd| nt j|n|rTtj||nWdQX| S(sUpdate the working directory with extra care for non-file components This takes care of non-file components below: :bookmark: might be advanced or (in)activated This takes arguments below: :checkout: to which revision the working directory is updated :brev: a name, which might be a bookmark to be activated after updating :clean: whether changes in the working directory can be discarded :updatecheck: how to deal with a dirty working directory Valid values for updatecheck are (None => linear): * abort: abort if the working directory is dirty * none: don't check (merge working directory changes into destination) * linear: check that update is linear before merging working directory changes into destination * noconflict: check that the update does not result in file merges This returns whether conflict is detected at updating or not. tcommandss update.checktaborttnonetlineart noconflictRSRRKR%sbookmarks.activesupdating bookmark %s Rs(leaving bookmark %s) s(activating bookmark %s) N(RURVRWRX(R4RtwlockR/Rt destupdateR.t_cleanRt bailifchangedRRRRRet_activebookmarkRRt deactivateRR)tstatusotherdests( RRYRtbrevRSRKt movemarkfromtwarndesttupdatatrettb((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyt updatetotallynsN         " c C@s|s3tj||dtd|d|d|}ntjj|}|jrc|jj}n|dj}|jj t d|d tj||dt dtd|}t |||j r|jj t dn&|r | r |jj t d n|j d kS( sWBranch merge with node, resolving changes. Return true if any unresolved conflicts.RGRHt mergeforceRIR%s(aborting the merge, updating back to %s i sRuse 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon s'(branch merge, don't forget to commit) i(RLRR.t mergestatetreadtactivetlocalctxR&RRRR/RFRD( RYRRHtremindRgRIRURztms((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyRs"      cC@sSt|j||jd\}}t|||}|jtdtj|t||||jd\} } | rg| D]} |j | ^q} nt j |||| |d|d\}} } zf| s|jtd|S|j dt j|||d|}||| ||jWd | X|d S( s Helper for incoming / gincoming. displaychlist gets called with (remoterepo, incomingchangesetlist, displayer) parameters, and is supposed to contain only code that can't be unified. R+scomparing with %s RRGRHsno changes found tincomingtbufferedNi(RFRRPR3RRRt hidepasswordRBRRtgetremotechangestpagerRtchangesetdisplayerR,(t displaychlisttsubreporecurseRRYRRRoR=R<R1RRtchlistt cleanupfnt displayer((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyt _incomings(' $%   c@s@fd}fd}t||S(Nc@smd}jdrid}xGt|jD]3}|j|}t||j}q/Wn|S(Nitsubrepos(RPR4RRRtminRn(RdtctxtsubpathR(RRYRR(s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyRus %c@stj}jdr+|jnd}x|D]}|dk rZ||krZPng|jj|D]}|tkrm|^qm}jdrt|dkrq8n|d7}|j ||q8WdS(Nt newest_firstit no_mergesii( RtgetlimitRPtreverseR4t changelogtparentsRR$tshow(R<RvRxtlimittcountRtpR(R(s2/usr/lib64/python2.7/site-packages/mercurial/hg.pytdisplays  1! (Ry(RRYRRRuR((RRYRRs2/usr/lib64/python2.7/site-packages/mercurial/hg.pyRns  c C@sY|jj|dd }|sBtjtddtdn|jpQ|j}|j|jdplgf}|j tdt j |t ||||jd\}}|rgt j||D]}||j^q}nt|||} tj|| |d |jd } | j} | sOt j|j|| jn| | fS( NRs default-pushs"default repository not configured!thintssee 'hg help config.paths'R+scomparing with %s RRH(s default-pushR(RtgetpathR R)RtpushloctlocR+RPRRRpRBRtrevrangeRR3RtfindcommonoutgoingtmissingtnochangesfoundRtexcluded( RRYRRR!R=R1RRR<Rto((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyt _outgoing s" $2 c @szfd}tj}t\}}|shtj|||Sjdr|jnjdtj}d} x|D]} |dk r| |krPngj j | D]} | t kr| ^q} jdr-t | dkr-qn| d7} |j| qW|jtj|||dS(Nc@smd}jdrid}xGt|jD]3}|j|}t||j}q/Wn|S(NiRz(RPR4RRRR{R(RdR|R}R(RRRYR(s2/usr/lib64/python2.7/site-packages/mercurial/hg.pytrecurse!s %R~RiRii(RRRRt outgoinghooksRPRRrRsR4RRRR$RR,( RRYRRRRRR<RxRRRR((RRRYRs2/usr/lib64/python2.7/site-packages/mercurial/hg.pyR s.    1!  cC@s$tj|}|jdtj|j|jd}|r |jjt dx|D]}||}ypxi|j D]^}y%|j |dt jp|}Wqyt jk r}|jjd||fqyXqyWWq\tk r|jjt dtj|jq\Xq\Wn|S(s&verify the consistency of a repositorys filelog(%s)s .hgsubstateschecking subrepo links t allowcreates%d: %s s&.hgsubstate is corrupt in revision %s (t verifymodRR1RtpathtoRtgetcwdRRRRRR/R t RepoErrortwarnt ExceptionRtshort(RYRdR1RR|R}RA((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyRBs$ !   & "c C@s@tj|dr-|jj}|j}n |j}xNdD]F}|j|pd|jd|}|r@|jd||dq@q@W|jdd}|r|jdd|dnxDdD]<}x3|j|D]"\}}|j|||dqWqW|jd d }|r<|jd d tj |dn|S(s*build a remote ui from ui or repo and optsRRLt remotecmdRtcopiedRGt mainreporoottauththostfingerprintst hostsecurityt http_proxytwebtcacerts(RLR(RRRR( RRRRR7RRPRRt configitemsR( tsrcRtdstRtvR(tsectRtval((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyR_s$   ! "tspaths 00changelog.iRtobsstoreR!tcachedlocalrepocB@s2eZdZdZdZdZdZRS(s6Holds a localrepository that can be cached and reused.cC@s1||_|j\|_|_|j|_dS(sCreate a new cached repo from an existing repo. We assume the passed in repo was recently created. If the repo has changed between when it was created and when it was turned into a cache, it may not refresh properly. N(t_repot _repostatet_statetmtimet filternamet _filtername(tselfRY((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyt__init__s cC@s|j\}}||jkr.|jtfSt|jj|jj}|jrm|j|j|_n|j |_||_||_ |jt fS(sRefresh (if necessary) and return a repository. If the cached instance is out of date, it will be recreated automatically and returned. Returns a tuple of the repo and a boolean indicating whether a new repo instance was created. ( RRRR/RRRRR~t unfilteredRR.(RtstateRRY((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pytfetchs    cC@sg}d}xtD]\}}t|j|}tjj||}ytj|}Wn tk r{tj|}nX|j|tj |j ft ||tj }qWt ||fS(Ni( tfoiRmRR R!RtstatRR7tST_MTIMEtst_sizetmaxttuple(RRtmaxmtimetattrRtprefixRtst((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyRs cC@smt|jj|jj}|jr9|j|j}n |j}t|}|j|_|j |_ |S(sObtain a copy of this class instance. A new localrepository instance is obtained. The new instance should be completely independent of the original. ( RRRtorigrootRR~RRRR(RRYR((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyR7s     (t__name__t __module__t__doc__RRRR7(((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyRs   (St __future__RRRR R*Rti18nRRRR|RRRRRRR R R R R RRRRRLRRRRRRR RRRRRRRRRR#RBR4RFRORTRVRaRpR/R{RR3RRR.RRRRRRRRRFRNRRRSR[RfRyRnRRRRtobjectR(((s2/usr/lib64/python2.7/site-packages/mercurial/hg.pyt s        +         " /   &I  e    H      "