Plan 9 from Bell Labs’s /usr/web/sources/contrib/bichued/root/sys/lib/python/mercurial/localrepo.pyc

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


�
�c@s�ddklZlZlZlZlZddklZddkZddk	Z	ddk
Z
ddkZddkZddk
Z
ddkZddkZddkZddkZddkZddkZddkZddkZddkZddkZddkZddkZddkZddklZddkZddk Z ddk!Z!ddk"Z"ddk#Z#ddk$Z$ei%Z%dei&fd��YZ'd�Z(d�Z)d	�Z*dS(
i�(tbinthextnullidtnullrevtshort(t_N(treleasetlocalrepositorycBs�eZedddf�Zedi��Zedd�Zed��Z	ed��Z
ed��Zd	�Zd
�Z
d�Zd�Zd
�Zed�ZdZhd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d �Z$d!�Z%d"�Z&d#�Z'ed$�Z(eed%�Z)d&�Z*ed'�Z+d(d)�Z,d*�Z-d+�Z.d,�Z/d-�Z0d.�Z1d/�Z2d0�Z3d1�Z4d2�Z5d3�Z6d4�Z7e8d5�Z9e8d6�Z:d7�Z;d8eeeeehd9�Z<ed:�Z=d;�Z>ed<�Z?d=eeeeed>�Z@d?�ZAd@�ZBedA�ZCdB�ZDdC�ZEedD�ZFeeedE�ZGdF�ZHdG�ZIeeedH�ZJeeedI�ZKeeedJ�ZLeedK�ZMeedL�ZNdM�ZOdN�ZPdO�ZQdP�ZRedQ�ZSdR�ZTdS�ZUedT�ZVdU�ZWgedV�ZXRS(Wtlookuptchangegroupsubsett	branchmapsrevlogv1 store fncache sharedic	Cs*tii|�tii|�|_tii|id�|_||_t	i
|i�|_
t	i
|i�|_||_|i
�|_y3|ii|id�|i�ti|i�Wntj
onXtii|i�p/|otii|�pti|�nti|i�dg}|iiddt�ostitii|id��|id�|iiddt�o|id�n|i
d	d
�id�n|i
dd
�}x|D]}|id|�q�W|i�q�titd�|��n�|otitd�|��n�t�}y%t|i
d�i�i ��}Wn/tj
o#}|i!t!i"jo�q�nXx.||i#D]}titd�|��q�W|i|_$y^tii|i
d�i��}tii|�ptitd�|��n||_$Wn/tj
o#}|i!t!i"jo�qjnXt%i%||i$t	i
�|_%|i%i|_&|i%i
|_'|i%i|_(|i%i)|i
_)d|_+d|_,d|_-d|_.d|_/d|_0h|_1h|_2d|_3|_4|_5dS(Ns.hgthgrctrevlogv1tformattusestoretstoret
usefncachetfncaches
00changelog.itat9 dummy changelog to prevent using the old repo layouttrequirestws%s
srepository %s not foundsrepository %s already existssrequirement '%s' not supportedt
sharedpaths1.hg/sharedpath points to nonexistent directory %s(6trepot
repositoryt__init__tostpathtrealpathtroottjointorigroottutiltopenertwopenertbaseuitcopytuit
readconfigt
extensionstloadalltIOErrortisdirtexiststmkdirt
configbooltTruetappendtwritetcloseterrort	RepoErrorRtsettreadt
splitlinesterrnotENOENTt	supportedRRtspathtsopenertsjoint
createmodetNonet_tagst	_tagtypestbranchcachet
_ubranchcachet_branchcachetipt
nodetagscachet
filterpatst_datafilterst	_transreft_lockreft	_wlockref(	tselfR#Rtcreatetrequirementstreqfiletrtinstts((s&/sys/lib/python/mercurial/localrepo.pyRs�			
	%!
								cCsjti|i�}dtijo5tid}|i|i�o|id�qWn|i|i_|S(Nt
HG_PENDINGs00changelog.i.a(	t	changelogR;Rtenviront
startswithRtreadpendingtversiont
defversion(RJtctp((s&/sys/lib/python/mercurial/localrepo.pyRRms
cCsti|i�S(N(tmanifestR;(RJ((s&/sys/lib/python/mercurial/localrepo.pyRZwscCsti|i|i|i�S(N(tdirstateR!R%R(RJ((s&/sys/lib/python/mercurial/localrepo.pyR[{scCs.|djoti|�Snti||�S(N(R>tcontextt
workingctxt	changectx(RJtchangeid((s&/sys/lib/python/mercurial/localrepo.pyt__getitem__s
cCstS(N(R.(RJ((s&/sys/lib/python/mercurial/localrepo.pyt__nonzero__�scCs
t|i�S(N(tlenRR(RJ((s&/sys/lib/python/mercurial/localrepo.pyt__len__�sccs&xtt|��D]}|VqWdS(N(txrangeRb(RJti((s&/sys/lib/python/mercurial/localrepo.pyt__iter__�scCsd|iS(Nsfile:(R(RJ((s&/sys/lib/python/mercurial/localrepo.pyturl�scKsti|i||||�S(N(thookR%(RJtnametthrowtargs((s&/sys/lib/python/mercurial/localrepo.pyRh�ss:
cs`t|t�o|}|f}ndi|�}x;�iD]0}	|	|jotitd�|	��q<q<Wx9|D]1}
�iddtdt	��d|
d|�qwW��fd�}d}|o�y�i
d	d
�}
Wn%tj
o�i
d	d�}
nX|
i�}||
|d|�x3|D]+}
�iddt	��d|
d|�q/WdSny�idd
�}
Wn%tj
o�idd�}
nX|
i�}||
|ti|�d�ijo�idg�nti�iddg�}�i|||d|d|�}x3|D]+}
�iddt	��d|
d|�q-W|S(Nts%r cannot be used in a tag nametpretagRjtnodettagtlocalcs�|idd�|o"|ddjo|id�nx�|D]�}|o
||�p|}�ioF|�ijo6�ii|t�}|idt|�|f�n|idt��|f�q@W|i�dS(Niii�s
s%s %s
(tseekR0R@R?tgetRRR1(tfptnamestmungetprevtagsRitmtold(RJRn(s&/sys/lib/python/mercurial/localrepo.pyt	writetags�s!!t	localtagssr+Rs.hgtagssrb+tabtextratmatch(t
isinstancetstrRttag_disallowedR tAbortRRhR.RR!R)R5R>twfiletencodingt	fromlocalR[taddtmatch_texactRtcommit(RJRtRntmessageRptusertdateR|tallcharsRXRiRyRvRsRwttagnode((RJRns&/sys/lib/python/mercurial/localrepo.pyt_tag�sN


!$)!)c
Cskx>|i�d D],}d|jotitd���qqW|i�|i||||||�dS(sZtag a revision with one or more symbolic names.

        names is a list of strings or, when adding a single tag, names may be a
        string.

        if local is True, the tags are stored in a per-repository file.
        otherwise, they are stored in the .hgtags file, and a new
        changeset is committed with the change.

        keyword arguments:

        local: whether to store tags in non-version-controlled file
        (default False)

        message: commit message to use if committing

        user: name of user to use if committing

        date: date tuple to use if committingis.hgtagssCworking copy of .hgtags is changed (please commit .hgtags manually)N(tstatusR R�RttagsR�(RJRtRnR�RpR�R�tx((s&/sys/lib/python/mercurial/localrepo.pyRo�s

cCs3|idjo|i�\|_|_n|iS(sreturn a mapping of tag to nodeN(R?R>t	_findtagsR@(RJ((s&/sys/lib/python/mercurial/localrepo.pyR��sc	Cs�h}h}ti|i|||�ti|i|||�h}xD|i�D]6\}\}}|tjo||ti|�<qQqQW|ii	�|d<t
g}|i�D]"\}}|ti|�|fq�~�}||fS(suDo the hard work of finding tags.  Return a pair of dicts
        (tags, tagtypes) where tags maps tag name to node, and tagtypes
        maps tag name to a string like 'global' or 'local'.
        Subclasses or extensions are free to add their own tags, but
        should be aware that the returned dicts will be retained for the
        duration of the localrepo object.ttip(ttags_tfindglobaltagsR%t
readlocaltagst	iteritemsRR�ttolocalRRR�tdict(	RJtalltagsttagtypesR�RiRnthistt_[1]tvalue((s&/sys/lib/python/mercurial/localrepo.pyR��s


8cCs|i�|ii|�S(s�
        return the type of the given tag. result can be:

        'local'  : a local tag
        'global' : a global tag
        None     : tag does not exist
        (R�R@Rr(RJttagname((s&/sys/lib/python/mercurial/localrepo.pyttagtypes	
cCs�g}x\|i�i�D]H\}}y|ii|�}Wn
d}nX|i|||f�qWg}t|�D]\}}}|||fqv~S(s)return a list of tags ordered by revisioni�(R�R�RRtrevR/tsorted(RJtltttnRNR�((s&/sys/lib/python/mercurial/localrepo.pyttagslist&s
cCsi|ipLh|_x@|i�i�D](\}}|ii|g�i|�q&Wn|ii|g�S(s&return the tags associated with a node(RDR�R�t
setdefaultR/Rr(RJRnR�R�((s&/sys/lib/python/mercurial/localrepo.pytnodetags1s
	$cCs\t|�d}||jo;|i||d|d�|i||ii�|�n|S(Ni(Rbt_updatebranchcachet_writebranchcacheRRR�(RJtpartialtlrevttiprev((s&/sys/lib/python/mercurial/localrepo.pyt_branchtags9s

 cCs|ii�}|idj	o|i|jo|iSn|i}||_|idjo
h|_n|ii�|djp||iijo|i�\}}}n|ii|�}|i	}|i
||�||_	x0|i�D]"\}}||iti
|�<q�iS(N(RRR�RAR>RCtcleartnodemapt_readbranchcacheR�RBR�R�R�R�(RJR�toldtipR�tlastR�tktv((s&/sys/lib/python/mercurial/localrepo.pyR
Bs$ 		

 		
cCs�h}x�|i�i�D]�\}}d}xVtt|�ddd�D]8}||}d|ii|�djo|}PqHqHW|djo|d}n|||<qW|S(smreturn a dict where branch names map to the tipmost head of
        the branch, open heads come before closedii�R1iN(R
R�R>trangeRbRRR5(RJtbttbntheadstheadReth((s&/sys/lib/python/mercurial/localrepo.pyt
branchtags^s
	
c
Cs�h}y2|id�}|i�id�}|i�Wn&ttfj
ohttfSnXy�|id�idd�\}}t	|�t
|�}}|t|�jp||i�|jot
d��nxY|D]Q}|pq�n|idd�\}}|i|i�g�it	|��q�WWnhtj
o
�nTtj
oG}	|iio|iit|	�d�nhtt}}}nX|||fS(Nsbranchheads.caches
it is'invalidating branch cache (tip differs)(R!R5tsplitR1R)tOSErrorRRtpopRtintRbRnt
ValueErrorR�tstripR/tKeyboardInterruptt	ExceptionR%t	debugflagtwarnR(
RJR�tftlinesR�R�R�RntlabelRO((s&/sys/lib/python/mercurial/localrepo.pyR�ps0!*-
c	Cs�y�|idddt�}|idt|�|f�xH|i�D]:\}}x+|D]#}|idt|�|f�qXWqEW|i�Wnttfj
onXdS(Nsbranchheads.cacheRt
atomictemps%s %s
(R!R.R0RR�trenameR)R�(RJtbranchesR�R�R�R�tnodesRn((s&/sys/lib/python/mercurial/localrepo.pyR��s
%c
Cs�h}xFt||�D]5}||}|i|i�g�i|i��qWx1|i�D]#\}}|i|g�}	|	i|�t|	�djoq\ng}
x�|o�|i�}||	joq�n|t	g}|	D]}
|||
i
�q��i�}|ii||�}g}|	D]}||jo||q,q,~}	|
i
d|�q�W|	i|
�|	||<q\WdS(Nii(RdR�tbranchR/RnR�textendRbR�tminR�RRt	reachabletinsert(RJR�tstarttendtnewbranchesRNRXR�tnewnodestbheadst	newbheadstlatestR�tbhtminbhrevR�t_[2]tb((s&/sys/lib/python/mercurial/localrepo.pyR��s,
)



;2
cCs�t|t�o|ii|�SnV|djo|ii�dSn4|djotSn|djo|ii�Sn|ii|�}|o|Sn||i	�jo|i	�|Sn||i
�jo|i
�|Sn|ii|�}|o|Sn||ii�jo#ti
td�t|���ny't|�djot|�}nWnnXtitd�|��dS(Nt.itnullR�s*working directory has unknown parent '%s'!isunknown revision '%s'(R~R�RRRnR[tparentsRR�t_matchR�R�t
_partialmatchR2R�RRRbRR3(RJtkeyR�((s&/sys/lib/python/mercurial/localrepo.pyR�s6


cCstS(N(R.(RJ((s&/sys/lib/python/mercurial/localrepo.pyRp�scCstii|i|�S(N(RRR(RJR�((s&/sys/lib/python/mercurial/localrepo.pyR�scCstii|i|�S(N(RRRR(RJR�((s&/sys/lib/python/mercurial/localrepo.pytwjoin�scCstii|iti|��S(N(RRRRR tpconvert(RJR�((s&/sys/lib/python/mercurial/localrepo.pytrjoin�scCs2|ddjo|d}nti|i|�S(Nit/i(tfilelogR;(RJR�((s&/sys/lib/python/mercurial/localrepo.pytfile�scCs||S(N((RJR_((s&/sys/lib/python/mercurial/localrepo.pyR^�scCs||i�S(s.get list of changectxs for parents of changeid(R�(RJR_((s&/sys/lib/python/mercurial/localrepo.pyR��scCsti||||�S(sechangeid can be a changeset revision, node, or tag.
           fileid can be a file revision or node.(R\tfilectx(RJRR_tfileid((s&/sys/lib/python/mercurial/localrepo.pyR��scCs
|ii�S(N(R[tgetcwd(RJ((s&/sys/lib/python/mercurial/localrepo.pyR��scCs|ii||�S(N(R[tpathto(RJR�tcwd((s&/sys/lib/python/mercurial/localrepo.pyR��sRNcCs|i||�S(N(R"(RJR�tmode((s&/sys/lib/python/mercurial/localrepo.pyR��scCstii|i|��S(N(RRtislinkR�(RJR�((s&/sys/lib/python/mercurial/localrepo.pyt_link�scs�||ijog}x|ii|�D]�}}|djoq)nti|id|g�}d}|}	xN|ii�D]=\}
}|i	|
�o!|}|t
|
�i�}	Pq�q�W|p
d�}nti
|�dp|��fd�}n|i|||	f�q)W||i|<nxt|i|D]e\}}}||�oI|iitd�||f�|||d|id|d	|�}Pq;q;W|S(
Nt!Rlc[sti||�S((R tfilter(RPRXtkwargs((s&/sys/lib/python/mercurial/localrepo.pyt<lambda>sics
�||�S(((RPRXR�(toldfn(s&/sys/lib/python/mercurial/localrepo.pyR�ssfiltering %s through %s
R%Rtfilename(RER%tconfigitemsR�R}RR>RFR�RTRbtlstriptinspectt
getargspecR/tdebugR(RJR�R�tdataR�tpattcmdtmftfntparamsRitfilterfn((R�s&/sys/lib/python/mercurial/localrepo.pyt_filter�s:
	

 $	cCs||i|<dS(N(RF(RJRiR�((s&/sys/lib/python/mercurial/localrepo.pyt
adddatafilterscCsW|i|�oti|i|��}n|i|d�i�}|id||�S(NRNtencode(R�RtreadlinkR�R"R5R(RJR�R�((s&/sys/lib/python/mercurial/localrepo.pytwreadscCs�|id||�}yti|i|��Wntj
onXd|jo|ii||�nG|i|d�i|�d|jo ti	|i|�t
t�ndS(NtdecodeR�RR�(RRtunlinkR�R�R"tsymlinkR0R t	set_flagstFalseR.(RJR�R�tflags((s&/sys/lib/python/mercurial/localrepo.pytwwrite"s

cCs|id||�S(NR
(R(RJR�R�((s&/sys/lib/python/mercurial/localrepo.pyt
wwritedata/sc	Cs�|io
|i�pd}|o|i�o|i�Sntii|id��oti	t
d���ny|id�i�}Wnt
j
o
d}nX|idd�i|�|idd�i|ii��|id�|id�f|id�|id	�f|id�|id
�fg}ti|ii|i|id�t|�|ii�}ti|�|_|S(Ntjournals'journal already exists - run hg recoverR[Rlsjournal.dirstateRsjournal.branchtundos
undo.dirstatesundo.branch(RGR>trunningtnestRRR+R<R2R3RR!R5R)R0R[R�RttransactionR%R�R;t
aftertransRR=tweakreftref(RJttrtdstrenames((s&/sys/lib/python/mercurial/localrepo.pyR2s("!	cCs�|i�}z�tii|id��oM|iitd��ti	|i
|id�|ii�|i�t
Sn|iitd��tSWd|i�XdS(NRs%rolling back interrupted transaction
s%no interrupted transaction available
(tlockRRR+R<R%R�RRtrollbackR;R�t
invalidateR.RR(RJR((s&/sys/lib/python/mercurial/localrepo.pytrecoverMs%
c
CsZd}}z;|i�}|i�}tii|id��o�|iit	d��t
i|i|id�|ii
�ti|id�|id��y)|id�i�}|ii|�Wn?tj
o3|ii
t	d�ti|ii���nX|i�|ii�|i�n|ii
t	d��Wdt||�XdS(NRsrolling back last transaction
s
undo.dirstateR[sundo.branchs=Named branch could not be reset, current branch still is: %s
s"no rollback information available
(R>twlockRRRR+R<R%R�RRRR;R�R R�RR!R5R[t	setbranchR)R�R�R�Rt	destroyedR(RJR!RR�((s&/sys/lib/python/mercurial/localrepo.pyR[s&
%"

cCsrx5di�D]'}||ijot||�q
q
Wd|_d|_d|_d|_d|_d|_	dS(Nschangelog manifest(
R�t__dict__tdelattrR>R?R@RDRARBRC(RJR((s&/sys/lib/python/mercurial/localrepo.pyRss
					c	Cs�yti|d|d|�}Wn|tij
om}|p�n|iitd�||if�ti|t|iiddd��|d|�}nX|o|�n|S(Nitdescs"waiting for lock on %s held by %r
R%ttimeoutt600(	RR2tLockHeldR%R�RtlockerR�tconfig(RJtlocknametwaitt	releasefnt	acquirefnR&R�RO((s&/sys/lib/python/mercurial/localrepo.pyt_lock~s$cCs�|io
|i�}|dj	o|io|i�|Sn|i|id�|d|itd�|i�}t	i
|�|_|S(s�Lock the repository store (.hg/store) and return a weak reference
        to the lock. Use this before modifying the store (e.g. committing or
        stripping). If you are opening a transaction, get a lock as well.)Rs
repository %sN(RHR>theldRR0R<RRRRR(RJR-R�((s&/sys/lib/python/mercurial/localrepo.pyR�s
cCs�|io
|i�}|dj	o|io|i�|Sn|i|id�||ii|iit	d�|i
�}ti|�|_|S(s�Lock the non-store parts of the repository (everything under
        .hg except .hg/store) and return a weak reference to the lock.
        Use this before modifying files in .hg.R!sworking directory of %sN(
RIR>R1RR0RR[R0RRRRR(RJR-R�((s&/sys/lib/python/mercurial/localrepo.pyR!�s

c	Cs�|i�}|i�}|i|�}	|i|t�}
|i|t�}}h}
|i�}|o6|d|jo%|d}|i|�}|}|oC|tjp
|djo%||jo||}|
}q�q�n|pa|iit	d�||f�x>|di
�D](}||jo||i�}PqqWn|iit	d�||t|�f�||
d<t|�|
d<t|}
}nY|tjoK|	i
|
|�}||
jo|t}
}q�|jo
t}q�|tjp|	i|
|�p|
o-|i|�|	i||
|||
|�Sn|
|jo-|i|�|i�jo|i|�n|
S(sK
        commit an individual file as part of a larger transaction
        is( %s: searching for copy revision for %s
R�s %s: copy %s:%s
R$tcopyrevN(RR�R�RrRtrenamedR>R%R�Rt	ancestorstfilenodeRtancestortcmpR/R�R(RJtfctxt	manifest1t	manifest2tlinkrevRt
changelisttfnamettexttflogtfparent1tfparent2t	fparent2otmetaR$tcfnametcrevt
newfparentR6tfparentancestor((s&/sys/lib/python/mercurial/localrepo.pyt_filecommit�sP




)



'
 )RlcCs�d�}|pti|id�}n|pg}	|	i|_||_n|i�}
zo|ii�\}}|d}
|oG|t
jo:|o3|i�p
|i�ot
itd���n|id|d|�}|o|di|d�ng}xE|
iD]:}||�o'|
i|�i�o|i|�qqW|o)d|djo|didd�n|o|i�ot|d|d	|d
�}x�i�D]�}|djp||jp||
ijoq�n||djo||td
��n||	joG|d}xa|D]}|i|�oPqAqAW||td��q�||ijo||td��q�q�Wn|oi|id�oX|t
joK|dp|d	p|d
o)|di�|di�jodSnti|�}xI|dD]=}||jo*||djot
itd���q1q1Wti|||f|||||�}|o||||�|_n|o�|
ii�}xa|D]Y}|i itd�|�|
i|�i!|i||�}||d|f||<q�Wt"i#||�n|i$|t%�}x*|d|d	D]}|ii&|�qlWx"|d
D]}|ii'|�q�W|ii(|�|i)�|SWd|
i*�XdS(s�Add a new revision to current repository.

        Revision information is gathered from the working directory,
        match can be used to filter the committed files. If editor is
        supplied, it is called to get a commit message.
        cSstid||f��dS(Ns%s: %s(R R�(R�tmsg((s&/sys/lib/python/mercurial/localrepo.pytfail�sRlsBcannot partially commit a merge (do not specify files or patterns)R}tcleaniis.hgsubstateiiR�isfile not found!R�sno match under directory!sfile not tracked!R1tus+unresolved merge conflicts (see hg resolve)scommitting subrepository %s
N(+R�talwaysRR/tdirtbadR!R[R�R>RtfilestanypatsR R�RR�R�tsubstatetsubtdirtyR�R4RTRrR�tmerge_t
mergestateR\R]t_textR$R%R�tsubrepot
writestatet	commitctxR.tnormaltforgett
setparentstresetR(RJR>R�R�R}tforceteditorR|RJtvdirsR!tp1tp2twctxtchangestsubsRPtmatchedR�tdRtmstcctxtstatetsrtret((s&/sys/lib/python/mercurial/localrepo.pyR��s�		


# 
*

	&"!!
cs�d
}}|i�}|i�|i�}}|i�i�}|i�}	|i�}
|i�|o
|i�pd}}�iddt	d|d|��i
�}z��i�}ti
|�}
h}g}t��}x�t|i�|i��D]�}�ii|d�yF||}�i|||	||
|�||<|i||i��Wq�tfj
o<|o!�iitd�|��q�|i|�q�q�i|�g}t|�D]+}||jp
||	jo||q�q�~}g}|D]}||jo||qq~}x|D]
}||=q>W�ii||
||i�|i�||f�}�ii ��ii||||i!�|
|i"�|i"�|
|i#�|i$�i��}�fd�}�id	dt	d
t|�d|d|d|��ii%|
�|i&��i'o�i(�n�idd
t|�d|d|�|SWd
~|i)�Xd
S(stAdd a new revision to current repository.

        Revision information is passed via the context argument.
        Rlt	precommitRjtparent1tparent2s
strouble committing %s!
cs�ii�o
�ipdS(Rl(RRtwritependingR((RJ(s&/sys/lib/python/mercurial/localrepo.pyR��stpretxncommitRntpendingR�N(*R>tremovedRbRcRZR$R�RRhR.RRRtproxyRbR�tmodifiedtaddedR%tnoteRHR4RR�R)R�RR/tupdateR�tmanifestnodeRRtdelayupdatetdescriptionRnR�R|tfinalizeR1RAR�R(RJtctxR2RRRtRbRctm1tm2R�txp1txp2ttrptnewtchangedR;R�R8R�R�tdroptmnR�RY((RJs&/sys/lib/python/mercurial/localrepo.pyRZZsf
'


E2
!$


%cCsti|i|hh�dS(s�Inform the repository that nodes have been destroyed.
        Intended for use by strip and rollback, so there's a common
        place for anything that has to be done after destroying history.N(R�R�R%(RJ((s&/sys/lib/python/mercurial/localrepo.pyR#�scCs||i|�S(s�
        walk recursively through the directory tree or a given
        changeset, finding all files matched by the match
        function
        (twalk(RJR}Rn((s&/sys/lib/python/mercurial/localrepo.pyR��sR�csB�fd�}t|ti�o
|�n�|�t|ti�o
|}n�|}|i�dj}	|	o��dj}
�pti�i�i���|||}}}
|	o'|i��i�jo|i	�n|
p��fd�}|�_
n|	oS�ii�|||
�}|\}}}}}}}}|
o|og}x|t
|�D]n}|�jp=|i|��i|�jp�|i||i��o|i|�qr|i|�qrW|o||7}n|ocyF�it�}z%x|D]}�ii|�qWWd|i�XWqctij
oqcXqgqkn|
p�|��}|	oy|�d�}x9|||D])}d||<|i||i|��q�WxJ|D]}||jo||=q�q�Wn!ggg}}}||�}ggg}}}x�|D]�}||jo�|i|�|i|�jp>||||jo:||p�|i||i��o|i|�n|o|i|�n||=q9|i|�q9W|i�}n|||||||f}g}|D]}||i�q$~|S(s�return status of files between two nodes or node and working directory

        If node1 is None, use the first dirstate parent instead.
        If node2 is None, compare node1 with working directory.
        csE|i�i�}x,|i�D]}�|�p||=qqW|S(N(RZR$tkeys(R~RR(R}(s&/sys/lib/python/mercurial/localrepo.pyt	mfmatches�s

R�cs;|�jo*�iid�ii|�|f�ndS(Ns%s: %s
(R%R�R[R�(R�RI(tctx1RJ(s&/sys/lib/python/mercurial/localrepo.pyRO�s
N(R~R\R^R�R>R�RMRR�RZROR[R�R�RR7R�R/R!RR[RR2t	LockErrorR4R�tsort(RJtnode1tnode2R}tignoredRKtunknownR�tctx2tworkingt
parentworkingtlistignoredt	listcleantlistunknownRORPR7RvRwRttdeletedtfixupR�R!tmf1tmf2RRNR�R�((RJR�R}s&/sys/lib/python/mercurial/localrepo.pyR��s�



"!

,


)%cCs�|i�}zdg}xS|D]K}|i|�}yti|�}Wn1|iitd�|�|i|�qnX|idjo$|iitd�||f�nt	i
|i�pt	i|i�p+|iitd�|�|i|�q|i
|djo|iitd�|�q|i
|djo|i
i|�q|i
i|�qW|SWd|i�XdS(Ns%s does not exist!
i��se%s: files over 10MB may cause memory and performance problems
(use 'hg revert %s' to unadd the file)
s:%s not added: only files and symlinks supported currently
tamns%s already tracked!
RN(R!R�RtlstatR%R�RR/tst_sizetstattS_ISREGtst_modetS_ISLNKR[tnormallookupR�R(RJtlistR!trejectedR�RYtst((s&/sys/lib/python/mercurial/localrepo.pyR�#s4
&cCsu|i�}zWxP|D]H}|i|djo|iitd�|�q|ii|�qWWd|i�XdS(NRs%s not added!
(R!R[R%R�RR\R(RJR�R!R�((s&/sys/lib/python/mercurial/localrepo.pyR\Bsc	CsB|oax^|D]R}yti|i|��Wqtj
o#}|itijo�q`qXqWn|i�}z�x�|D]�}|o:tii	|i|��o|i
itd�|�q~|i
|djo|i
i|�q~||i
jo|i
itd�|�q~|i
i|�q~WWd|i�XdS(Ns%s still exists!
Rs%s not tracked!
(R RR�R�R7R8R!RRR+R%R�RR[R\tremoveR(RJR�RR�ROR!((s&/sys/lib/python/mercurial/localrepo.pyR�Ms(#c	Cs*g}|ii�D]:}|tjo'||ii|ii|�d�qq~}|i�}z�x�|D]�}|i|djo|iit	d�|�qm||djo|dp|d}|i
|�i||�}|i|||i|��|ii
|�qmWWd|i�XdS(NiRNs%s not removed!
i(R[R�RRZR5RRR!R%R�RR�RRR[R(	RJR�R�RYt	manifestsR!R�RwR�((s&/sys/lib/python/mercurial/localrepo.pytundeletecsP&cCs�|i|�}tii|�ptii|�p|iitd�|�n�tii|�ptii|�p|iitd�|�nZ|i	�}z?|i
|djo|i
i|�n|i
i||�Wd|i
�XdS(Ns%s does not exist!
s1copy failed: %s is not a file or a symbolic link
s?r(R�RRR+R�R%R�RtisfileR!R[R�R$R(RJtsourcetdestRYR!((s&/sys/lib/python/mercurial/localrepo.pyR$ss&&cCsq|ii|�}g}|D] }||ii|�|fq~}g}t|�D]\}}||qW~S(N(RRR�R�R�(RJR�R�R�R�R�RNR�((s&/sys/lib/python/mercurial/localrepo.pyR��s4cCs�|djo|di�}n|i�}||jogSn||}|i�|dj	o |ii|g|�d}n|pFg}|D].}d|ii|�djo||q�q�~}n|S(NiR1i(R>R�R
treverseRRtnodesbetweenR5(RJR�R�tclosedR�R�R�R�((s&/sys/lib/python/mercurial/localrepo.pytbranchheads�s




 5cCs�|p|ii�g}ng}x~|D]v}|}xg|ii|�}|dtjp|dtjo&|i|||d|df�Pn|d}q9q*W|S(Nii(RRR�R�RR/(RJR�R�R�R�RY((s&/sys/lib/python/mercurial/localrepo.pyR��s"!c
Cs�g}x�|D]�\}}|gd}}}d}xm||jo_|tjoR|ii|�d}	||jo|i|�|d}n|	}|d7}q6W|i|�q
W|S(Niii(RRRR�R/(
RJtpairsRNttoptbottomR�R�ReR�RY((s&/sys/lib/python/mercurial/localrepo.pytbetween�s

cCs|i||||�dS(s�Return list of roots of the subsets of missing nodes from remote

        If base dict is specified, assume that these nodes and their parents
        exist on the remote side and that no child of a node of base exists
        in both remote and self.
        Furthermore base will be updated to include the nodes that exists
        in self and remote but no children exists in self and remote.
        If a list of heads is specified, return only nodes which are heads
        or ancestors of these heads.

        All the ancestors of base are in self and in remote.
        All the descendants of the list returned are missing in self.
        (and so we know that the rest of the nodes are missing in remote, see
        outgoing)
        i(tfindcommonincoming(RJtremotetbaseR�R_((s&/sys/lib/python/mercurial/localrepo.pytfindincoming�scCs�|ii}g}t�}t�}t�}	|djo
h}n|p|i�}n|ii�tjoKd|t<|tgjotgtgt|�fSntgggfSn|ii	t
d��g}
x6|D].}||jo|
i|�q�d||<q�W|
}|
p|i�ggfSnt|
�}d}
|i
|
�}
x|
o
g}x0|
o(|
id�}|d|joqin|iit
d�t|d�t|d�f�|dtjon�||	jo|iit
d��qinz|doj|d|joY|iit
d�t|d�t|d�f�|i|dd!�|	i|�n|d|jo�|d|jo�|d|joJ|d|jo9|iit
d	�t|d��|i|d�nx4|dd
!D]!}||jod||<q
q
WnxM|dd
!D]>}||jo+||jo|i|�|i|�qAqAW|i|d�qiW|o�|
d7}
|iit
d�|
ditt|��f�x�tdt|�d
�D]l}xc|i
|||d
!�D]G}|iit
d�t|d�t|d�f�|
i|�qWq�YqYWxV|oNg}|
d7}
x7t||i|��D]\}}|i|d�|d}d}x�D]�}|iit
d�|t|�t|�f�||jo�|djo;|iit
d�t|��|i|�d||<n@|iit
d�t|�t|�f�|i||f�Pn||d}}q�W|}q�WqqWxB|D]:}||jo'tit
d�t|d
 ���q�q�W|i�tgjo:|o|iit
d��q\tit
d���n|iit
d�dig}|D]}|t|�q~�d�|iit
d�|
�|i�t|�|fS(scReturn a tuple (common, missing roots, heads) used to identify
        missing nodes from remote.

        If base dict is specified, assume that these nodes and their parents
        exist on the remote side and that no child of a node of base exists
        in both remote and self.
        Furthermore base will be updated to include the nodes that exists
        in self and remote but no children exists in self and remote.
        If a list of heads is specified, return only nodes which are heads
        or ancestors of these heads.

        All the ancestors of base are in self and in remote.
        issearching for changes
isexamining %s:%s
sbranch already found
sfound incomplete branch %s:%s
iisfound new changeset %s
isrequest %d: %s
R�i
sreceived %s:%s
snarrowing %d:%d %s
sfound new branch changeset %s
s narrowed branch search to %s:%s
salready have changeset s!warning: repository is unrelated
srepository is unrelateds!found new changesets starting at s
s%d total queries
N(RRR�R4R>R�R�RR�R%R�RR/R�R�R�R�RR�RtmapRdRbtzipR�R2R3R�R R�(RJR�R�R�R_Rwtsearchtfetchtseent
seenbranchR�R�treqtreqcntRNR�RYR�t	newsearchR�R�ReR�((s&/sys/lib/python/mercurial/localrepo.pyR��s�			





"
"""


 "


/



	?c
Cs�|djo#h}|i|||d|�n|iitd�ditt|i���d�t	|i
i�}|it
�|i�}xc|o[|id�}||jo;|i|�x+|i
i|�D]}|i|�q�Wq�q�Wg}	t	�}
x�|D]�}|i
i|�\}}||jo||jo|	i|�n|o@||jo|
i|�n||jo|
i|�q�q
q
W|o|	t|
�fSn|	SdS(s�Return list of nodes that are roots of subsets not in remote

        If base dict is specified, assume that these nodes and their parents
        exist on the remote side.
        If a list of heads is specified, return only nodes which are heads
        or ancestors of these heads, and return a second element which
        contains all remote heads which get new children.
        R_scommon changesets up to R�s
iN(R>R�R%R�RRR�RR�R4RRR�R�RR�R�R/R�R�(
RJR�R�R�R_tremainR�R�RYtsubsett
updated_headsRbRc((s&/sys/lib/python/mercurial/localrepo.pytfindoutgoing[s<	
	-



	

c		Cs6|i�}z|i|d|d|�\}}}|tgjo|iitd��n|p|iitd��dSn|djo|id�o
|}n|djo|i|d�}n?|id�pt	i
td���n|i||d�}|i|d|i
��SWd|i�XdS(	NR�R_srequesting all changes
sno changes found
iR	tpullsWPartial pull cannot be done because other repository doesn't support changegroupsubset.(RR�RR%R�RR>tcapabletchangegroupR R�R	taddchangegroupRgR(	RJR�R�R_RtcommonR�trheadstcg((s&/sys/lib/python/mercurial/localrepo.pyR��s$

cCs:|id�o|i|||�Sn|i|||�S(Ntunbundle(R�t
push_unbundletpush_addchangegroup(RJR�R_trevs((s&/sys/lib/python/mercurial/localrepo.pytpush�s	c
s�h}|i�}�i|||d|�}�i|||�\}}�dj	o"�ii|��\}	}
�n|�ii�}
����fd�}|
p�iitd��d	Sn�|p�|t	gjoM|i
d�oh}�p�i�}nQxM�D]E}
�|
i�}||jo||i
|
�q|
g||<qW|i�}x�|D]�}||jo||}ng}||}g}|D](}�|i�|jo||q�q�~}|pqnn||||�pd
SqnqnWq+|�||�pdSq+n|o�iitd��qPn�djo�i|i�d�}n�i|�d�}||fS(NR_c
	s�d}�o#t|�t|�jo
d}ng}|D]}|�ii||�q<~}tt|g��t|�@}|ptSnx�|D]�}|�iijoc�ii|��}	g}
�D]}||	jo|
|q�q�~
}|p|i|�qq�|i|�q�Wt|�t|�jo
d}n|og|p,�ii	t
d��|di��n�ii	t
d���iit
d��t
SntS(s�
            check whether there are more local heads than remote heads on
            a specific branch.

            lheads: local branch heads
            rheads: remote branch heads
            updatelh: outgoing local branch heads
            iis,abort: push creates new remote branch '%s'!
s&abort: push creates new remote heads!
s0(did you forget to merge? use push -f to force)
(RbRRR�R4tsumR.R�R�R%R�RR�R�R(
tlheadsR�tupdatelhR�R�R�tupdatelheadstnewheadsRNR&R�R�R�(R�RJR�(s&/sys/lib/python/mercurial/localrepo.pytcheckbranch�s4
!
)2
sno changes found
iR
isnote: unsynced remote changes!
R�(Ni(Ni(Ni(R�R�R�R>RRR�R%R�RRR�R
R�R/R�t_changegroupR�R	(RJR�R_R�R�tremote_headstincRyR�tmsng_cltbasesR�tlocalhdsR�R�t	remotehdstlhR�R�R�tupdR�R�((R�RJR�s&/sys/lib/python/mercurial/localrepo.pytprepush�sX
".



+
cCsy|i�}z[|i|||�}|ddj	o)|\}}|i|d|i��Sn|dSWd|i�XdS(NiR�i(RR�R>R�RgR(RJR�R_R�RRmR�R�((s&/sys/lib/python/mercurial/localrepo.pyR�#scCse|i|||�}|ddj	o7|\}}|o
dg}n|i||d�Sn|dS(NiR_R�i(R�R>R�(RJR�R_R�RmR�R�((s&/sys/lib/python/mercurial/localrepo.pyR�.scCs�|iip
|djo$|iitd�t|��n|iioE|iitd��x,|D] }|iidt|��qhWndS(Ntbundles%d changesets found
slist of changesets:
s%s
(R%tverboseR�RRbR�R�R(RJR�R�Rn((s&/sys/lib/python/mercurial/localrepo.pytchangegroupinfo;s$
cs��djo�|i��i�}|i�||jofg}xI|D]A}x8�ii|�D]$}|tjo|i|�q`q`WqGW�i|��Sq�n�iddt	d���i��i
||�\�}}�i���t�}	x$|D]}|	i
�i|��qW|	it�t|	�}	|	o1�i
d|	�\�}
}
d}
t���n
t���i�h�h��it��d}
d}
d��d����fd�������fd���fd	�����fd
������fd���fd���fd
������������������fd�}ti|��S(stThis function generates a changegroup consisting of all the nodes
        that are descendents of any of the bases, and ancestors of any of
        the heads.

        It is fairly complex as determining which filenodes and which
        manifest nodes need to be included for the changeset to be complete
        is non-trivial.

        Another wrinkle is doing the reverse, figuring out which changeset in
        the changegroup a particular filenode or manifestnode belongs to.

        The caller can specify some nodes that must be included in the
        changegroup using the extranodes argument.  It should be a dict
        where the keys are the filenames (or 1 for the manifest), and the
        values are lists of (node, linknode) tuples, where node is a wanted
        node and linknode is the changelog node that should be transmitted as
        the linkrev.
        tpreoutgoingRjR�icSs|S(N((R�((s&/sys/lib/python/mercurial/localrepo.pytidentity�sc
Sst|�}|id|i�x�|D]�}g}|i|�D]}|tjo||q@q@~}x~|ov|i�}||joY|i|�g}	|i|�D]}|tjo|	|q�q�~	}|i|�qjqjWq&Wx|D]}|i|d�q�S(NR�(	R�R�R�R�RR�R�R�R>(
trevlogthassettmsngsetthaslstRnR�RYt	parentlstR�R�((s&/sys/lib/python/mercurial/localrepo.pyt
prune_parents�s;


;cs���fd�}|S(NcsL�i|�}x"|dD]}�i||�qW�i|d|�dS(Nii(R5R�(tclnodeRXR�(tmsng_mnfst_settchangedfilesettcl(s&/sys/lib/python/mercurial/localrepo.pytcollect_manifests_and_files�s
((R�R�(R�R�(R�s&/sys/lib/python/mercurial/localrepo.pytmanifest_and_file_collector�scsmt�}xM�D]E}�i�i�i|���}|�jo|i|�qqW��|��dS(N(R4RnR;R�R�(t
has_mnfst_setR�tlinknode(R�R�t
has_cl_setR�tmnfst(s&/sys/lib/python/mercurial/localrepo.pytprune_manifests�s	!
cs�|S(N((t	mnfstnode(R�(s&/sys/lib/python/mercurial/localrepo.pytlookup_manifest_link�scs(dg������fd�}|S(Nics �i|�}|�djo�i|�}x�|i�D][\}}�i|d�}|dj	o0�|}�i|h�}|i||�q<q<Wnp�i|�}x]�D]U}|i|d�}|dj	o0�|}�i|h�}|i||�q�q�W|d�d<dS(Nii(R�t	readdeltaR�RrR>R�R5(R�RNtdeltamfR�tfnodeR�tndsetRw(tnext_revR�tchangedfilestmsng_filenode_setR�(s&/sys/lib/python/mercurial/localrepo.pytcollect_msng_filenodes�s&




((R�R(R�RR�(R�R�s&/sys/lib/python/mercurial/localrepo.pytfilenode_collector�s	"csw�|}t�}xM|D]E}�i|i|i|���}|�jo|i|�qqW�|||�dS(N(R4RnR;R�R�(R�t
filerevlogR�R�R�R�(R�RR�R�(s&/sys/lib/python/mercurial/localrepo.pytprune_filenodess
	!
cs�|��fd�}|S(Ncs�|S(N((R�(R�(s&/sys/lib/python/mercurial/localrepo.pytlookup_filenode_links((R=R(R(R�s&/sys/lib/python/mercurial/localrepo.pytlookup_filenode_link_funcs
csW�p
|�jodSnx3�|D]'\}}||jo|||<q(q(WdS(N((RiR�RnR�(t
extranodes(s&/sys/lib/python/mercurial/localrepo.pytadd_extra_nodess
c3sSh}�i���|��}x|D]}|Vq(W���d���i�}|id�i��i|��|��}x|D]}|Vq�Wd}�i��oFxC�D]7}t|t�oq�n�i|h�d||<q�Wnxt	|�D]
}�i
|�}t|�pti
td�|��n|�jo2�||��|�|��|i�}ng}t|�djo^tit|��V|V|id|i�|i|�|��}x|D]}|Vq�n|�jo�|=qqWti�V�o'�iddt�d�d��ndS(NiR�sempty or missing revlog for %sitoutgoingRnR�(tgroupR�R�R�R>R�R~R�R�R�R�RbR R�RR�tchunkheadert
closechunkRhR(R�R
tchnktmsng_mnfst_lstR=Rtmsng_filenode_lst(RR�R�R�RRR�RR�R�Rtmsng_cl_lstR�R�RRJ(s&/sys/lib/python/mercurial/localrepo.pytgengroup#s`	
	




	

N(R>R�R�RRR�RR/R�RhR.R�R�R4RytdiscardR�RZtindexRbR tchunkbuffer(RJR�R�R�RtallheadsR�R�RYt
knownheadstjunkR((R�R�R�RJRR�R�RR�R�R�RRR�R�RRRs&/sys/lib/python/mercurial/localrepo.pyR	CsX




		
				
/
<GcCs|i||i�|�S(N(R	R�(RJt	basenodesR�((s&/sys/lib/python/mercurial/localrepo.pyR�lsc
s��iddtd���i��i|��tg}�D]}|�i|�q?~���i���d���fd���fd���fd����������fd�}ti|��S(	s$Generate a changegroup of all nodes that we have that a recipient
        doesn't.

        This is much easier than the previous function as we can assume that
        the recipient has any changenode we aren't sending them.

        common is the set of common nodes between remote and selfR�RjR�cSs|S(N((R�((s&/sys/lib/python/mercurial/localrepo.pyR��sc3s=x6|D].}|i|��jo|i|�VqqWdS(N(R;Rn(tlogRN(trevset(s&/sys/lib/python/mercurial/localrepo.pyt
gennodelst�scs��fd�}|S(Ncs$�i|�}�i|d�dS(Ni(R5Ry(R�RX(R�R�(s&/sys/lib/python/mercurial/localrepo.pytcollect_changed_files�s((R�R(R�(R�s&/sys/lib/python/mercurial/localrepo.pytchanged_file_collector�scs��fd�}|S(Ncs�i�i�i|���S(N(RnR;R�(R�(R�R�(s&/sys/lib/python/mercurial/localrepo.pyt
lookuprevlink�s((R�R(R�(R�s&/sys/lib/python/mercurial/localrepo.pytlookuprevlink_func�sc3sht�}x(�i���|��D]}|Vq%W�i}�|�}x%|i|�|��D]}|VqbWx�t|�D]�}�i|�}t|�ptitd�|��n�|�}t	|�}|oKt
it|��V|V�|�}x#|i||�D]}|VqWq~q~Wt
i�V�o'�i
ddt�d�d��ndS(Nsempty or missing revlog for %sR	RniR�(R4R
RZR�R�RbR R�RR�R�RRRhR(R�R
R�tnodeiterR=RR(R�RRJR�R�R�RR(s&/sys/lib/python/mercurial/localrepo.pyR�s6	
			

(	RhR.RRtfindmissingR4R�R�R R(RJR�R�R�R�R((	RR�RRJRRR�R�R�s&/sys/lib/python/mercurial/localrepo.pyR�ps		0	$cs���fd�}�fd�}|pdSn�iddtd|d|�d}}}	�i��i�t�i��}
�i�}z~ti|�}�i	i
td��t��}
ti
|�}�i|||�djo!|otitd	���nt��}||
}�i	i
td
��ti
|�}�ii|||��i	i
td��x�ti|�}|pPn�i	itd�|��i|�}t|�}ti
|�}|i|||�djotitd
���n|	t|�|7}	|d7}qxt�i��}d}|
o%||
jotd�||
}n�i	i
td�||	||f�|djoP��fd�}�iddtdt�i|
��d|d|d|�n�i|�|i�Wd~X|djo��i	itd���i��iddt�i|
��d|d|�xIt|
|�D]4}�iddt�i|��d|d|�q~Wn||
jo||
dSn
||
dSdS(sadd changegroup to repo.

        return values:
        - nothing changed or no source: 0
        - more heads than before: 1+added heads (2..n)
        - less heads than before: -1-removed heads (-2..-n)
        - number of heads stays the same: 1
        cs*�iitd�t|��t��S(Nsadd changeset %s
(R%R�RRRb(R�(R�RJ(s&/sys/lib/python/mercurial/localrepo.pytcsmap�s cs
�i|�S(N(R�(R�(R�(s&/sys/lib/python/mercurial/localrepo.pytrevmap�sitprechangegroupRjR�Rgsadding changesets
s!received changelog group is emptysadding manifests
sadding file changes
sadding %s revisions
s#received file revlog group is emptyiRls (%+d heads)s2added %d changesets with %d changes to %d files%s
cs�i�o
�ipdS(Rl(RqR((RJR�(s&/sys/lib/python/mercurial/localrepo.pyR��stpretxnchangegroupRnRsNsupdating the branch cache
R�tincoming(RhR.RRR{RbR�RRRuR%R�RR�t	chunkitertaddgroupR>R R�RZtgetchunkR�R�RRnR}R1R�Rd(RJR�tsrctypeRgtemptyokR"R#t
changesetsRPt	revisionstoldheadsRR�tclstartR'tclendR�tfltoR�R�RYRe((R�RJs&/sys/lib/python/mercurial/localrepo.pyR��sz		
$





!
!
cCs�|i�}|i�}yt|�}Wn+tj
otitd�|��nX|djotitd���nM|djotitd���n'|djotitd���n|i	i
td��|i�}y%tt|id	d��\}}Wn1tt
fj
otitd�|��nX|i	i
td
�|ti|�f�ti�}x�|�D]�|i�}y(|idd�\}	}
t|
�}
Wn1tt
fj
otitd�|��nX|i	itd�|	ti|
�f�|iti|	�d
�}x*ti|d|
�D]}|i|�qMW|i�q�Wti�|}
|
djo
d}
n|i	i
td�ti|�|
ti||
�f�|i�t|i��dS(Ns'Unexpected response from remote server:isoperation forbidden by serveris$locking the remote repository failedis%the server sent an unknown error codesstreaming all changes
R�s!%d files to transfer, %s of data
tsadding %s (%s)
Rtlimitg�MbP?s(transferred %s in %.1f seconds (%s/sec)
(t
stream_outtreadlineR�R�R2t
ResponseErrorRR R�R%R�R�R�t	TypeErrort	bytecountttimeRdR�R;Rt	decodedirt
filechunkiterR0R1RRbR�(RJR�RsR�trespttotal_filesttotal_bytesR�ReRitsizetofptchunktelapsed((s&/sys/lib/python/mercurial/localrepo.pyt	stream_ins\


%
)


cCs@|o)|o!|id�o|i|�Sn|i||�S(s�clone remote repository.

        keyword arguments:
        heads: list of revs to clone (forces use of pull)
        stream: use streaming clone if possibletstream(R�RDR�(RJR�R�RE((s&/sys/lib/python/mercurial/localrepo.pytcloneMs(Yt__name__t
__module__R4tcapabilitiesR�R9R>Rt
propertycacheRRRZR[R`RaRcRfRgRRhR�R�RoR�R�R�R�R�R�R
R�R�R�R�RRpRR�R�R�R^R�R�R�R�R�R�RRR	RRRR RRR0R.RR!RHR�RZR#R�R�R�R\R�R�R$R�R�R�R�R�R�R�R�R�R�R�R�R�R	R�R�R�RDRF(((s&/sys/lib/python/mercurial/localrepo.pyRs�T
					>			!	
																						
							KdD		i						�0
	p		
	�	Di	0cs:g}|D]}|t|�q~��fd�}|S(Ncs+x$�D]\}}ti||�qWdS(N(R R�(tsrcR�(trenamefiles(s&/sys/lib/python/mercurial/localrepo.pyRcs(ttuple(RPR�R�R((RLs&/sys/lib/python/mercurial/localrepo.pyRas'cCst|tid|�|�S(NR�(RR tdrop_scheme(R%RRK((s&/sys/lib/python/mercurial/localrepo.pytinstancehscCstS(N(R.(R((s&/sys/lib/python/mercurial/localrepo.pytislocalks(+RnRRRRRti18nRRR�RXRRR[R�RZR\RRRR�R R'RhR2R}R�tmergeRUR�R�RRR�R7RR:R�RJRRRRORP(((s&/sys/lib/python/mercurial/localrepo.pys<module>s.($<00H	����T		

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.