Ë ’•˜žEÙ£ãó"—ddlZddlZddlZddlmZddlmZmZmZddl m Z ddl m Z m Z mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z ddl!m"Z"m#Z#ddl$m%Z%e jLZ&Gd „d «Z'Gd „d e'«Z(Gd „d«Z)Gd„de)«Z*Gd„de'«Z+Gd„de+«Z,Gd„de)«Z-Gd„de-«Z.Gd„de+«Z/Gd„de-«Z0Gd„de,«Z1d„Z2d „Z3d!„Z4Gd"„d#e+«Z5Gd$„d%e-«Z6Gd&„d'e+«Z7Gd(„d)«Z8y)*éNé)Ú_)ÚhexÚnullrevÚshort)Úgetattr)ÚdagopÚencodingÚerrorÚfilesetÚmatchÚ mergestateÚmetadataÚobsoleteÚpatchÚpathutilÚphasesÚrepoviewÚscmutilÚsparseÚsubrepoÚ subrepoutilÚtestingÚutil)ÚdateutilÚ stringutil)Ú timestampcó —eZdZdZd„Zd„Zeje«Zd„Z d„Z d„Z d„Z d„Z d „Zd „Zd „Zd „Zed „«Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd3d„Zd„Zd„Zd„Z d„Z!d„Z"d„Z#d„Z$d „Z%d!„Z&d"„Z'd#„Z(d$„Z)d%„Z*ed&„«Z+d'„Z,d(„Z-d4d)„Z.d*„Z/d+„Z0 d5d,„Z1 d6d-„Z2d.„Z3d/„Z4 d7d0„Z5d8d1„Z6d2„Z7y)9ÚbasectxaIA basectx object represents the common logic for its children: changectx: read-only context that is already present in the repo, workingctx: a context that represents the working directory and can be committed, memctx: a context that represents changes in-memory and can also be committed.có—||_y©N©Ú_repo©ÚselfÚrepos ú5usr/lib/python3.12/site-packages/mercurial/context.pyÚ__init__zbasectx.__init__=s €Øˆ� ócó4—t|j««Sr!)rÚnode©r%s r'Ú __bytes__zbasectx.__bytes__@s€Ü�T—Y‘Y“[Ó!Ð!r)cóL—dt|«j›dt|«›d�S©NÚ<Ú Ú>©ÚtypeÚ__name__Ústrr,s r'Ú__repr__zbasectx.__repr__Eó�Ü  ›J×/Ó/´°TµÐ;Ð;r)có†— t|«t|«k(xr|j|jk(S#t$rYywxYw©NF)r4Ú_revÚAttributeError©r%Úothers r'Ú__eq__zbasectx.__eq__Hs>€ð ܘ“:¤ e£Ñ,ÒH°·±¸e¿j¹jÑ1HÐ HøÜò Ùð ús‚14´ A¿Acó—||k( Sr!©r=s r'Ú__ne__zbasectx.__ne__Nó€Ø˜E‘MÐ"Ð"r)có—||jvSr!©Ú _manifest©r%Úkeys r'Ú __contains__zbasectx.__contains__Qs€Ø�d—n‘nÐ$Ð$r)có$—|j|«Sr!)ÚfilectxrGs r'Ú __getitem__zbasectx.__getitem__Ts€Ø�|‰|˜CÓ Ð r)có,—t|j«Sr!)ÚiterrFr,s r'Ú__iter__zbasectx.__iter__Ws€Ü�D—N‘NÓ#Ð#r)có"—|j«S)z°Builds a manifest that includes the given status results, if this is a working copy context. For non-working copy contexts, it just returns the normal manifest.)Úmanifest)r%Ústatuss r'Ú_buildstatusmanifestzbasectx._buildstatusmanifestZs€ð�}‰}‹Ðr)có—|S)zfThis internal method provides a way for child objects to override the match operator. rA)r%r>r s r'Ú _matchstatuszbasectx._matchstatus`s €ðˆ r)c ó.—d}|j«�2|j«|j«kr|j|«}|j|«}|€|j|«}gg} } g} g} |j|j|j}}} t | «}|j |||¬«}|j«D]Ö\}}||vrŒ |€| j|«Œ|\\}}\}}|€| j|«Œ>|€| j|«ŒR||k7r| j|«Œi||jjjvr| j|«Œ�||j||«r| j|«ŒÆ| j|«ŒØ| rN|D�cgc]}||vr |r||«r|‘Œ}}|D�cgc]}||vr |r||«r|‘Œ}}| D�cgc] }||vsŒ|‘Œ } }tj| | | | ||| «Scc}wcc}wcc}w)z.build a status with respect to another contextN)r Úclean)ÚrevrSÚdeletedÚunknownÚignoredÚsetÚdiffÚitemsÚappendr#Ú nodeconstantsÚwdirfilenodeidsÚcmprrR)r%r>Úsr Ú listignoredÚ listcleanÚ listunknownÚmf2Úmf1ÚmodifiedÚaddedÚremovedrWrYrZr[Ú deletedsetÚdÚfnÚvalueÚnode1Úflag1Únode2Úflag2s r'Ú _buildstatuszbasectx._buildstatusfs&€ðˆØ �8‰8‹:Ð ! d§h¡h£j°5·9±9³;Ò&>Ø×+Ñ+¨AÓ.ˆCØ×(Ñ(¨Ó+ˆØ ˆ;Ø×+Ñ+¨AÓ.ˆCà˜b�%ˆØˆØˆØ$%§I¡I¨q¯y©y¸!¿)¹)˜'�ˆÜ˜“\ˆ Ø �H‰H�S ¨YˆHÓ 7ˆØŸ™ž‰IˆB�Ø�ZÑØØˆ}Ø— ‘ ˜RÔ ØØ-2Ñ *‰NˆU�E™N˜U E؈}Ø— ‘ ˜RÕ Ø�Ø—‘˜rÕ"ؘ%’Ø—‘ Õ#ؘdŸj™j×6Ñ6×FÑFÑFð —‘ Õ#Ø�b‘—‘˜e B™iÔ(Ø—‘ Õ#à— ‘ ˜RÕ ð-#ñ0 ñ"óá!�BؘS‘=©%±5¸´9òØ!ð ðñ"óá!�BؘS‘=©%±5¸´9òØ!ð ðñ %,ÓD¡G˜b¨r¸Ò/C’r GˆGÐDä�~‰~Ø �e˜W g¨w¸Àó ð ùòùò ùò EsÆ#HÇH Ç HÇ'HcóV—tj||jj«Sr!)rÚstater#Úuir,s r'Úsubstatezbasectx.substate¨s€ä× Ñ   t§z¡z§}¡}Ó5Ð5r)có&—|j|dS©Nr)rx©r%Úsubpaths r'Úsubrevzbasectx.subrev¬s€Ø�}‰}˜WÑ% aÑ(Ð(r)có—|jSr!)r;r,s r'rXz basectx.rev¯s €Ø�y‰yÐr)có—|jSr!)Ú_noder,s r'r+z basectx.node²ó €Ø�z‰zÐr)có4—t|j««Sr!)rr+r,s r'rz basectx.hexµó€Ü�4—9‘9“;ÓÐr)có—|jSr!rEr,s r'rQzbasectx.manifest¸ó €Ø�~‰~Ðr)có—|jSr!)Ú _manifestctxr,s r'Ú manifestctxzbasectx.manifestctx»s€Ø× Ñ Ð r)có—|jSr!r"r,s r'r&z basectx.repo¾r�r)cóD—tj|j«Sr!)rÚ phasenamesÚphaser,s r'Úphasestrzbasectx.phasestrÁs€Ü× Ñ  §¡£Ñ.Ð.r)cóD—|j«tjkDSr!)rŒrÚpublicr,s r'Úmutablezbasectx.mutableÄs€Ø�z‰z‹|œfŸm™mÑ+Ð+r)Ncó4—tj||||¬«S)N)Úbadfn)r r )r%ÚcwdÚexprr’s r'Ú matchfilesetzbasectx.matchfilesetÇs€Ü�}‰}˜T 3¨°EÔ:Ð:r)cób—|j«tj|jd«vS)z!True if the changeset is obsoletesobsolete©rXÚobsmodÚgetrevsr#r,s r'rzbasectx.obsoleteÊs"€à�x‰x‹zœVŸ^™^¨D¯J©J¸ ÓDÐDÐDr)cób—|j«tj|jd«vS)z True if the changeset is extinctsextinctr—r,s r'Úextinctzbasectx.extinctÎs"€à�x‰x‹zœVŸ^™^¨D¯J©J¸ ÓCÐCÐCr)cób—|j«tj|jd«vS)z:True if the changeset is not obsolete, but its ancestor isóorphanr—r,s r'Úorphanzbasectx.orphanÒs"€à�x‰x‹zœVŸ^™^¨D¯J©J¸ ÓBÐBÐBr)cób—|j«tj|jd«vS)z™True if the changeset tries to be a successor of a public changeset Only non-public and non-obsolete changesets may be phase-divergent. sphasedivergentr—r,s r'Úphasedivergentzbasectx.phasedivergentÖs%€ð �x‰x‹zœVŸ^™^¨D¯J©JÐ8IÓJÐJÐJr)cób—|j«tj|jd«vS)z›Is a successor of a changeset with multiple possible successor sets Only non-public and non-obsolete changesets may be content-divergent. scontentdivergentr—r,s r'Úcontentdivergentzbasectx.contentdivergentÝs%€ð �x‰x‹zœVŸ^™^¨D¯J©JÐ8KÓLÐLÐLr)cój—|j«xs"|j«xs|j«S)zTTrue if the changeset is either orphan, phase-divergent or content-divergent)ržr r¢r,s r'Ú isunstablezbasectx.isunstableäs,€ð�{‰{‹}ÒP × 3Ñ 3Ó 5ÒP¸×9NÑ9NÓ9PÐPr)cóЗg}|j«r|jd«|j«r|jd«|j«r|jd«|S)zÒreturn the list of instabilities affecting this changeset. Instabilities are returned as strings. possible values are: - orphan, - phase-divergent, - content-divergent. r�sphase-divergentscontent-divergent)ržr_r r¢)r%Ú instabilitiess r'r¦zbasectx.instabilitiesés\€ðˆ Ø �;‰;Œ=Ø × Ñ  Ô +Ø × Ñ Ô Ø × Ñ Ð!3Ô 4Ø × Ñ Ô "Ø × Ñ Ð!5Ô 6ØÐr)có—|jS)z)return contexts for each parent changeset©Ú_parentsr,s r'Úparentszbasectx.parentsús €à�}‰}Ðr)có —|jdS©Nrr¨r,s r'Úp1z basectx.p1þs€Ø�}‰}˜QÑÐr)cóf—|j}t|«dk(r|dS|jtS)Nér)r©Úlenr#r)r%rªs r'Úp2z basectx.p2s0€Ø—-‘-ˆÜ ˆw‹<˜1Ò Ø˜1‘:Ð Ø�z‰zœ'Ñ"Ð"r)có~—d|jvr |jj|«Sd|jvs||j«vr8||jvr*|j||jj|«fS|jj} ||jjj|«\}}||fS#t$r/t j |j xsd|td««‚wxYw#t$r/t j |j xsd|td««‚wxYw)NrFsNonesnot found in manifestÚ_manifestdelta)Ú__dict__rFÚfindÚKeyErrorr ÚManifestLookupErrorr€rÚfilesr³Úflagsr#Ú manifestlogÚ _changesetrQ)r%ÚpathÚmflr+Úflags r'Ú _fileinfozbasectx._fileinfos5€Ø ˜$Ÿ-™-Ñ 'ð Ø—~‘~×*Ñ*¨4Ó0Ð0ð ˜tŸ}™}Ñ ,°¸¿ ¹ » Ñ0DØ�t×*Ñ*Ñ*à×'Ñ'¨Ñ-Ø×'Ñ'×-Ñ-¨dÓ3ððð�j‰j×$Ñ$ˆð ؘTŸ_™_×5Ñ5Ñ6×;Ñ;¸DÓA‰JˆD�$ð �TˆzÐøô%ò Ü×/Ñ/Ø—J‘JÒ) '¨4´Ð3KÓ1Lóðð ûôò Ü×+Ñ+Ø— ‘ Ò%˜g t¬QÐ/GÓ-Hóð ð ús�C Â+Dà 8DÄ8D<có*—|j|«dSr¬)r¿©r%r¼s r'Úfilenodezbasectx.filenodes€Ø�~‰~˜dÓ# AÑ&Ð&r)có^— |j|«dS#tj$rYywxYw)Nrr))r¿r Ú LookupErrorrÁs r'r¹z basectx.flags"s3€ð Ø—>‘> $Ó'¨Ñ*Ð *øÜ× Ñ ò Ùð ús ‚–,«,có,—tj|«Sr!)rÚcomputechangesetcopiesr,s r'Ú_copieszbasectx._copies(s€ä×.Ñ.¨tÓ4Ð4r)có —|jdSr¬©rÇr,s r'Úp1copieszbasectx.p1copies,ó€Ø�|‰|˜A‰Ðr)có —|jdSrzrÉr,s r'Úp2copieszbasectx.p2copies/rËr)có2—tj|||¬«S)z>return a subrepo for the stored revision of path, never wdir())Ú allowcreate©r)r%r¼rÏs r'Úsubz basectx.sub2s€ä�‰˜t T°{ÔCÐCr)có0—tj|||«Sr!)rÚ nullsubrepo)r%r¼Úpctxs r'Únullsubzbasectx.nullsub6s€Ü×"Ñ" 4¨¨tÓ4Ð4r)có2—tj||d¬«S)z]return a subrepo for the stored revision, or wdir if this is a wdir context. T)Ú allowwdirrÐrÁs r'Ú workingsubzbasectx.workingsub9s€ô�‰˜t T°TÔ:Ð:r)c ó¤—|j}|s|j«}tj|j||||||j |||¬« S)N)ÚauditorÚctxÚ listsubreposr’)r#ÚgetcwdÚmatchmodr ÚrootÚ nofsauditor) r%ÚpatsÚincludeÚexcludeÚdefaultrÜr’r“Úrs r'r z basectx.match?sR€ð �J‰JˆÙØ—(‘(“*ˆCÜ�~‰~Ø �F‰FØ Ø Ø Ø Ø Ø—M‘MØØ%Øô  ð r)c óœ—|€|j«}|�|j|}tj|j|||||||||| ¬« S)z;Returns a diff generator for the given contexts and matcher)r ÚchangesÚoptsÚ losedatafnÚpathfnÚcopyÚcopysourcematchÚ hunksfilterfn)r­r#rr]) r%Úctx2r rçrèrérêrërìrís r'r]z basectx.diffYs^€ð ˆ<Ø—7‘7“9ˆDØ Ð Ø—:‘:˜dÑ#ˆDÜ�z‰zØ �J‰JØ Ø ØØØØ!ØØØ+Ø'ô  ð r)có6—|jj«Sr!)rFÚdirsr,s r'rðz basectx.dirsxs€Ø�~‰~×"Ñ"Ó$Ð$r)có8—|jj|«Sr!)rFÚhasdir)r%Údirs r'ròzbasectx.hasdir{s€Ø�~‰~×$Ñ$ SÓ)Ð)r)c 󀇗|}|j|}d} t|t«st|t«rd} ||}}|jj|«}|j ||«}t j ggggggg«} |j|| ||||«} | rCt j | j| j| jggg| j«} |r–t j||«D]}\Š} |j‰«} tj ‰|«} | j | | |||d¬«}dD]4}t#| |«t#||«}}|j%ˆfd„|D««Œ6Œ| jj'«| jj'«| jj'«| j(j'«| j*j'«| j,j'«| jj'«| S#t$rd} Y�Œ.wxYw)aìreturn status of files between two nodes or node and working directory. If other is None, compare this node with working directory. ctx1.status(ctx2) returns the status of change from ctx1 to ctx2 Returns a mercurial.scmutils.status object. Data can be accessed using either tuple notation: (modified, added, removed, deleted, unknown, ignored, clean) or direct attribute access: s.modified, s.added, ... FTN)r r[rWrZrÜ)rirjrkrYrZr[rWc3ó,•K—|] }d‰|fz–—Œ y­w)s%s/%sNrA)Ú.0Úfr|s €r'Ú z!basectx.status..×søèø€Ð!JÁ6¸a (¨g°q¨\Õ"9Á6ùsƒ)r#Ú isinstanceÚ changectxÚ narrowmatchrUrrRrtrirkrjrWÚ itersubreposr}r¶rÞÚ subdirmatcherrÚextendÚsortrYrZr[)r%r>r rdrerfrÜÚctx1rîÚreversedrårÑÚrev2ÚsubmatchrcÚkÚrfilesÚsfilesr|s @r'rRzbasectx.status~sóø€ð6ˆØ�z‰z˜%Ñ ˆðˆÜ˜$¤ Ô*¬z¸$Ä Ô/J؈Hؘt�$ˆDà— ‘ ×&Ñ& uÓ-ˆØ×!Ñ! $¨Ó.ˆÜ �N‰N˜2˜r 2 r¨2¨r°2Ó 6ˆØ × Ñ Ø �!�U˜K¨°Kó ˆñ ô—‘Ø— ‘ ˜AŸI™I q§w¡w°°B¸¸A¿G¹GóˆAñ Ü '× 4Ñ 4°T¸4Ö @‘ �˜ð ØŸ;™; wÓ/�Dô $×1Ñ1°'¸5ÓA�Ø—J‘JØØ"Ø'Ø#Ø'Ø!%ð ó�ó�Aô&-¨Q°£]´G¸A¸q³M˜F�FØ—M‘MÓ!JÁ6Ó!JÕJñð#!Að: � ‰ �‰ÔØ �‰� ‰ ŒØ � ‰ �‰ÔØ � ‰ �‰ÔØ � ‰ �‰ÔØ � ‰ �‰ÔØ �‰� ‰ ŒàˆøôE ò ð “Dð  úsÃ=H.È. H=È<H=có2—td|jz«‚)z)Get a mergestate object for this context.z"%s does not implement mergestate())ÚNotImplementedErrorÚ __class__©r%rWs r'rzbasectx.mergestateãs€ä!Ø 0°4·>±>Ñ Aó ð r)cóæ—t|j««dkDxsS|j«|j«j«k7xs"|j «xs|j « Srz)r°rªÚbranchr­Ú closesbranchr¸r,s r'Úisemptyzbasectx.isemptyésb€ä �— ‘ “Ó  !Ñ #ò Ø�{‰{‹} §¡£ × 0Ñ 0Ó 2Ñ2ò à× Ñ Ó"ò ð�z‰z‹|ð  ð r)r!©T©NNNsglobFNN) NNNNNNNNN)NNFFFF©F)8r5Ú __module__Ú __qualname__Ú__doc__r(r-r Ú strmethodÚ__str__r7r?rBrIrLrOrSrUrtÚ propertycacherxr}rXr+rrQrˆr&r�r�r•rr›ržr r¢r¤r¦rªr­r±r¿rÂr¹rÇrÊrÍrÑrÕrØr r]rðròrRrrrAr)r'rr5s|„ñòò"ð!ˆh× Ñ  Ó+€Gò<òò #ò%ò!ò$òò ò @ ðDñ6óð6ò)òòò òò!òò/ò,ó;òEòDòCòKòMòQò ò"ò ò#ò ò0'òð ñ5óð5òòóDò5ò;ðØØØØØØ ó ð8ØØØ ØØØ ØØó ò>%ò*ð ØØØØØócóJ ó  r)rcó8‡—eZdZdZd%ˆfd„ Zd„Zd„ZeZed„«Z ed„«Z e d„«Z ed„«Z ed „«Zd „Zd „Zd „Zd „Zd„Zd„Zd„Zd„Zeˆfd„«Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z!d„Z"d„Z#d„Z$d&d „Z%d'd!„Z&d"„Z'd#„Z(d$„Z)ˆxZ*S)(rúz A changecontext object makes access to data related to a particular changeset convenient. It represents a read-only context already present in the repo.cóV•—tt|� |«||_||_||_yr!)Úsuperrúr(r;r€Ú_maybe_filtered)r%r&rXr+Úmaybe_filteredr s €r'r(zchangectx.__init__÷s*ø€Ü Œi˜Ñ'¨Ô-؈Œ ؈Œ ð .ˆÕr)cób— t|j«S#t$rt|«cYSwxYwr!)Úhashr;r<Úidr,s r'Ú__hash__zchangectx.__hash__s-€ð ܘŸ ™ “?Ð "øÜò Ü�d“8ŠOð ús ‚—.­.có(—|jtk7Sr!)r;rr,s r'Ú __nonzero__zchangectx.__nonzero__ s€Ø�y‰yœGÑ#Ð#r)cóº—|jr |j}n|jj«}|jj |j ««Sr!)rr#Ú unfilteredÚ changelogÚchangelogrevisionrXr$s r'r»zchangectx._changesetsA€à × Ò Ø—:‘:‰Dà—:‘:×(Ñ(Ó*ˆDØ�~‰~×/Ñ/°·±³ Ó;Ð;r)có6—|jj«Sr!)r‡Úreadr,s r'rFzchangectx._manifests€à× Ñ ×%Ñ%Ó'Ð'r)có\—|jj|jjSr!)r#rºr»rQr,s r'r‡zchangectx._manifestctxs!€à�z‰z×%Ñ% d§o¡o×&>Ñ&>Ñ?Ð?r)có6—|jj«Sr!)r‡Ú readdeltar,s r'r³zchangectx._manifestdeltas€à× Ñ ×*Ñ*Ó,Ð,r)có„—|j}|jr |j}n|j«j}|j |j «\}}|t k(rt|||j|«d¬«gSt|||j|«d¬«t|||j|«d¬«gS)NF©r) r#rr%r$Ú parentrevsr;rrúr+)r%r&Úclr­r±s r'r©zchangectx._parents"sž€à�z‰zˆØ × Ò Ø—‘‰Bà—‘Ó"×,Ñ,ˆBà—‘˜tŸy™yÓ)‰ˆˆBØ ”Š=ܘd B¨¯©°« ÀEÔJÐKÐ Kä �d˜B §¡¨£ ¸EÔ BÜ �d˜B §¡¨£ ¸EÔ Bð ð r)có¢—|j}|j|j|j|j|j |j fSr!)r»rQÚuserÚdater¸Ú descriptionÚextra)r%Úcs r'Ú changesetzchangectx.changeset2s?€Ø �O‰Oˆà �J‰JØ �F‰FØ �F‰FØ �G‰GØ �M‰MØ �G‰Gð  ð r)có.—|jjSr!)r»rQr,s r'Ú manifestnodezchangectx.manifestnode=s€Ø�‰×'Ñ'Ð'r)có.—|jjSr!)r»r1r,s r'r1zchangectx.user@ó€Ø�‰×#Ñ#Ð#r)có.—|jjSr!)r»r2r,s r'r2zchangectx.dateCr:r)có.—|jjSr!)r»r¸r,s r'r¸zchangectx.filesFs€Ø�‰×$Ñ$Ð$r)cóÆ—t|j««}|j|j««|j|j ««t |«Sr!)r\r¸Údifference_updateÚ filesaddedÚ filesremovedÚsorted)r%ris r'Ú filesmodifiedzchangectx.filesmodifiedIsI€Ü�t—z‘z“|Ó$ˆØ×"Ñ" 4§?¡?Ó#4Ô5Ø×"Ñ" 4×#4Ñ#4Ó#6Ô7Ü�hÓÐr)có—|jj}d}|jjdk(rd}n5|jjj dd«}|dk(rd}n|dk7rd}|€|rt j|«}|Sg}|S©NTschangeset-sidedataFó experimentalscopies.read-fromschangeset-onlys compatibility)r»r?r#ÚfilecopiesmoderwÚconfigrÚcomputechangesetfilesadded)r%r?Úcompute_on_noneÚsources r'r?zchangectx.filesaddedOs“€Ø—_‘_×/Ñ/ˆ ØˆØ �:‰:× $Ñ $Ð(=Ò =Ø#‰Oà—Z‘Z—]‘]×)Ñ)¨/Ð;NÓOˆFØÐ*Ò*Ø"'‘ØÐ+Ò+à!� Ø Ð ÙÜ%×@Ñ@ÀÓF� ðÐð � ØÐr)có—|jj}d}|jjdk(rd}n5|jjj dd«}|dk(rd}n|dk7rd}|€|rt j|«}|Sg}|SrD)r»r@r#rFrwrGrÚcomputechangesetfilesremoved)r%r@rIrJs r'r@zchangectx.filesremovedbs“€Ø—‘×3Ñ3ˆ ØˆØ �:‰:× $Ñ $Ð(=Ò =Ø#‰Oà—Z‘Z—]‘]×)Ñ)¨/Ð;NÓOˆFØÐ*Ò*Ø"'‘ØÐ+Ò+à#� Ø Ð ÙÜ'×DÑDÀTÓJ� ðÐð "� ØÐr)cóJ•—|jj}|jj}d}|jjdk(rd}n7|jj j dd«}|dk(rd}n |dk7rdx}}|€|rtt|�&\}}n|€i}|€i}||fSrD) r»rÊrÍr#rFrwrGrrúrÇ)r%rÊrÍrIrJr s €r'rÇzchangectx._copiesus·ø€à—?‘?×+Ñ+ˆØ—?‘?×+Ñ+ˆØˆØ �:‰:× $Ñ $Ð(=Ò =Ø#‰Oà—Z‘Z—]‘]×)Ñ)¨/Ð;NÓOˆFðÐ*Ò*Ø"'‘ØÐ+Ò+à&*Ð*�˜8Ø Ð ÙÜ%*¬9°dÑ%CÑ"�™(àÐ#Ø!�HØ Ð ØˆHؘÐ!Ð!r)có.—|jjSr!)r»r3r,s r'r3zchangectx.description˜s€Ø�‰×*Ñ*Ð*r)cór—tj|jjj d««S©Nóbranch)r Útolocalr»r4Úgetr,s r'r zchangectx.branch›s(€Ü×Ñ §¡× 5Ñ 5× 9Ñ 9¸)Ó DÓEÐEr)có2—d|jjvS©Nsclose©r»r4r,s r'r zchangectx.closesbranchžs€Ø˜4Ÿ?™?×0Ñ0Ð0Ð0r)có.—|jjS)z#Return a dict of extra information.rVr,s r'r4zchangectx.extra¡s€à�‰×$Ñ$Ð$r)cóL—|jj|j«S)zReturn a list of byte tag names)r#Únodetagsr€r,s r'Útagszchangectx.tags¥s€à�z‰z×"Ñ" 4§:¡:Ó.Ð.r)cóL—|jj|j«S)z%Return a list of byte bookmark names.)r#Ú nodebookmarksr€r,s r'Ú bookmarkszchangectx.bookmarks©s€à�z‰z×'Ñ'¨¯ © Ó3Ð3r)có¶—|j}|jr |j}n|j«j}|j |j «Sr!)r#rr%r$Ú fast_rankr;)r%r&r/s r'r_zchangectx.fast_rank­sB€Ø�z‰zˆØ × Ò Ø—‘‰Bà—‘Ó"×,Ñ,ˆBØ�|‰|˜DŸI™IÓ&Ð&r)cóv—|jjj|j|j«Sr!)r#Ú _phasecacherŒr;r,s r'rŒzchangectx.phaseµs'€Ø�z‰z×%Ñ%×+Ñ+¨D¯J©J¸¿ ¹ ÓBÐBr)cóZ—|jtj|jd«vS)Nsvisible)r;rÚ filterrevsr#r,s r'Úhiddenzchangectx.hidden¸s"€Ø�y‰yœH×/Ñ/°· ± ¸JÓGÐGÐGr)có—yr:rAr,s r'Ú isinmemoryzchangectx.isinmemory»ó€Ør)có¤—|jjj|j«}|D�cgc]}|j|‘Œc}Scc}w)z·return list of changectx contexts for each child changeset. This returns only the immediate child changesets. Use descendants() to recursively walk children. )r#r%Úchildrenr€©r%r5Úxs r'rizchangectx.children¾sB€ð �J‰J× Ñ × )Ñ )¨$¯*©*Ó 5ˆÙ'(Ó)¡q !�— ‘ ˜1“  qÑ)Ð)ùÒ)s´A c#ó˜K—|jjj|jg«D]}|j|–—Œy­wr!)r#r%Ú ancestorsr;)r%Úas r'rmzchangectx.ancestorsÇs9èø€Ø—‘×%Ñ%×/Ñ/°·±° Ö<ˆAØ—*‘*˜Q‘-Ó ñ=ùó‚AA c#ó˜K—|jjj|jg«D]}|j|–—Œy­w)zrRecursively yield all children of the changeset. For just the immediate children, use children() N)r#r%Ú descendantsr;)r%rms r'rqzchangectx.descendantsËs;èø€ð —‘×%Ñ%×1Ñ1°4·9±9°+Ö>ˆAØ—*‘*˜Q‘-Ó ñ?ùrocó\—|€|j|«}t|j||||¬«S)z&get a file context from this changeset)ÚfileidrúÚfilelog)rÂrKr#)r%r¼rsrts r'rKzchangectx.filectxÓs1€à ˆ>Ø—]‘] 4Ó(ˆFÜØ �J‰J˜ V°tÀWô ð r)c 󘇗|j}|€|jdj}|jjj |j|«}|s"|jj j Š�n&t|«dk(r|dŠ�n|jjjdd«D]9} tj|j|«}|j«Š‰|vsŒ9n1|jjj|j|«Š|r}|jjj!t#d«t%‰«t%|j«t%|«fzdj'ˆfd„t)|«D««z«|j‰S#tj$rY�ŒwxYw)zÜreturn the "best" ancestor context of self and c2 If there are multiple candidates, it will show a message and check merge.preferancestor configuration before falling back to the revlog ancestor.rrsmergespreferancestors(note: using %s as ancestor of %s and %s r)c3óV•K—|] }|‰k7rtd«t|«z–—Œ"y­w)s: alternatively, use --config merge.preferancestor=%s N)rr)röÚnÚancs €r'røz%changectx.ancestor..üs<øèø€ðñ ".˜AØ š8ô ð9óô  ›(õ #ñ ".ùsƒ&))r€r©r#r%Úcommonancestorsheadsr`Únullidr°rwÚ configlistrÚ revsymbolr ÚRepoLookupErrorr+ÚancestorrRrrÚjoinrA)r%Úc2ÚwarnÚn2ÚcahsrårÛrxs @r'r~zchangectx.ancestorÛs|ø€ð�X‰XˆØ ˆ:Ø—‘˜Q‘×%Ñ%ˆBØ�z‰z×#Ñ#×8Ñ8¸¿¹ÀRÓHˆÙØ—*‘*×*Ñ*×1Ñ1ŠCÜ �‹Y˜!Š^Ø�q‘'ŠCð—Z‘Z—]‘]×-Ñ-¨hÐ8IÖJ�ðÜ!×+Ñ+¨D¯J©J¸Ó:�Cð—h‘h“j�ؘ$’;ÙðKð—j‘j×*Ñ*×3Ñ3°D·J±JÀÓC�ÙØ— ‘ — ‘ ×$Ñ$äÐFÓGÜ  ›:¤u¨T¯Z©ZÓ'8¼%À»)ÐDñEð—h‘hóô "(¨¤ó óñ ôð�z‰z˜#‰Ðøô/×,Ñ,òÚðúsÂ< F2Æ2G ÇG cóv—|jjj|j|j«S)z.True if this changeset is an ancestor of other)r#r%Ú isancestorrevr;r=s r'Ú isancestorofzchangectx.isancestorofs'€à�z‰z×#Ñ#×1Ñ1°$·)±)¸U¿Z¹ZÓHÐHr)c󦇇—ˆˆfd„}tj‰jj‰«|«}‰jj |«S)úGenerates matching file names.c󂕇—tˆfd„‰jD««ry‰j‰td«‰z«y)Nc3óT•K—|]}‰|k(xs‰j|dz«–—Œ!y­w)ó/N)Ú startswith)rörcrns €r'røz.changectx.walk..bad..s+øèø€ÐM¹}¸!�2˜‘7Ò5˜bŸm™m¨A°©HÓ5Ó5¹}ùsƒ%(sno such file in rev %s)ÚanyrxÚbadr)rnÚmsgr r%s` €€r'rŽzchangectx.walk..bads3ù€ôÓM¸t¿}º}ÓMÔMØØ �I‰I�bœ!Ð5Ó6¸Ñ=Õ >r))rÞÚbadmatchr#rûrFÚwalk)r%r rŽÚms`` r'r‘zchangectx.walk s@ù€õ ?ô × Ñ ˜dŸj™j×4Ñ4°UÓ;¸SÓ AˆØ�~‰~×"Ñ" 1Ó%Ð%r)có$—|j|«Sr!)r‘©r%r s r'Úmatcheszchangectx.matchess€Ø�y‰y˜ÓÐr)r©NNr)+r5rrrr(r r"Ú__bool__rr»rFÚpropertyr‡r³r©r6r8r1r2r¸rBr?r@rÇr3r r r4rZr]r_rŒrdrfrirmrqrKr~r†r‘r•Ú __classcell__©r s@r'rúrúòsø„ñõ .òò $ð€Hàñ<óð<ðñ(óð(ðñ@óð@ðñ-óð-ðñ  óð  ò  ò(ò$ò$ò%ò ò ò&ð&ó "óð "òD+òFò1ò%ò/ò4ò'òCòHòò*ò ò ó ó+òZIò &ö r)rúcóÄ—eZdZdZed„«Zed„«Zed„«Zed„«Zed„«Z d„Z e Z d„Z e je «Zd „Zd „Zd „Zd „Zd „Zd„Zed„«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'd!„Z(d"„Z)d#„Z*d$„Z+d%„Z,d&„Z-d'„Z.d(„Z/d)„Z0d*„Z1d+Z2d,„Z3d:d.„Z4d/„Z5d0„Z6d;d1„Z7d2„Z8d3„Z9d4„Z:d5„Z;d6„Zd9„Z?y-)>Ú basefilectxaPA filecontext object represents the common logic for its children: filectx: read-only access to a filerevision that is already present in the repo, workingfilectx: a filecontext that represents files from the working directory, memfilectx: a filecontext that represents files in-memory, cóL—|jj|j«Sr!)r#ÚfileÚ_pathr,s r'Ú_filelogzbasefilectx._filelog's€à�z‰z�‰˜tŸz™zÓ*Ð*r)cóî—d|jvr|jj«Sd|jvr|j|j«S|j j |j«S)NÚ _changectxÚ_descendantrev)r´r¢rXÚ_adjustlinkrevr£r ÚlinkrevÚ_filerevr,s r'Ú _changeidzbasefilectx._changeid+s_€à ˜4Ÿ=™=Ñ (Ø—?‘?×&Ñ&Ó(Ð (Ø  §¡Ñ .ð×&Ñ& t×':Ñ':Ó;Ð ;à—=‘=×(Ñ(¨¯©Ó7Ð 7r)có²—d|jvr%|jj|j«S|jj |j «S)NÚ_fileid)r´r Úlookupr©r¢rÂrŸr,s r'Ú _filenodezbasefilectx._filenode6s@€à ˜Ÿ ™ Ñ %Ø—=‘=×'Ñ'¨¯ © Ó5Ð 5à—?‘?×+Ñ+¨D¯J©JÓ7Ð 7r)cóL—|jj|j«Sr!)r rXr«r,s r'r¦zbasefilectx._filerev=s€à�}‰}× Ñ  §¡Ó0Ð0r)có—|jSr!©rŸr,s r'Ú _repopathzbasefilectx._repopathAs €à�z‰zÐr)cóP— |jy#tj$rYywxYw©NTF)r«r rÄr,s r'r"zbasefilectx.__nonzero__Es)€ð Ø �NŠNØøÜ× Ñ ò áð ús ‚ �%¤%cóš— d|j«|jfzS#tj$rd|j«zcYSwxYw)Ns%s@%ss%s@???)r¼r¢r rÄr,s r'r-zbasefilectx.__bytes__OsG€ð +ؘtŸy™y›{¨D¯O©OÐ<Ñ<Ð <øÜ× Ñ ò +ؘtŸy™y›{Ñ*Ò *ð +ús‚!¡&A Á A cóL—dt|«j›dt|«›d�Sr/r3r,s r'r7zbasefilectx.__repr__Wr8r)cóz— t|j|jf«S#t$rt |«cYSwxYwr!)rrŸr«r<rr,s r'r zbasefilectx.__hash__Zs7€ð ܘŸ™ T§^¡^Ð4Ó5Ð 5øÜò Ü�d“8ŠOð ús ‚ #£:¹:có¼— t|«t|«k(xr4|j|jk(xr|j|jk(S#t$rYywxYwr:)r4rŸr«r<r=s r'r?zbasefilectx.__eq__`sZ€ð ä�T“ œd 5›kÑ)ò6Ø—J‘J %§+¡+Ñ-ò6à—N‘N e§o¡oÑ5ð øô ò Ùð ús‚A AÁ AÁAcó—||k( Sr!rAr=s r'rBzbasefilectx.__ne__jrCr)có—|jSr!)r¦r,s r'Úfilerevzbasefilectx.filerevmó €Ø�}‰}Ðr)có—|jSr!)r«r,s r'rÂzbasefilectx.filenodepr…r)cóL—|jj|j«Sr!)r¢r¹rŸr,s r'Ú_flagszbasefilectx._flagsss€à�‰×$Ñ$ T§Z¡ZÓ0Ð0r)có—|jSr!)r¼r,s r'r¹zbasefilectx.flagswó €Ø�{‰{Ðr)có—|jSr!)r r,s r'rtzbasefilectx.filelogzr¹r)có—|jSr!)r§r,s r'rXzbasefilectx.rev}r…r)cóL—|jj|j«Sr!)r r¥r¦r,s r'r¥zbasefilectx.linkrev€s€Ø�}‰}×$Ñ$ T§]¡]Ó3Ð3r)có6—|jj«Sr!)r¢r+r,s r'r+zbasefilectx.nodeƒó€Ø�‰×#Ñ#Ó%Ð%r)có6—|jj«Sr!)r¢rr,s r'rzbasefilectx.hex†s€Ø�‰×"Ñ"Ó$Ð$r)có6—|jj«Sr!)r¢r1r,s r'r1zbasefilectx.user‰rÃr)có6—|jj«Sr!)r¢r2r,s r'r2zbasefilectx.dateŒrÃr)có6—|jj«Sr!)r¢r¸r,s r'r¸zbasefilectx.files�ó€Ø�‰×$Ñ$Ó&Ð&r)có6—|jj«Sr!)r¢r3r,s r'r3zbasefilectx.description’s€Ø�‰×*Ñ*Ó,Ð,r)có6—|jj«Sr!)r¢r r,s r'r zbasefilectx.branch•s€Ø�‰×%Ñ%Ó'Ð'r)có6—|jj«Sr!)r¢r4r,s r'r4zbasefilectx.extra˜rÈr)có6—|jj«Sr!)r¢rŒr,s r'rŒzbasefilectx.phase›rÈr)có6—|jj«Sr!)r¢r�r,s r'r�zbasefilectx.phasestržó€Ø�‰×'Ñ'Ó)Ð)r)có6—|jj«Sr!)r¢rr,s r'rzbasefilectx.obsolete¡rÎr)có6—|jj«Sr!)r¢r¦r,s r'r¦zbasefilectx.instabilities¤s€Ø�‰×,Ñ,Ó.Ð.r)có6—|jj«Sr!)r¢rQr,s r'rQzbasefilectx.manifest§rÎr)có—|jSr!)r¢r,s r'rúzbasefilectx.changectxªs €Ø�‰Ðr)có—|jSr!©Ú_copiedr,s r'Úrenamedzbasefilectx.renamed­ó €Ø�|‰|Ðr)có<—|jxr|jdSr¬rÔr,s r'Ú copysourcezbasefilectx.copysource°s€Ø�|‰|Ò/ § ¡ ¨Q¡Ð/r)có—|jSr!r"r,s r'r&zbasefilectx.repo³r�r)có4—t|j««Sr!)r°Údatar,s r'Úsizezbasefilectx.size¶rƒr)có—|jSr!r®r,s r'r¼zbasefilectx.path¹r�r)cóh— tj|j««S#t$rYywxYwr:)rÚbinaryrÜÚIOErrorr,s r'Úisbinaryzbasefilectx.isbinary¼s0€ð Ü×$Ñ$ T§Y¡Y£[Ó1Ð 1øÜò Ùð ús ‚"%¥ 1°1có&—d|j«vS)Nóx©r¹r,s r'Úisexeczbasefilectx.isexecÂó€Ø�t—z‘z“|Ð#Ð#r)có&—d|j«vS©Nólrår,s r'Úislinkzbasefilectx.islinkÅrçr)có—y)zÊwhether this filectx represents a file not in self._changectx This is mainly for merge code to detect change/delete conflicts. This is expected to be True for all subclasses of basectx.FrAr,s r'Úisabsentzbasefilectx.isabsentÈs€ð r)Fcó¬—|jr|j|«S|j€tjd«‚|j€¢|j j r4|jj|j|j««S|j«dz |j«k(r4|jj|j|j««S|j«|j«k(s|j«dk(r4|jj|j|j««Sy)úVcompare with other file context returns True if different than fctx. s;filectx.cmp() must be reimplemented if not backed by revlogérêT) Ú _customcmprbr«r ÚProgrammingErrorr#Ú_encodefilterpatsr rÜrÝr¹©r%Úfctxs r'rbzbasefilectx.cmpÑsù€ð �?Š?Ø—8‘8˜D“>Ð !à �>‰>Ð !Ü×(Ñ(ØNóð ð �>‰>Ð !Ø�z‰z×+Ò+à—}‘}×(Ñ(¨¯©¸¿¹»ÓEÐEð�y‰y‹{˜Q‰ $§)¡)£+Ò-ð—}‘}×(Ñ(¨¯©¸¿¹»ÓEÐEØ �9‰9‹;˜$Ÿ)™)›+Ò %¨¯©«¸Ò)=ð—=‘=×$Ñ$ T§^¡^°T·Y±Y³[ÓAÐ Aðr)Ncó~—|j}|j«j}|j}|j «}||k(r|St |dd«}d} |€;|jdj «D� cgc]} | j«‘Œ} } d}n|g} |€|j| ||¬«x}} ||vrƒ| €|j| ||¬«} |j} |j} | D]P}|�||kry|j|«}| |dvsŒ%| ||dj«j| «k(sŒN|cS|Scc} w)a|return the first ancestor of introducing If the linkrev of the file revision does not point to an ancestor of srcrev, we'll walk down the ancestors until we find one introducing this file revision. :srcrev: the changeset revision we search ancestors from :inclusive: if true, the src revision will also be checked :stoprev: an optional revision to stop the walk at. If no introduction of this file content could be found before this floor revision, the function will returns "None" and stops its iteration. Ú_ancestrycontextNT©Ú inclusiveér)r#r$r%rºr¥rrªrXrmr«rŸr(ÚreadfastrS)r%ÚsrcrevrùÚstoprevr&r/r½ÚlkrÚ memberancÚiterancÚpÚrevsÚfnoder¼rnÚacs r'r¤zbasefilectx._adjustlinkrevúsO€ð�z‰zˆØ �_‰_Ó × (Ñ (ˆØ×шà�l‰l‹nˆØ �SŠ=؈Jä˜DÐ"4°dÓ;ˆ ØˆØ ˆ>à%)§Z¡Z°Ñ%5×%=Ñ%=Ô%?Ó@Ñ%? �A—E‘E•GÐ%?ˆDÐ@؉Ià�8ˆDØ Ð Ø"$§,¡,¨t°SÀI ,Ó"NÐ NˆI˜à �iÑ ØˆØŸ,™, t¨S¸I˜,ÓF�Ø—N‘NˆEØ—:‘:ˆDÛ�ØÐ&¨1¨wª;ÙØ—W‘W˜Q“Z�ؘ2˜a™5’=ð  B q¡E¡ × 3Ñ 3Ó 5× 9Ñ 9¸$Ó ?Ó?Ø šððˆ ùò3AsÁ:D:có^—|j«|k\ry|j|¬«}|€y||k\S)zBTrue if a filectx has been introduced after a given floor revisionT©rýF)r¥Ú _introrev)r%Ú changelogrevÚintrorevs r'Úisintroducedafterzbasefilectx.isintroducedafter/s7€à �<‰<‹>˜\Ò )ØØ—>‘>¨,�>Ó7ˆØ Ð ØØ˜<Ñ'Ð'r)có"—|j«S)areturn the rev of the changeset which introduced this file revision This method is different from linkrev because it take into account the changeset the filectx was created from. It ensures the returned revision is one of its ancestors. This prevents bugs from 'linkrev-shadowing' when a file revision is used by multiple changesets. )rr,s r'r zbasefilectx.introrev8s€ð�~‰~ÓÐr)có—d}t|«}d|vr |j}nd|vr|jj«}|�|j |d|¬«Sd|vr(|j |j |¬«}|�||_|S|j «S)a? Same as `introrev` but, with an extra argument to limit changelog iteration range in some internal usecase. If `stoprev` is set, the `introrev` will not be searched past that `stoprev` revision and "None" might be returned. This is useful to limit the iteration range. Nr§r¢T)rùrýr£r)Úvarsr§r¢rXr¤r£r¥)r%rýÚtoprevÚattrsr s r'rzbasefilectx._introrevCsœ€ðˆÜ�T“ ˆØ ˜%Ñ à—^‘^‰FØ ˜UÑ "à—_‘_×(Ñ(Ó*ˆFà Ð Ø×&Ñ& v¸ÀwÐ&ÓOÐ OØ  Ñ &Ø×*Ñ*¨4×+>Ñ+>ÈÐ*ÓPˆHàÐ#Ø!)�”؈Oà—<‘<“>Ð !r)cóŽ—|j«}|j«|k(r|S|j|j«|¬«S)zzReturn filectx having identical contents, but pointing to the changeset revision where this filectx was introduced)Úchangeid)r rXrKrÂ)r%r s r'Ú introfilectxzbasefilectx.introfilectx`s;€ð—=‘=“?ˆØ �8‰8‹:˜Ò !؈KØ�|‰|˜DŸM™M›O°hˆ|Ó?Ð?r)có—t|j|||¬«}dt|«vs dt|«vr)|j«|_t |dd«|_|Sdt|«vr#|j|_t |dd«|_|S)z@create parent filectx keeping ancestry info for _adjustlinkrev()©rsrtr§r¢r÷Nr£)rKr#r rXr£rr÷)r%r¼rsrtrõs r'Ú_parentfilectxzbasefilectx._parentfilectxhs‰€ä�t—z‘z 4°ÀÔHˆØ œ$˜t›*Ñ $¨ ¼¸T» Ñ(Bð #'§(¡(£*ˆDÔ Ü$+¨DÐ2DÀdÓ$KˆDÔ !ð ˆ ð ¤ d£Ñ +à"&×"5Ñ"5ˆDÔ Ü$+¨DÐ2DÀdÓ$KˆDÔ !؈ r)c óø—|j}|j}|jj|j«}|D�cgc]*}||jj j k7r|||f‘Œ,}}|j|j«}|r7|jd|d|d|jj|d«f«|D��� cgc]\}}} |j||| «‘Œc} }}Scc}wcc} }}w©Nrr) rŸr rªr«r#r`rzrÖÚinsertržr) r%rŸÚflrªr+Úplrår¼rÚls r'rªzbasefilectx.parentsxs逨— ‘ ˆØ �]‰]ˆØ—-‘-×'Ñ'¨¯©Ó7ˆñ ó á�Ø�t—z‘z×/Ñ/×6Ñ6Ò6ð�D˜"Ò Øð ð ð �J‰J�t—~‘~Ó &ˆÙ ð �I‰I�a˜!˜A™$  !¡ d§j¡j§o¡o°a¸±dÓ&;Ð<Ô =áJLÕMÉ"¹¸¸eÀQ�×#Ñ# D¨%°Õ3È"ÓMÐMùò% ùô$Ns Á/C0à C5có(—|j«dSr¬)rªr,s r'r­zbasefilectx.p1�s€Ø�|‰|‹~˜aÑ Ð r)có¢—|j«}t|«dk(r|dSt|j|jd|j ¬«S)Nr¯réÿÿÿÿr)rªr°rKr#rŸr )r%rs r'r±zbasefilectx.p2“s>€Ø �L‰L‹NˆÜ ˆq‹6�QŠ;Ø�Q‘4ˆKÜ�t—z‘z 4§:¡:°bÀ$Ç-Á-ÔPÐPr)cóð‡‡‡ —tjˆfd„«Š ˆˆ fd„}‰j«}t|dd«€›‰jj «j }|j«€>|j|j«D�cgc]}|j«‘Œc}d¬«}n"|j|j«gd¬«}||_ tj||||¬«Scc}w)aDReturns a list of annotateline objects for each line in the file - line.fctx is the filectx of the node where that line was last changed - line.lineno is the line number at the first appearance in the managed file - line.text is the data on that line (including newline character) có:•—‰jj|«Sr!)r#rž)rkr%s €r'Úz&basefilectx.annotate..¡sø€¨T¯Z©Z¯_©_¸QÔ-?r)có•—|j|j«}‰s1|D�cgc]&}|j«|j«k(sŒ%|‘Œ(}}|D],}d|jvsŒ‰|j««|_Œ.|Scc}w)Nr )r§rªr¼r´r )r÷rrÚfollowÚgetlogs €€r'rªz%basefilectx.annotate..parents£syø€ð �KŠKØ—‘“ˆBñÙ!#Ó<¡˜A q§v¡v£x°1·6±6³8Ó';’a �Ð<ó�Ø! Q§Z¡ZÒ/Ù!'¨¯©«Ó!1�A•JððˆIùò=s ¤&BÁ Br÷NTrø)ÚskiprevsÚdiffopts) rÚ lrucachefuncrrr#r$r%rXrmrªr÷r Úannotate) r%r#r%r&rªÚbaser/rrr$s `` @r'r(zbasefilectx.annotate™sÙú€ô×"Ñ"Ó#?Ó@ˆõ ð*× Ñ Ó"ˆÜ �4Ð+¨TÓ 2Ð :ð—‘×&Ñ&Ó(×2Ñ2ˆBØ�x‰x‹zÐ!ð—\‘\Ø&*§l¡l¤nÓ5¡n �Q—U‘U•W nÑ5Àð"ó‘ð—\‘\ 4§8¡8£: ,¸$�\Ó?�Ø$&ˆDÔ !ä�~‰~Ø �' H°xô ð ùò 6sÂC3c#óÜK—i}|}|rd}nd} |j«d|D]%}|||j«|j«f<Œ'|sy|jt |««}|–—Œ]­wrz)rªr¥rÂÚpopÚmax)r%Ú followfirstÚvisitr5ÚcutÚparents r'rmzbasefilectx.ancestorsËsvèø€ØˆØ ˆÙ ؉CàˆCàØŸ)™)›+ d sÓ+�Ø?E��v—~‘~Ó'¨¯©Ó):Ð;Ò<ð,áØØ— ‘ œ#˜e›*Ó%ˆAØŠGð ùs‚A*A,cór—|jj|j«|j««S)z’Returns `data()` after running repository decoding filters. This is often equivalent to how the data would be expressed on disk. )r#Ú wwritedatar¼rÜr,s r'Ú decodeddatazbasefilectx.decodeddataÛs'€ð �z‰z×$Ñ$ T§Y¡Y£[°$·)±)³+Ó>Ð>r))FNr!)FNNr)@r5rrrrr r§r«r¦r¯r"r—r-r rrr7r r?rBr¸rÂr¼r¹rtrXr¥r+rr1r2r¸r3r r4rŒr�rr¦rQrúrÖrÙr&rÝr¼rârærërírñrbr¤r r rrrrªr­r±r(rmr3rAr)r'rœrœs—„ñðñ+óð+ðñ8óð8ðñ8óð8ð ñ1óð1ðñóðòð€Hò+ð !ˆh× Ñ  Ó+€Gò<òò ò#òòðñ1óð1òòòò4ò&ò%ò&ò&ò'ò-ò(ò'ò'ò*ò*ò/ò*òòò0òò òòò $ò$òð€Jò'óR3òj(ò  ó"ò:@òò Nò0!òQó 0 ódó ?r)rœcóf—eZdZdZ d d„Zed„«Zd d„Zd„Zd„Z d„Z d „Z ed „«Z d „Z y)rKz^A filecontext object makes access to data related to a particular filerevision convenient.Ncó�—||_||_|€|€|€ Jd|||fz«‚|�||_|�||_|�||_|�||_yy)z`changeid must be a revision number, if specified. fileid can be a file revision or node.Ns.bad args: changeid=%r, fileid=%r, changectx=%r)r#rŸr r§r¢r©)r%r&r¼rrsrtrús r'r(zfilectx.__init__çsƒ€ðˆŒ ؈Œ ð Ð  FÐ$6¸)Ð:Oð à <Ø Ø Ø ð@ ñ ó Ø Oð Ð Ø#ˆDŒMà Ð Ø%ˆDŒNØ Ð Ø'ˆDŒOØ Ð Ø!ˆD�Lð r)có¶— |j|jS#tj$r*|jj «|jcYSwxYwr!)r#r§r ÚFilteredRepoLookupErrorr$r,s r'r¢zfilectx._changectxsM€ð ;Ø—:‘:˜dŸn™nÑ-Ð -øÜ×,Ñ,ò ;ð"—:‘:×(Ñ(Ó*¨4¯>©>Ñ:Ò :ð# ;ús‚›:AÁAcó^—t|j|j||j|¬«S)zMopens an arbitrary revision of the file without opening a new filelog)rsrtr)rKr#rŸr )r%rsrs r'rKzfilectx.filectxs,€ôØ �J‰JØ �J‰JØØ—M‘MØô  ð r)cóL—|jj|j«Sr!)r Úrawdatar«r,s r'r:zfilectx.rawdata)s€Ø�}‰}×$Ñ$ T§^¡^Ó4Ð4r)cóL—|jj|j«S)zlow-level revlog flags)r r¹r¦r,s r'Úrawflagszfilectx.rawflags,s€à�}‰}×"Ñ" 4§=¡=Ó1Ð1r)cóP— |jj|j«S#tj$rk|j j jdd«dk(rYytjtd«t|j«ztd«¬«‚wxYw)Nscensorspolicysignorer)scensored node: %ss"set censor.policy to ignore errors)Úhint) r r(r«r ÚCensoredNodeErrorr#rwrGÚAbortrrr,s r'rÜz filectx.data0s†€ð Ø—=‘=×%Ñ% d§n¡nÓ5Ð 5øÜ×&Ñ&ò Ø�z‰z�}‰}×#Ñ# I¨yÓ9¸YÒFÙÜ—+‘+ÜÐ&Ó'¬%°·±Ó*?Ñ?ÜÐ<Ó=ôð ð ús‚$'§s¥€ð—-‘-×'Ñ'¨¯©Ó7ˆÙØà �8‰8‹:˜Ÿ™›Ò '؈Nà�y‰y‹{ˆØ—‘ˆØ—‘×(Ñ(Ö*ˆAð Ø˜AŸJ™J tÓ,Ò,Ùð-ð+ð ˆøô×$Ñ$ò Ùð úsÂB  B6Â5B6c óÌ—|jj|j«}|D�cgc]/}t|j|j ||j¬«‘Œ1c}Scc}w)Nr)r rir«rKr#rŸrjs r'rizfilectx.childrenXsX€à �M‰M× "Ñ " 4§>¡>Ó 2ˆñó á�ô �D—J‘J § ¡ °1¸d¿m¹mÖ LØñ ð ùò sª4A!)NNNNr!)r5rrrr(rr¢rKr:r<rÜrÝrÕrirAr)r'rKrKãsa„ñ ðØØØó"ð@ñ;óð;ó,  ò5ò2ò ò1ðñóðó2 r)rKcó8‡—eZdZdZ d!ˆfd„ Zd„Zd„Zeje«Z d„Z e Z e d„«Z e d„«Ze d„«Zd „Zd „Zd „Zd „Zd „Zd„Zd„Zd„Zd„Zd„ZeZeZeZd„Zd„Zd„Zd„Z d„Z!d„Z"d„Z#d„Z$d„Z%d„Z&d„Z'd„Z(d„Z)d"d „Z*ˆxZ+S)#Úcommittablectxz„A committablectx object provides common functionality for a context that wants the ability to commit, e.g. workingctx or memctx.c󌕗tt|� |«d|_d|_||_|rt j|«|_|r||_ |r||_ i|_ |r|j«|_ |�"tj|«|jd<|jjd«sd|jd<yy)NrQsdefault)rrFr(r;r€Ú_textrÚ parsedateÚ_dateÚ_userÚ_statusÚ_extrarër Ú fromlocalrS© r%r&Útextr1r2r4rçr r s €r'r(zcommittablectx.__init__es«ø€ô Œn˜dÑ,¨TÔ2؈Œ ؈Œ ؈Œ Ù Ü!×+Ñ+¨DÓ1ˆDŒJ٠؈DŒJÙ Ø"ˆDŒLàˆŒ Ù ØŸ*™*›,ˆDŒKØ Ð Ü%-×%7Ñ%7¸Ó%?ˆD�K‰K˜ Ñ "Ø�{‰{�‰˜yÔ)Ø%/ˆD�K‰K˜ Ò "ð*r)có8—t|jd«dzS)Nró+)Úbytesr©r,s r'r-zcommittablectx.__bytes__‚s€Ü�T—]‘] 1Ñ%Ó&¨Ñ-Ð-r)cóD—|jjjyr!©r#r`Úwdirhexr,s r'rzcommittablectx.hex…s€Ø � ‰ × Ñ ×(Ó(r)có—y©NTrAr,s r'r"zcommittablectx.__nonzero__Šó€Ør)có6—|jj«Sr!)r#rRr,s r'rLzcommittablectx._status�s€à�z‰z× Ñ Ó"Ð"r)cóJ—|jjj«Sr!)r#rwÚusernamer,s r'rKzcommittablectx._user“s€à�z‰z�}‰}×%Ñ%Ó'Ð'r)có‚—|jj}|jdd«}|€tj«}|S)Nsdevels default-date)r#rwÚ configdaterÚmakedate)r%rwr2s r'rJzcommittablectx._date—s7€à �Z‰Z�]‰]ˆØ�}‰}˜X Ó7ˆØ ˆ<Ü×$Ñ$Ó&ˆD؈ r)có—yr!rAr{s r'r}zcommittablectx.subrevŸrYr)có—yr!rAr,s r'r8zcommittablectx.manifestnode¢rYr)cóf—|jxs$|jjj«Sr!)rKr#rwr\r,s r'r1zcommittablectx.user¥s"€Ø�z‰zÒ5˜TŸZ™ZŸ]™]×3Ñ3Ó5Ð5r)có—|jSr!)rJr,s r'r2zcommittablectx.date¨r�r)có—|jSr!)rHr,s r'r3zcommittablectx.description«r�r)cóœ—t|jj|jjz|jjz«Sr!)rArLrirjrkr,s r'r¸zcommittablectx.files®s:€ÜØ �L‰L× !Ñ ! D§L¡L×$6Ñ$6Ñ 6¸¿¹×9MÑ9MÑ Mó ð r)có.—|jjSr!)rLrir,s r'rizcommittablectx.modified³s€Ø�|‰|×$Ñ$Ð$r)có.—|jjSr!)rLrjr,s r'rjzcommittablectx.added¶s€Ø�|‰|×!Ñ!Ð!r)có.—|jjSr!)rLrkr,s r'rkzcommittablectx.removed¹ó€Ø�|‰|×#Ñ#Ð#r)có.—|jjSr!)rLrYr,s r'rYzcommittablectx.deleted¼rir)cóF—tj|jd«SrP)r rRrMr,s r'r zcommittablectx.branchÃs€Ü×Ñ § ¡ ¨IÑ 6Ó7Ð7r)có—d|jvSrU©rMr,s r'r zcommittablectx.closesbranchÆs€Ø˜4Ÿ;™;Ð&Ð&r)có—|jSr!rmr,s r'r4zcommittablectx.extraÉr¾r)có—yr:rAr,s r'rfzcommittablectx.isinmemoryÌrgr)có—gSr!rAr,s r'rZzcommittablectx.tagsÏó€Øˆ r)cór—g}|j«D]!}|j|j««Œ#|Sr!)rªrþr])r%Úbrs r'r]zcommittablectx.bookmarksÒs.€Ø ˆØ—‘–ˆAØ �H‰H�Q—[‘[“]Õ #ð àˆr)có¶—tj|jj«}|j «D]}t ||j ««}Œ|Sr!)rÚnewcommitphaser#rwrªr,rŒ)r%rŒrs r'rŒzcommittablectx.phaseØsA€Ü×%Ñ% d§j¡j§m¡mÓ4ˆØ—‘–ˆAܘ˜qŸw™w›yÓ)‰Eð àˆ r)có—yr:rAr,s r'rdzcommittablectx.hiddenÞrgr)có—gSr!rAr,s r'rizcommittablectx.childrenárqr)có¶—d|jvr |jj|«S |j |«S#t$rYywxYw#t $rYywxYw)NrFr))r´rFr¹r¶Ú _flagfuncÚOSErrorrÁs r'r¹zcommittablectx.flagsäsc€Ø ˜$Ÿ-™-Ñ 'ð Ø—~‘~×+Ñ+¨DÓ1Ð1ð Ø—>‘> $Ó'Ð 'øô ò Ùð ûô ò Ùð ús �=¬A ½ A ÁA Á AÁAcó>—|jdj|«S)z1return the "best" ancestor context of self and c2r)r©r~)r%r€s r'r~zcommittablectx.ancestorðs€à�}‰}˜QÑ×(Ñ(¨Ó,Ð,r)c#óK—|jD]}|–—Œ|jjj|jD�cgc]}|j «‘Œc}«D]}|j|–—Œycc}w­wr!)r©r#r%rmrX)r%rrns r'rmzcommittablectx.ancestorsôsgèø€Ø—”ˆAØ‹Gðà—‘×%Ñ%×/Ñ/Ø"ŸmšmÓ ,™m˜ˆQ�U‰U�W˜mÑ ,ö ˆAð—*‘*˜Q‘-Ó ñ ùÚ ,ùs‚AA?ÁA:Á#A?có—y)aQPerform post-commit cleanup necessary after committing this ctx Specifically, this updates backing stores this working context wraps to reflect the fact that the changes reflected by this workingctx have been committed. For example, it marks modified and added files as normal in the dirstate. NrA)r%r+s r'Ú markcommittedzcommittablectx.markcommittedüs�r)có—yr:rA)r%ÚmissingÚmerger s r'Údirtyzcommittablectx.dirtyrgr))r)NNNNN©FTT),r5rrrr(r-rr rrr"r—rrLrKrJr}r8r1r2r3r¸rirjrkrYrBr?r@r r r4rfrZr]rŒrdrir¹r~rmr~r‚r™ršs@r'rFrFasø„ñ?ð Ø Ø ØØØõ0ò:.ò)ð!ˆh× Ñ  Ó+€Gòð€Hàñ#óð#ðñ(óð(ðñóðòòò6òòò ò %ò"ò$ò$ð€MØ€JØ€Lò8ò'òòòòò ò òò ò-ò ò ÷r)rFcó‡—eZdZdZ dˆfd„ Zd„Zd„Zd„Zed„«Z d d„Z ˆfd„Z d „Z ed „«Z d „Zd d „Zd!d „Zd"d„Zd"d„Zd„Z d#d„Zd„Zd„Zd„Zd$d„Zed„«Zed„«Zd„Zˆfd„Zd„Zd„Zd„Zd„Z d%d„Z!ˆxZ"S)&Ú workingctxayA workingctx object makes access to data related to the current working directory convenient. date - any valid date string or (unixtime, offset), or None. user - username string, or None. extra - a dictionary of extra values, or None. changes - a list of file lists as returned by localrepo.status() or None to use the repository status. c óÖ•—d}|rd|vr |jj«}t t|�#|||||||¬«y#t$rtjt d««‚wxYw)NrQsbranch name not in UTF-8!©r ) Údirstater ÚUnicodeDecodeErrorr r@rrr…r(rOs €r'r(zworkingctx.__init__syø€ðˆÙ˜ ¨Ñ.ð CØŸ™×-Ñ-Ó/�ô Œj˜$Ñ(Ø �$˜˜d E¨7¸6ð )õ øô&ò CÜ—k‘k¤!Ð$@Ó"AÓBÐBð Cús ‹AÁ(A(c#ó†K—|jj}|D]"}|j|«jsŒ|–—Œ$y­wr!©r#rˆÚ get_entryÚtracked)r%rmr÷s r'rOzworkingctx.__iter__!s5èø€Ø �J‰J× Ñ ˆÛˆAØ�{‰{˜1‹~×%Ó%Ø“ñùs ‚7AºAcó`—|jjj|«jSr!r‹rGs r'rIzworkingctx.__contains__'s#€Ø�z‰z×"Ñ"×,Ñ,¨SÓ1×9Ñ9Ð9r)cóB—|jjjSr!rUr,s r'rzworkingctx.hex*s€Ø�z‰z×'Ñ'×/Ñ/Ð/r)c ó^—|jjj«}|d|jjjk(r|dd}|jj «}|D�cgc]4}t |j|jj|«|d¬«‘Œ6c}Scc}w)NrrFr-) r#rˆrªr`rzr$rúr%rX)r%rÚunfirws r'r©zworkingctx._parents-sŸ€à �J‰J× Ñ × 'Ñ 'Ó )ˆØ ˆQ‰4�4—:‘:×+Ñ+×2Ñ2Ò 2Ø�#�2�ˆAà�z‰z×$Ñ$Ó&ˆñ ó  ñ�ô Ø— ‘ ˜DŸN™N×.Ñ.¨qÓ1°1ÀUö ðñ  ð ùò sÁ.9B*cóH—|€ |jjj}|jj}|j |j«5|j ||«}|j|}|r)|D]$}||vsŒ|||vsŒ|j |||«Œ&||jjjk(rKt|j«j««D]!\}}||vsŒ ||vsŒ|j d|«Œ#ddd«y#1swYyxYwr!) r#r`rzrˆÚchanging_parentsÚ setparentsrërAÚcopiesr^)r%Úp1nodeÚp2noderˆr•rÔr÷rcs r'r”zworkingctx.setparents;sô€Ø ˆ>Ø—Z‘Z×-Ñ-×4Ñ4ˆFØ—:‘:×&Ñ&ˆØ × &Ñ & t§z¡zÕ 2Ø×(Ñ(¨°Ó8ˆFØ—:‘:˜fÑ%ˆDÙó �AØ ’}¨°©°dÒ):Ø Ÿ ™  f¨Q¡i°Õ3ð 𘟙×1Ñ1×8Ñ8Ò8Ü" 8§?¡?Ó#4×#:Ñ#:Ó#<Ö=‘D�A�qØ ’}¨°$ªØ Ÿ ™  d¨AÕ.ð>÷3× 2Ñ 2ús%Á-DÂD A+DÃ6DÃ;DÄD!cóB•—|jtt|�|«Sr!)rFrr…r¿)r%r¼r s €r'r¿zworkingctx._fileinfoNsø€à �ŠÜ”Z Ñ0°Ó6Ð6r)có|‡‡‡‡ ‡ —|jjj«jŠ|j «}t |«dkr|dj «Š ˆˆ fd„}|S|\}}|j|«}|j «|j «|j «cŠŠŠ ˆˆˆˆ fd„}|S)Nr¯rcó8•—‰||«}‰j|«Sr!rå)r÷Ú copiesgetÚmans €€r'Úfuncz'workingctx._buildflagfunc..func]sø€Ù˜a “O�Ø—y‘y “|Ð#r)c󨕗‰||«}‰j|«‰j|«‰j|«}}}||k(r|S||k(r|S||k(r|Sy©Nr)rå)r÷Úfl1Úfl2Úflar›Úm1Úm2Úmas €€€€r'r�z'workingctx._buildflagfunc..funchsZø€Ù˜a “O�Ø "§¡¨£ ¨R¯X©X°a«[¸"¿(¹(À1»+˜#�S�ؘ#’:Ø�Jؘ#’:Ø�Jؘ#’:Ø�JØr))r#rˆr•rSrªr°rQr~) r%rªr�r­r±Úpar›r£r¤r¥rœs @@@@@r'Ú_buildflagfunczworkingctx._buildflagfuncSs�ü€ð—J‘J×'Ñ'×.Ñ.Ó0×4Ñ4ˆ Ø—,‘,“.ˆÜ ˆw‹<˜!Ò à˜!‘*×%Ñ%Ó'ˆCõ $ð,ˆ ð‰FˆB�Ø—‘˜R“ˆBØŸ™›¨¯ © « °r·{±{³}ˆJˆB��B÷ ðˆ r)có`—|jjj|j«Sr!)r#rˆÚflagfuncr§r,s r'ryzworkingctx._flagfuncus#€à�z‰z×"Ñ"×+Ñ+¨D×,?Ñ,?Ó@Ð@r)cóD— |j|«S#t$rYywxYwrŸ)ryrzrÁs r'r¹zworkingctx.flagsys(€ð Ø—>‘> $Ó'Ð 'øÜò Ùð ús ‚“ žcó4—t|j|||¬«S)z-get a file context from the working directory)r…rt)Úworkingfilectxr#©r%r¼rts r'rKzworkingctx.filectxs€äØ �J‰J˜¨°wô ð r)có¦—t|j«D]%}|j|«j|¬«sŒ%y|xr|j «xs|xr/|j «|j «j «k7xsJ|j«xs8|j«xs&|j«xs|xr|j«S)z-check whether a working directory is modified)r€T) rArxrÑr‚r±r r­rirjrkrY)r%r€r�r rcs r'r‚zworkingctx.dirty…s²€ô˜Ÿ ™ Ö&ˆAØ�x‰x˜‹{× Ñ ¨Ð Õ1Ùð'ð Ò �t—w‘w“yò ,ØÒ>˜4Ÿ;™;›=¨D¯G©G«I×,<Ñ,<Ó,>Ñ>ò ,à�}‰}‹ò ,ð�z‰z‹|ò ,ð�|‰|‹~ò  ,ð Ò*˜DŸL™L›Nð  r)c ó4‡‡ —|jj«5|jj|jjc}Š ˆ ˆfd„}g}|jjj }|D�]F}t j|tjj‰|«« ||«}|jdd«} | dk7rE|j | kDr6|jtd«|d|j zdz||«fz«t#j$|j&«sUt#j(|j&«s6|jtd «||«z«|j|«�Œ‰ j+|«r�Œ$|jtd «||«z«�ŒI|cddd«S#t$r8|jtd«||«z«|j|«Y�Œ•wxYw#1swYyxYw) NcóN•—‰jtj‰|««Sr!©Úpathtorr©r÷ÚdsÚprefixs €€r'r!z workingctx.add..˜óø€˜rŸy™y¬¯©°v¸qÓ)AÔBr)ó%s does not exist! suislarge-file-limitrso%s: up to %d MB of RAM may be required to manage this file (use 'hg revert %s' to cancel the pending addition) rúi@Bs:%s not added: only files and symlinks supported currently s%s already tracked! )r#ÚwlockrwrˆÚwvfsÚlstatrÚ checkportableÚosr¼rrzr�rr_Ú configbytesÚst_sizeÚstatÚS_ISREGÚst_modeÚS_ISLNKÚ set_tracked) r%ÚlistrµrwÚuipathÚrejectedrºr÷ÚstÚlimitr´s ` @r'Úaddzworkingctx.add•s¸ù€Ø �Z‰Z× Ñ Õ Ø—Z‘Z—]‘] D§J¡J×$7Ñ$7ˆFˆB�ÜBˆF؈HØ—J‘J—O‘O×)Ñ)ˆEÜ�ô×%Ñ% b¬"¯'©'¯,©,°v¸qÓ*AÔBðÙ˜q›�Bð Ÿ™ uÐ.AÓB�ؘA’: "§*¡*¨uÒ"4Ø—G‘GÜð3óð ˜a "§*¡*™n°Ñ7¹À»ÐCñ DôôŸ ™  R§Z¡ZÔ0´D·L±LÀÇÁÔ4LØ—G‘GÜð5óñ! ›)ñ $ôð—O‘O AÖ&ØŸ™¨Ö*Ø—G‘GœAÐ6Ó7¹&À»)ÑCÖDðAðB÷M Ñ øôòØ—G‘GœAÐ5Ó6¹À»ÑBÔCØ—O‘O AÔ&Úðú÷ Ð ús7�BHÂ.G Â6C!HÆ'HÇ =H ÈHÈ H È HÈHcóh‡‡—|jj«5|jjŠˆˆfd„}g}|D]\}‰j|«rŒ|jjj t d«||«z«|j|«Œ^|cddd«S#1swYyxYw)NcóN•—‰jtj‰|««Sr!r±r³s €€r'r!z#workingctx.forget..Ár¶r)s%s not tracked! )r#r¸rˆÚ set_untrackedrwr�rr_)r%r¸rµrÅrÆr÷r´s ` @r'Úforgetzworkingctx.forget¾s†ù€Ø �Z‰Z× Ñ Õ Ø—‘×$Ñ$ˆBÜBˆF؈HÛ�Ø×'Ñ'¨Õ*Ø—J‘J—M‘M×&Ñ&¤qÐ)=Ó'>ÁÈÃÑ'JÔKØ—O‘O AÕ&ðð÷ × Ò ús�5B(ÁA B(Â(B1có — |jjj|«}tj|j«sttj|j«sU|jjj t d«|jjj|«z«y|jj«5|jj}|j|«|j||«ddd«y#t$rW|jjj t d«|jjj|«z«YywxYw#1swYyxYw)Nr·s1copy failed: %s is not a file or a symbolic link )r#r¹rºÚFileNotFoundErrorrwr�rrˆr²r¿rÀrÁrÂr¸rÃrë)r%rJÚdestrÇr´s r'rëzworkingctx.copyÉs€ð Ø—‘—‘×&Ñ& tÓ,ˆBô — ‘ ˜RŸZ™ZÔ(¬D¯L©L¸¿¹Ô,DØ �J‰J�M‰M× Ñ ÜÐGÓHØ—*‘*×%Ñ%×,Ñ,¨TÓ2ñ3õ ð —‘×!Ñ!Õ#Ø—Z‘Z×(Ñ(�Ø—‘˜tÔ$Ø—‘˜ Ô%÷$Ð#øô!ò Ø �J‰J�M‰M× Ñ ÜÐ)Ó*¨T¯Z©Z×-@Ñ-@×-GÑ-GÈÓ-MÑMô ñ ð  ú÷$Ð#ús‚%DÃ:E:ÄAE7Å6E7Å:Fc óæ—|j}|s|j«}tj|j« } t j |j||||||j|||| ¬« S)N)rÚrÛrÜr’Úicasefs)r#rÝrÚfscasesensitiverßrÞr rÚ) r%rárârãrärÜr’r“rårÒs r'r zworkingctx.matchÜsn€ð �J‰JˆÙØ—(‘(“*ˆCô×*Ñ*¨1¯6©6Ó2Ð2ˆÜ�~‰~Ø �F‰FØ Ø Ø Ø Ø Ø—I‘IØØ%ØØô  ð r)cóz—|r |jjjr|Sg}|D]�}|j|«dk(rh||j «}|dk(s't |«dk\sd|vst j|«r)|jjjd|z«Œ|j|«Œ‘|S)Nrêr)ió s*ignoring suspect symlink placeholder "%s" ) r#rˆÚ _checklinkr¹rÜr°rràrwÚdebugr_)r%r¸Úsaner÷rms r'Ú_filtersuspectsymlinkz workingctx._filtersuspectsymlinkûs¨€Ù˜Ÿ ™ ×+Ñ+×6Ò6؈Lð ˆÛˆAØ�z‰z˜!‹} Ò$ؘ‘G—L‘L“N�à˜’Hܘ1“v ’~Ø ‘zÜ!×(Ñ(¨Ô+à—J‘J—M‘M×'Ñ'ØFÈÑJôðØ �K‰K˜�Nððˆ r)có\—|sggggfSg}g}g}g}|jd}t|«D]Ô} ||vs:|j|«|j|«k7s||j||«r|j |«n�|€|j |«nm||j «} | j } | j} tj| |«} | �| | | f} |j || f«n|j |«ŒÖ||||fS#ttf$r|j |«YŒÿwxYwr¬) r©rAr¹rbr_rºrÁr¾rÚreliable_mtime_ofrárz)r%r¸Úmtime_boundaryrirYrWÚfixuprÔr÷rcÚmoderÝÚ file_mtimeÚ cache_infos r'Ú _checklookupzworkingctx._checklookups0€áØ�r˜2˜r�>Ð !àˆØˆØˆØˆØ�}‰}˜Qш䘖ˆAð "ð˜T‘MØ—z‘z !“}¨¯ © °1« Ò5ؘA‘w—{‘{ 4¨¡7Ô+à—O‘O AÕ&Ø#Ð+Ø—L‘L •Oà˜Q™Ÿ ™ ›�AØŸ9™9�DØŸ9™9�DÜ!*×!<Ñ!<¸QÀÓ!O�JØ!Ð-Ø&*¨D°*Ð%=˜ ØŸ ™  a¨ _Õ5àŸ ™  Qœøð+ð>˜ %¨Ð.Ð.øôœWÐ%ò "𗑘qÖ!ð "ús¯CDÄ D+Ä*D+có‡ —tj|jjd«|jjŠ |jj «}|r1‰ j rˆ fd„}n ‰ j}|D]\}}|||«Œ|s |jjjrÛ ‰ j}|jjd«5|jj‰ usJ‚‰ j}|r,|jj«} ‰ j| «n)|r'd} |jjj| «|r|D] } | ||«Œ ddd«|jj!«yy#1swYŒ%xYw#tj$r‰ j«YŒMwxYw#|jj!«wxYw)z1update dirstate for files that are actually cleansstatus.pre-dirstate-write-filecó,•—‰j|dd¬«S)NT©Ú p1_trackedÚ wc_tracked)Ú update_file)r÷Úpfdrˆs €r'r!z-workingctx._poststatusfixup..Gsø€¨×(<Ñ(<ØØ#Ø#ð)=ô)r)Fs*skip updating dirstate: identity mismatch N)rÚ wait_on_cfgr#rwrˆÚ postdsstatusÚis_changing_parentsÚ set_cleanÚ_dirtyr¸ÚcurrenttransactionÚwriter×r Ú LockErrorÚ invalidateÚclearpostdsstatus) r%rRrÝÚ poststatusÚnormalr÷ÚpdfÚ pre_dirtyÚ post_dirtyÚtrr’Úpsrˆs @r'Ú_poststatusfixupzworkingctx._poststatusfixup@s}ø€ä×јDŸJ™JŸM™MÐ+LÔMØ—:‘:×&Ñ&ˆØ—Z‘Z×,Ñ,Ó.ˆ Ù Ø×+Ò+ó‘ð "×+Ñ+�Û‘��3Ù�q˜#•ð á ˜Ÿ™×,Ñ,×3Ò3ð /ð %ŸO™O� Ø—Z‘Z×%Ñ% eÕ,ØŸ:™:×.Ñ.°(Ñ:Ð:Ð:Ø!)§¡�JÙ!Ø!ŸZ™Z×:Ñ:Ó<˜Ø Ÿ™ rÕ*Ù"ðK˜ØŸ ™ Ÿ ™ ×+Ñ+¨AÔ.Ù!Û",˜BÙ˜t VÕ,ð#-÷-ð$— ‘ ×,Ñ,Õ.ð34÷-Ð,ûô—?‘?ò &Ø×#Ñ#Ö%ð &ûð— ‘ ×,Ñ,Õ.ús=Â2'FÃBF Å)FÆ FÆFÆ#F?Æ<GÆ>F?Æ?GÇGc óV—g}d|vrt|j«}|jj}|j |j«5|j |||||¬«\}}} g} |r’|j || «\} } } } |jj| «|jj| «| r|r|jj| «| r$|r"|jjd„| D««|j|| «ddd«|j«rujs|js |jrJtj |j|j |j"|jggg«|_|S||_S#1swYŒ�xYw)z7Gets the status from the dirstate -- internal use only.s.hgsub)r[rWrZc3ó&K—|] \}}|–—Œ y­wr!rA)rör÷rs r'røz-workingctx._dirstatestatus..‚sèø€Ð#8±%©$¨!¨Q¤A±%ùs‚N)rArxr#rˆÚrunning_statusrRrárirþrYrWrúÚalwaysrZr[rrjrkrL)r%r r[rWrZÚsubreposrˆrbrcrÜrÝÚ modified2Údeleted2Ú clean_sets r'Ú_dirstatestatuszworkingctx._dirstatestatusksa€àˆØ ˜Ñ ܘdŸm™mÓ,ˆHØ—:‘:×&Ñ&ˆØ × $Ñ $ T§Z¡ZÕ 0Ø%-§_¡_Ø�x¨¸Àwð&5ó&Ñ "ˆC��Nð ˆEÙØ8<×8IÑ8Iؘó9Ñ5� ˜8 Y°ð— ‘ ×!Ñ! )Ô,Ø— ‘ × Ñ  Ô*á¡Ø—G‘G—N‘N 9Ô-Ù™UØ—G‘G—N‘NÑ#8±%Ó#8Ô9à × !Ñ ! ! UÔ +÷'1ð* �<‰<Œ>à�yŠy˜AŸIšI¨¯ªä&Ÿ~™~Ø—J‘J §¡¨¯©°A·I±I¸rÀ2Àró �” ð ˆð !�” àˆ÷?1Ð 0ús Á CFÆF(có*—i}i}|jjj«}|j|dj«}|j|dj«}t |j ««t |j ««z}|jj«}|jjj«j«D]&\}} ||vs||«sŒ| |vr| ||<Œ| |vsŒ"| ||<Œ(||fSr) r#rˆrªrQr\rjrirûr•r^) r%rÊrÍrªÚ p1manifestÚ p2manifestÚ changedsetrûÚdstÚsrcs r'rÇzworkingctx._copies’s÷€àˆØˆØ—*‘*×%Ñ%×-Ñ-Ó/ˆØ—Z‘Z ¨¡ Ñ+×4Ñ4Ó6ˆ Ø—Z‘Z ¨¡ Ñ+×4Ñ4Ó6ˆ ܘŸ™›Ó&¬¨T¯]©]«_Ó)=Ñ=ˆ Ø—j‘j×,Ñ,Ó.ˆ ØŸ ™ ×+Ñ+×2Ñ2Ó4×:Ñ:Ö<‰HˆC�ؘ*Ñ$©K¸Ô,<ØØ�jÑ Ø #�˜’ ؘ Ò"Ø #�˜’ ð =ð˜Ð!Ð!r)có8—|j|j«S)aLgenerate a manifest corresponding to the values in self._status This reuse the file nodeid from parent, but we use special node identifiers for added and modified files. This is used by manifests merge to see that files are different and by update logic to avoid deleting newly added files. )rSrLr,s r'rFzworkingctx._manifest¤s€ð×(Ñ(¨¯©Ó6Ð6r)cóô—|j«}|dj«j«}|j}|jj j |jf|jj j|jffD]*\}}|D] }|||< |j|||««Œ"Œ,|j|jzD] }||vsŒ||=Œ |S#t$rYŒXwxYw)z9Builds a manifest that includes the given status results.r)rªrQrëryr#r`Ú addednodeidrjÚmodifiednodeidriÚsetflagrzrYrk)r%rRrªrœÚffÚirr÷s r'rSzworkingctx._buildstatusmanifest¯sç€à—,‘,“.ˆà�a‰j×!Ñ!Ó#×(Ñ(Ó*ˆà �^‰^ˆà �Z‰Z× %Ñ %× 1Ñ 1°6·<±<Ð @Ø �Z‰Z× %Ñ %× 4Ñ 4°f·o±oÐ Fó ‰DˆAˆqó�Ø��A‘ðØ—K‘K ¡2 a£5Õ)ñð  ð—‘ &§.¡.Ô0ˆAØ�CŠxؘ‘Fð1ðˆ øôòÙðúsÂ'C+Ã+ C7Ã6C7cóÔ•—|j||||«}|j|j«|jdd||jdk7rtt |�||||||«}|S)aCbuild a status with respect to another context This includes logic for maintaining the fast path of status when comparing the working directory against its parent, which is to skip building a new manifest if self (working directory) is not comparing against its parent (repo['.']). Nó.)rrÙrir#rr…rt)r%r>rcr rdrerfr s €r'rtzworkingctx._buildstatusÇsoø€ð × Ñ  ¨ °YÀ Ó Lˆð×2Ñ2°1·:±:Ó>ˆ� ‰ ‘1ˆ Ø �D—J‘J˜tÑ$Ò $Ü”j $Ñ4Ø�q˜% ¨i¸óˆAðˆr)cóH‡‡—‰‰jdk7r ˆˆfd„}||_|S)a“override the match method with a filter for directory patterns We use inheritance to customize the match.bad method only in cases of workingctx since it belongs only to the working directory when comparing against the parent changeset. If we aren't comparing against the working directory's parent, then we just use the default match object sent to us. rcóΕ—|‰vr`‰j|«sN‰jjjd‰jjj |«|fz«yyy)Ns%s: %s )ròr#rwr�rˆr²)r÷r�r>r%s €€r'rŽz$workingctx._matchstatus..badèsUø€ð˜E‘>¨%¯,©,°q¬/Ø—J‘J—M‘M×&Ñ&Ø# t§z¡z×':Ñ':×'AÑ'AÀ!Ó'DÀcÐ&JÑJõð+:�>r))r#rŽ)r%r>r rŽs`` r'rUzworkingctx._matchstatusÜs)ù€ð �D—J‘J˜tÑ$Ò $õ ðˆEŒI؈ r)có¾—t|jjj|jj |«t|j «dd¬««S)rˆTF)rÿrZr[)rAr#rˆr‘rûrxr”s r'r‘zworkingctx.walkósP€äØ �J‰J× Ñ × $Ñ $Ø— ‘ ×&Ñ& uÓ-Ü § ¡ Ó.ØØð %ó ó ð r)c󬇗|jj|«}|jjŠtˆfd„‰j |«D««S)Nc3óZ•K—|]"}‰j|«jsŒ|–—Œ$y­wr!)rŒr�)rör÷r´s €r'røz%workingctx.matches..s$øèø€ÐNÑ!2˜A°b·l±lÀ1³o×6MÓ6M”aÑ!2ùsƒ +¤+)r#rûrˆrAr•)r%r r´s @r'r•zworkingctx.matchesþs@ø€Ø— ‘ ×&Ñ& uÓ-ˆØ �Z‰Z× Ñ ˆÜÓN §¡¨EÔ!2ÓNÓNÐNr)cóÚ—|jjj|j«5|j«|j «zD]*}|jjj |dd¬«Œ,|j «D]*}|jjj |dd¬«Œ,|jjj|«|jj«tj|j|«ddd«|jjj|jj««y#1swYŒGxYw)NTräF) r#rˆr“rirjrçrkr”Ú!_quick_access_changeid_invalidaterÚ aftercommitrïrî)r%r+r÷s r'r~zworkingctx.markcommitteds€Ø �Z‰Z× Ñ × 1Ñ 1°$·*±*Õ =Ø—]‘]“_ t§z¡z£|Ô3�Ø— ‘ ×#Ñ#×/Ñ/Ø $°4ð0õð4ð—\‘\–^�Ø— ‘ ×#Ñ#×/Ñ/Ø %°Eð0õð$ð �J‰J× Ñ × *Ñ *¨4Ô 0Ø �J‰J× 8Ñ 8Ô :ä × Ñ ˜tŸz™z¨4Ô 0÷>ð" � ‰ ×Ñ×!Ñ! $§*¡*×"?Ñ"?Ó"AÕB÷#>Ð =ús °C+E!Å!E*cóª—|r)tjj|j«Stjj |j«Sr!)Ú mergestatemodrrWr#r(r s r'rzworkingctx.mergestates;€Ù Ü ×+Ñ+×1Ñ1°$·*±*Ó=Ð =Ü×'Ñ'×,Ñ,¨T¯Z©ZÓ8Ð8r))r)NNNNr!rƒ©r)r©FFFr)#r5rrrr(rOrIrrr©r”r¿r§ryr¹rKr‚rÉrÍrër rÙrárúrrÇrFrSrtrUr‘r•r~rr™ršs@r'r…r… süø„ñðIMõ  òò :ò0ðñ  óð  ó/ô&7ò ðDñAóðAòó  ó  ó 'óR ò&ð*ØØØØØØ ó ò>ò2*/òX)/óV%ðNñ"óð"ð"ñ7óð7òô0ò*ò.  òOò C÷(9r)r…có:—eZdZdZd d„Zd„ZeZd„Zd„Zd„Z d„Z y) ÚcommittablefilectxzŽA committablefilectx provides common functionality for a file context that wants the ability to commit, e.g. workingfilectx or memfilectx.Ncóp—||_||_d|_dx|_|_|�||_|r||_yyr!)r#rŸr§r¦r«r r¢)r%r&r¼rtrÛs r'r(zcommittablefilectx.__init__!sA€ØˆŒ ؈Œ ؈ŒØ)-Ð-ˆŒ ˜œà Ð Ø#ˆDŒMÙ Ø!ˆD�Oð r)có—yrXrAr,s r'r"zcommittablefilectx.__nonzero__,rYr)có"—|j«Sr!)rXr,s r'r¥zcommittablefilectx.linkrev1s€à�x‰x‹zÐr)cóΗ|j«}|sy||jjdjj ||j j j«fSr¬)rÙr¢r©rFrSr#r`rzrÁs r'rÖzcommittablefilectx.renamed5sY€Ø�‰Ó ˆÙØà Ø �O‰O× $Ñ $ QÑ '× 1Ñ 1× 5Ñ 5Ø�d—j‘j×.Ñ.×5Ñ5ó ð ð r)c 󮇗ˆfd„}‰j}‰j}‰jj}‰j «}|r|dzg}n|||d|«|fg}|ddD]}|j ||||«|f«Œ|D�� � cgc]=\}} } | ‰j jjk7r‰j|| | ¬«‘Œ?c} } }Scc} } }w)z5return parent filectxs, following copies if necessarycóx•—|jj|‰jjj«Sr!)rFrSr#r`rz)rÛr¼r%s €r'rÂz,committablefilectx.parents..filenodeCs*ø€Ø—=‘=×$Ñ$ T¨4¯:©:×+CÑ+C×+JÑ+JÓKÐ Kr)r!rrNr) rŸr r¢r©rÖr_r#r`rzr) r%rÂr¼rÚpclrÖrÚpcrrwrs ` r'rªzcommittablefilectx.parents@sâø€ô Lð�z‰zˆØ �]‰]ˆØ�o‰o×&Ñ&ˆØ—,‘,“.ˆá ؘGÑ#Ð$‰Bà™ # a¡&¨$Ó/°Ð4Ð5ˆBà�a�b“'ˆBØ �I‰I�t™X b¨$Ó/°Ð4Õ 5ðñ õ á‘��1�aØ�D—J‘J×,Ñ,×3Ñ3Ò3ð × Ñ  ¨!°QÐ Õ 7Øó ð ùô s ACcó—gSr!rAr,s r'rizcommittablefilectx.childrenYrqr)r–) r5rrrr(r"r—r¥rÖrªrirAr)r'r r s-„ñLó "òð€Hòò  ò ó2r)r c󌇗eZdZdZdˆfd„ Zed„«Zd„Zd„Zd„Z d„Z d„Z d „Z d „Z d „Zd „Zdd „Zdd„Zd„Zd„Zd„ZˆxZS)r¬zrA workingfilectx object makes access to data related to a particular file in the working directory convenient.có2•—tt|� ||||«yr!)rr¬r()r%r&r¼rtr…r s €r'r(zworkingfilectx.__init__asø€Ü Œn˜dÑ,¨T°4¸À*ÕMr)có,—t|j«Sr!)r…r#r,s r'r¢zworkingfilectx._changectxds€ä˜$Ÿ*™*Ó%Ð%r)cóL—|jj|j«Sr!)r#ÚwreadrŸr,s r'rÜzworkingfilectx.datahs€Ø�z‰z×Ñ § ¡ Ó+Ð+r)có`—|jjj|j«Sr!)r#rˆÚcopiedrŸr,s r'rÙzworkingfilectx.copysourceks!€Ø�z‰z×"Ñ"×)Ñ)¨$¯*©*Ó5Ð5r)cót—|jjj|j«jSr!)r#r¹rºrŸr¾r,s r'rÝzworkingfilectx.sizens%€Ø�z‰z�‰×$Ñ$ T§Z¡ZÓ0×8Ñ8Ð8r)có`—|jjj|j«Sr!)r#r¹rºrŸr,s r'rºzworkingfilectx.lstatqó€Ø�z‰z�‰×$Ñ$ T§Z¡ZÓ0Ð0r)cóè—|jj«\}} |jjj |j «t j|fS#t$r||fcYSwxYwr!) r¢r2r#r¹rºrŸr¿ÚST_MTIMErÏ)r%ÚtÚtzs r'r2zworkingfilectx.datets`€Ø—‘×$Ñ$Ó&‰ˆˆ2ð Ø—J‘J—O‘O×)Ñ)¨$¯*©*Ó5´d·m±mÑDÀbÐIÐ IøÜ ò Ø�r�7ŠNð úsŸAA!Á! A1Á0A1có`—|jjj|j«Sr!)r#r¹ÚexistsrŸr,s r'r9zworkingfilectx.exists{s€Ø�z‰z�‰×%Ñ% d§j¡jÓ1Ð1r)có`—|jjj|j«Sr!)r#r¹ÚlexistsrŸr,s r'r;zworkingfilectx.lexists~s€Ø�z‰z�‰×&Ñ& t§z¡zÓ2Ð2r)có`—|jjj|j«Sr!)r#r¹ÚauditrŸr,s r'r=zworkingfilectx.audit�r3r)có$—|j|«S)rï)rbrôs r'rbzworkingfilectx.cmp„s€ð�x‰x˜‹~Ðr)có´—|jjjdd«}|jjj |j ||¬«y)ú+wraps unlink for a repo's working directoryrEsremoveemptydirs)Ú ignoremissingÚrmdirN)r#rwÚ configboolr¹Ú unlinkpathrŸ)r%rArBs r'Úremovezworkingfilectx.remove�sC€à— ‘ — ‘ ×(Ñ(¨Ð:LÓMˆØ � ‰ �‰×"Ñ"Ø �J‰J m¸5ð #õ r)c óX—|jj|j||fd|i|¤ŽS)úwraps repo.wwriteÚbackgroundclose)r#ÚwwriterŸ©r%rÜr¹rHÚkwargss r'rïzworkingfilectx.write”s6€à ˆt�z‰z× Ñ Ø �J‰J˜˜eñ Ø5Dð ØHNñ ð r)cód—|jjj||j«y)zmarks this file a copy of `src`N)r#rˆrërŸ)r%r s r'Ú markcopiedzworkingfilectx.markcopiedšs €à � ‰ ×Ñ× Ñ   d§j¡jÕ1r)có,—|jj}|j}|j|«|jjj dd«r†|j |«r$|j|«s|j|d¬«tttj|«««D]&}|j|«sŒ|j|«yy|j |«r$|j|«s|j|«yyy)zsRemoves conflicting items in the working directory so that ``write()`` can be called successfully. rEsmerge.checkpathconflictsT)ÚforciblyN)r#r¹rŸr=rwrCÚisdirrëÚrmtreerrÄrÚfinddirsÚ isfileorlinkÚunlinkÚ removedirs)r%r¹r÷rs r'Ú clearunknownzworkingfilectx.clearunknownžsÍ€ð�z‰z�‰ˆØ �J‰JˆØ � ‰ �1Œ Ø �:‰:�=‰=× #Ñ #Ø Ð8ô ð �z‰z˜!Œ} T§[¡[°¤^Ø— ‘ ˜A¨� Ô-Üœd¤8×#4Ñ#4°QÓ#7Ó8Ö9�Ø×$Ñ$ QÕ'Ø—K‘K ”NÙñ:ð �z‰z˜!Œ} T§[¡[°¤^Ø—‘ Õ"ð&4ˆ}r)cóf—|jjj|j||«yr!)r#r¹ÚsetflagsrŸ)r%rrks r'rXzworkingfilectx.setflagsµs €Ø � ‰ �‰× Ñ  §¡¨Q°Õ2r)r–r)r5rrrr(rr¢rÜrÙrÝrºr2r9r;r=rbrErïrMrVrXr™ršs@r'r¬r¬]shø„ñ1õNðñ&óð&ò,ò6ò9ò1òò2ò3ò1òó ó ò 2ò#ö.3r)r¬có‡—eZdZdZˆfd„Zd„Zd$d„Zd„Zed„«Z ed„«Z d„Z d „Z d „Z d „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd%d„Zd„Zd„Zd„Zd„Zd„Z d&d„Zd„Z d„Z!d„Z"d „Z# d'd!„Z$d$d"„Z%d(d#„Z&ˆxZ'S))Úoverlayworkingctxa™Wraps another mutable context with a write-back cache that can be converted into a commit context. self._cache[path] maps to a dict with keys: { 'exists': bool? 'date': date? 'data': str? 'flags': str? 'copied': str? (path or None) } If `exists` is True, `flags` must be non-None and 'date' is non-None. If it is `False`, the file was deleted. cóL•—tt|� |«|j«yr!)rrZr(rW)r%r&r s €r'r(zoverlayworkingctx.__init__Èsø€Ü Ô Ñ/°Ô5Ø � ‰ � r)cóN—||_|g|_tj|d«y)Nó _manifest)Ú _wrappedctxr©rÚclearcachedproperty)r%Ú wrappedctxs r'Úsetbasezoverlayworkingctx.setbaseÌs%€Ø%ˆÔØ#˜ ˆŒ ô × Ñ   |Õ4r)cóâ—|€ |jjj}||jj «k(sJ‚|j|jj «|g|_yr!)r#r`rzr^r+r$r©)r%r–r—s r'r”zoverlayworkingctx.setparentsÔs]€Ø ˆ>Ø—Z‘Z×-Ñ-×4Ñ4ˆFؘ×)Ñ)×.Ñ.Ó0Ò0Ð0Ð0Ø×)Ñ)¨4¯:©:×+@Ñ+@Ó+BÀ6Ñ+JÐKˆ� r)có4—|j|«rk|j|drA|j|d�|j|dS|j|j«St j d|z«‚|j|j«S©NóexistsódataóNo such file or directory: %s)ÚisdirtyÚ_cacher^rÜr ròrÁs r'rÜzoverlayworkingctx.dataÚsš€Ø �<‰<˜Ô Ø�{‰{˜4Ñ  Ò+Ø—;‘;˜tÑ$ WÑ-Ð9ØŸ;™; tÑ,¨WÑ5Ð5ð ×+Ñ+¨DÑ1×6Ñ6Ó8Ð8ä×,Ñ,Ø4°tÑ;óðð×#Ñ# DÑ)×.Ñ.Ó0Ð 0r)cóð—|j«}|dj«j«}|j}|j «D]=}|j j j||<|j|||««Œ?|j«D]=}|j j j||<|j|||««Œ?|j«D]}||=Œ|Sr¬) rªrQrëryrjr#r`r rrir rk)r%rªrœr¾r¼s r'rFzoverlayworkingctx._manifestésÇ€à—,‘,“.ˆØ�a‰j×!Ñ!Ó#×(Ñ(Ó*ˆà�~‰~ˆØ—J‘J–LˆDØŸ ™ ×0Ñ0×<Ñ<ˆC�‰IØ �K‰K˜™d 4›jÕ )ð!ð—M‘M–OˆDØŸ ™ ×0Ñ0×?Ñ?ˆC�‰IØ �K‰K˜™d 4›jÕ )ð$ð—L‘L–NˆDØ�D‘ ð#àˆ r)có‡—ˆfd„}|S)Ncó(•—‰j|dS)Nóflags©ri)r¼r%s €r'r÷z&overlayworkingctx._flagfunc..fûsø€Ø—;‘;˜tÑ$ XÑ.Ð .r)rA©r%r÷s` r'ryzoverlayworkingctx._flagfuncùsø€ô /ðˆr)cóx—t|j«|j«z|j«z«Sr!)rArjrirkr,s r'r¸zoverlayworkingctx.files s)€Ü�d—j‘j“l T§]¡]£_Ñ4°t·|±|³~ÑEÓFÐFr)có¢—|jj«D�cgc]'}|j|dr|j|«r|‘Œ)c}Scc}w©Nre©riÚkeysÚ_existsinparentros r'rizoverlayworkingctx.modified sS€ð—[‘[×%Ñ%Ô'ó á'�Ø�{‰{˜1‰~˜iÒ(¨T×-AÑ-AÀ!Ô-Dò Ø'ñ ð ùò ó�,A có¢—|jj«D�cgc]'}|j|dr|j|«s|‘Œ)c}Scc}wrrrsros r'rjzoverlayworkingctx.added sS€ð—[‘[×%Ñ%Ô'ó á'�Ø�{‰{˜1‰~˜iÒ(°×1EÑ1EÀaÔ1Hò Ø'ñ ð ùò rvcó¢—|jj«D�cgc]'}|j|ds|j|«r|‘Œ)c}Scc}wrrrsros r'rkzoverlayworkingctx.removed sS€ð—[‘[×%Ñ%Ô'ó á'�Ø—;‘;˜q‘> )Ò,°×1EÑ1EÀaÔ1Hò Ø'ñ ð ùò rvcóæ—i}|jj«}|jj«D]7}||«sŒ |j |d«|j|d}|sŒ3|||<Œ9|S©Nócopied©r#rûrirtr+©r%r•rûr÷rJs r'rÊzoverlayworkingctx.p1copies óm€ØˆØ—j‘j×,Ñ,Ó.ˆ Ø—‘×!Ñ!Ö#ˆAÙ˜q”>ØØ �J‰J�q˜$Ô Ø—[‘[ ‘^ IÑ.ˆFÚØ"��q’ ð $ðˆ r)cóæ—i}|jj«}|jj«D]7}||«sŒ |j |d«|j|d}|sŒ3|||<Œ9|Srzr|r}s r'rÍzoverlayworkingctx.p2copies$ r~r)có—yrXrAr,s r'rfzoverlayworkingctx.isinmemory0 rYr)có‚—|j|«r|j|dS|j|j«S)Nódate)rhrir^r2rÁs r'Úfiledatezoverlayworkingctx.filedate3 s<€Ø �<‰<˜Ô Ø—;‘;˜tÑ$ WÑ-Ð -à×#Ñ# DÑ)×.Ñ.Ó0Ð 0r)cól—|j|d|j|«|j|«|¬«y)NT)r9r2r¹r0)Ú _markdirtyrƒr¹)r%r¼Úorigins r'rMzoverlayworkingctx.markcopied9 s4€Ø �‰Ø ØØ—‘˜tÓ$Ø—*‘*˜TÓ"Øð õ r)cóJ—|j|«r|j|dSyrz)rhrirÁs r'Úcopydatazoverlayworkingctx.copydataB s%€Ø �<‰<˜Ô Ø—;‘;˜tÑ$ YÑ/Ð /àr)cóÖ—|j|«r<|j|dr|j|dStjd|z«‚|j|j «S)Nrermrg)rhrir ròr^r¹rÁs r'r¹zoverlayworkingctx.flagsH sj€Ø �<‰<˜Ô Ø�{‰{˜4Ñ  Ò+Ø—{‘{ 4Ñ(¨Ñ2Ð2ä×,Ñ,Ø4°tÑ;óðð×#Ñ# DÑ)×/Ñ/Ó1Ð 1r)cóf—||jvr|j|dS||j«vSrr)rir­rGs r'rIzoverlayworkingctx.__contains__S s3€Ø �$—+‘+Ñ Ø—;‘;˜sÑ# IÑ.Ð .Ø�d—g‘g“iÐÐr)cóV— |j|y#tj$rYywxYwr±)r^r r·rÁs r'ruz!overlayworkingctx._existsinparentX s2€ð ð × Ñ ˜TÒ "ØøÜ×(Ñ(ò Ùð ús ‚’(§(c óD‡—ˆfd„}|jd«}tt|««D]$}dj|d|«}|‰vsŒ|||«Œ&‰j |gd¬«}t ‰j «j«j|««}t|«dkDrqt|«dk(r |d|k(ry|D�cgc] }|‰vsŒ|‘Œ }}|sytjd||‰j «t|«d j|«fz«‚ycc}w) a$Replicates conflict checks done by wvfs.write(). Since we never write to the filesystem and never call `applyupdates` in IMM, we'll never check that a path is actually writable -- e.g., because it adds `a/foo`, but `a` is actually a file in the other commit. có&•—d‰j«|j«vr7tjd||‰j«j «fz«‚tjd||‰j«j «fz«‚)Nrês*error: %s conflicts with symlink %s in %d.s+error: '%s' conflicts with file '%s' in %d.)r­r¹r r@rX)r¼Ú componentr%s €r'Úfailz/overlayworkingctx._auditconflicts..failj s‡ø€ð�t—w‘w“y Ñ+×1Ñ1Ó3Ñ3Ü—k‘kðØ!% y°$·'±'³)·-±-³/Ð BñCóðô —k‘kðØ" I¨t¯w©w«y¯}©}«Ð?ñ@óðr)r‹rspath)rärNsberror: file '%s' cannot be written because '%s/' is a directory in %s (containing %d entries: %s)s, ) ÚsplitÚranger°rr rÄr­rQr‘r r@) r%r¼r�Ú componentsrrŽr Úmfilesr’s ` r'Ú_auditconflictsz!overlayworkingctx._auditconflictsb sø€ô ð —Z‘Z Ó%ˆ Ü”s˜:“Ö'ˆAØŸ ™  *¨Q¨q /Ó2ˆIؘDÒ Ù�T˜9Õ%ð(ð— ‘ ˜D˜6¨7� Ó3ˆÜ�d—g‘g“i×(Ñ(Ó*×/Ñ/°Ó6Ó7ˆÜ ˆv‹;˜Š?Ü�6‹{˜aÒ F¨1¡I°Ò$5Øá!'Ó5¡˜A¨1°ª9’a ˆFÐ5ÙØÜ—+‘+ð ð˜˜tŸw™w›y¬#¨f«+°u·z±zÀ&Ó7IÐJñKóð ð ùò6s à DÃDc ó¤—|€tjd«‚|j|«|j|d|t j «|¬«y)Nsdata must be non-NoneT)r9rÜr2r¹)r ròr”r…rr_)r%r¼rÜr¹rKs r'rïzoverlayworkingctx.write’ sL€Ø ˆ<Ü×(Ñ(Ð)AÓBÐ BØ ×јTÔ"Ø �‰Ø ˜ D¬x×/@Ñ/@Ó/BÈ%ð õ r)cóh—d}|rd}n|rd}|j|dtj«|¬«y)Nr)rêräT)r9r2r¹)r…rr_)r%r¼rrkr¾s r'rXzoverlayworkingctx.setflagsš s4€ØˆÙ ؉D٠؈DØ �‰˜ T´×0AÑ0AÓ0CÈ4ˆÕPr)có*—|j|d¬«y)NF)r9)r…rÁs r'rEzoverlayworkingctx.remove¢ s€Ø �‰˜ UˆÕ+r)có—|j|«rg|j|drCd|j|dvr/|j|j|dj««S|j|dS|j |«S)zqexists behaves like `lexists`, but needs to follow symlinks and return False if they are broken. rerêrmrf)rhrir9ÚstriprurÁs r'r9zoverlayworkingctx.exists¥ s„€ð �<‰<˜Ô ð— ‘ ˜DÑ! )Ò,ؘDŸK™K¨Ñ-¨hÑ7Ñ7à—{‘{ 4§;¡;¨tÑ#4°WÑ#=×#CÑ#CÓ#EÓFÐFà—{‘{ 4Ñ(¨Ñ3Ð3à×#Ñ# DÓ)Ð)r)cój—|j|«r|j|dS|j|«S)z'lexists returns True if the path existsre)rhrirurÁs r'r;zoverlayworkingctx.lexists¶ s3€à �<‰<˜Ô Ø—;‘;˜tÑ$ YÑ/Ð /à×#Ñ# DÓ)Ð)r)cóè—|j|«rE|j|drt|j|d«Stjd|z«‚|j |j «Srd)rhrir°r ròr^rÝrÁs r'rÝzoverlayworkingctx.size½ so€Ø �<‰<˜Ô Ø�{‰{˜4Ñ  Ò+ܘ4Ÿ;™; tÑ,¨WÑ5Ó6Ð6ä×,Ñ,Ø4°tÑ;óðð×Ñ Ñ%×*Ñ*Ó,Ð,r)c ón‡—|€%‰j«}t|«dk(r|ddf}|d€‰j|ddf}n$‰j|d‰j|df}‰j«}ˆfd„} |€‰jj «}t ‰j|||| |||||¬« S)z¶Converts this ``overlayworkingctx`` into a ``memctx`` ready to be committed. ``text`` is the commit message. ``parents`` (optional) are rev numbers. Nrrc óÔ•—‰j|drUt|||‰j|dd‰j|dvd‰j|dv‰j|d«Sy)Nrerfrêrmrär{)riÚ memfilectx)r&Úmemctxr¼r%s €r'Úgetfilez+overlayworkingctx.tomemctx..getfileå s}ø€Ø�{‰{˜4Ñ  Ò+Ü!ØØØØ—K‘K Ñ% gÑ.ؘDŸK™K¨Ñ-¨hÑ7Ð7ؘDŸK™K¨Ñ-¨hÑ7Ð7Ø—K‘K Ñ% iÑ0óððr))r2r4r1r Úeditor)rªr°r#r¸r^r rŸ) r%rPr r4r2rªr1r¡r¸r s ` r'Útomemctxzoverlayworkingctx.tomemctxÇ sÐø€ð" ˆ?Ø—l‘l“nˆGÜ�7‹|˜qÒ Ø" 1™: tÐ,�ð �1‰:Ð Ø—z‘z '¨!¡*Ñ-¨tÐ4‰Gà—z‘z '¨!¡*Ñ-¨t¯z©z¸'À!¹*Ñ/EÐFˆGà— ‘ “ ˆô ð ˆ>Ø×%Ñ%×,Ñ,Ó.ˆFäØ �J‰JØ Ø Ø Ø ØØØØØô  ð r)có—|j«j«}|j«|d<|j|j «|j «||j «|j«¬«S)Ns amend_source)rPr r4r2r1)r4rërr¢r3r r2r1)r%Ú precursorr4s r'Útomemctx_for_amendz$overlayworkingctx.tomemctx_for_amend sl€Ø—‘Ó!×&Ñ&Ó(ˆØ!*§¡£ˆˆoÑØ�}‰}Ø×&Ñ&Ó(Ø×#Ñ#Ó%ØØ—‘Ó!Ø—‘Ó!ð ó ð r)có—||jvSr!rnrÁs r'rhzoverlayworkingctx.isdirty s€Ø�t—{‘{Ð"Ð"r)có —d|_i|_yr!)Ú _mergestaterir,s r'rWzoverlayworkingctx.clean s€ØˆÔ؈� r)c óT—g}tj|j«|j«j «tj |j«|j j««fg«|j j«D]^}|j |} |j|}|j«|dk(r'|j«|dk(r|j|«Œ`|D]}|j |=Œ|S#tj$rYŒŒwxYw)zãRemoves keys from the cache that are actually clean, by comparing them with the underlying context. This can occur during the merge process, e.g. by passing --tool :local to resolve a conflict. rfrm)rÚ prefetchfilesr&r­rXÚ matchfilesrirtr^rÜr¹r_r r·)r%rtr¼ÚcacheÚ underlyings r'Ú_compactzoverlayworkingctx._compact s€ðˆô ×ÑØ �I‰I‹Kð—G‘G“I—M‘M“OÜ×&Ñ& t§y¡y£{°D·K±K×4DÑ4DÓ4FÓGðð ô ð—K‘K×$Ñ$Ö&ˆDØ—K‘K Ñ%ˆEð Ø!×-Ñ-¨dÑ3� à—O‘OÓ%¨¨w©Ò7Ø"×(Ñ(Ó*¨e°H©oÒ=à—K‘K Ô%øð'óˆDØ— ‘ ˜DÑ!ðàˆ øô ×,Ñ,ò áð úsÂ-A DÄD'Ä&D'có—|rQ|€O|jj|«xsi}|jd«}|€|j|j«}|||||dœ|j|<t j |d«y)Nrf)rerfr‚rmr{r])rirSr^rÜrr_)r%r¼r9rÜr2r¹r0Úoldentrys r'r…zoverlayworkingctx._markdirty< s�€ñ �d�lØ—{‘{—‘ tÓ,Ò2°ˆHØ—<‘< Ó(ˆD؈|Ø×'Ñ'¨Ñ-×2Ñ2Ó4�ðØØØØñ  ˆ� ‰ �DÑô × Ñ   |Õ4r)có4—t|j|||¬«S)N)r0rt)Úoverlayworkingfilectxr#r­s r'rKzoverlayworkingctx.filectxQ s€Ü$Ø �J‰J˜ T°7ô ð r)có~—|s |j€$tj|j«|_|jSr!)r¨rÚ memmergestater#r s r'rzoverlayworkingctx.mergestateV s3€Ù �D×$Ñ$Ð,Ü,×:Ñ:¸4¿:¹:ÓFˆDÔ Ø×ÑÐr)r!r©NNNNNN)NNr)Nr)(r5rrrr(rar”rÜrrFryr¸rirjrkrÊrÍrfrƒrMrˆr¹rIrur”rïrXrEr9r;rÝr¢r¥rhrWr®r…rKrr™ršs@r'rZrZ¹sñø„ñ ôò5óLò 1ðñ óð ðñóðò Gò ò ò ò ò òò1ò  òò 2ò ò ò.ó` òQò,ò*ò"*ò-ðØØ ØØ Øó< ò|  ò#òò#ðLEIó5ó* ÷  r)rZc󂇗eZdZdZdˆfd„ Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zdd„Zdd„Zd„ZˆxZS)r²z‹Wrap a ``workingfilectx`` but intercepts all writes into an in-memory cache, which can be flushed through later by calling ``flush()``.có\•—tt|� ||||«||_||_||_yr!)rr²r(r#Ú_parentrŸ)r%r&r¼rtr0r s €r'r(zoverlayworkingfilectx.__init__` s.ø€Ü Ô# TÑ3°D¸$ÀÈÔP؈Œ ؈Œ ؈� r)cóD—|j«|j«k7Sr!©rÜrôs r'rbzoverlayworkingfilectx.cmpf ó€Ø�y‰y‹{˜dŸi™i›kÑ)Ð)r)có—|jSr!)r¸r,s r'rúzoverlayworkingfilectx.changectxi r×r)cóL—|jj|j«Sr!)r¸rÜrŸr,s r'rÜzoverlayworkingfilectx.datal ó€Ø�|‰|× Ñ  §¡Ó,Ð,r)cóL—|jj|j«Sr!)r¸rƒrŸr,s r'r2zoverlayworkingfilectx.dateo ó€Ø�|‰|×$Ñ$ T§Z¡ZÓ0Ð0r)có"—|j«Sr!)r;r,s r'r9zoverlayworkingfilectx.existsr s€Ø�|‰|‹~Ðr)cóL—|jj|j«Sr!)r¸r9rŸr,s r'r;zoverlayworkingfilectx.lexistsu ó€Ø�|‰|×"Ñ" 4§:¡:Ó.Ð.r)cóL—|jj|j«Sr!)r¸rˆrŸr,s r'rÙz overlayworkingfilectx.copysourcex rÀr)cóL—|jj|j«Sr!)r¸rÝrŸr,s r'rÝzoverlayworkingfilectx.size{ r¾r)cóP—|jj|j|«yr!)r¸rMrŸ)r%r†s r'rMz overlayworkingfilectx.markcopied~ s€Ø � ‰ ×Ñ § ¡ ¨FÕ3r)có—yr!rAr,s r'r=zoverlayworkingfilectx.audit� ó€Ø r)cóL—|jj|j«Sr!)r¸r¹rŸr,s r'r¹zoverlayworkingfilectx.flags„ s€Ø�|‰|×!Ñ! $§*¡*Ó-Ð-r)cóP—|jj|j||«Sr!)r¸rXrŸ)r%rëræs r'rXzoverlayworkingfilectx.setflags‡ s€Ø�|‰|×$Ñ$ T§Z¡Z°¸Ó@Ð@r)c óT—|jj|j||fi|¤ŽSr!)r¸rïrŸrJs r'rïzoverlayworkingfilectx.writeŠ s&€Ø!ˆt�|‰|×!Ñ! $§*¡*¨d°EÑD¸VÑDÐDr)cóL—|jj|j«Sr!)r¸rErŸ©r%rAs r'rEzoverlayworkingfilectx.remove� rÃr)có—yr!rAr,s r'rVz"overlayworkingfilectx.clearunknown� rÈr)r–r)r5rrrr(rbrúrÜr2r9r;rÙrÝrMr=r¹rXrïrErVr™ršs@r'r²r²\ s[ø„ñIõò *òò-ò1òò/ò1ò-ò4ò ò.òAóEó/ö r)r²có>‡—eZdZdZ dˆfd„ Zdd„Zed„«ZˆxZS)ÚworkingcommitctxzËA workingcommitctx object makes access to data related to the revision being committed convenient. This hides changes in the working directory, if they aren't committed in this context. có6•—tt|� ||||||«yr!)rrÐr()r%r&rçrPr1r2r4r s €r'r(zworkingcommitctx.__init__œ s"ø€ô Ô Ñ.Ø �$˜˜d E¨7õ r)c ó¼—|r)|jD�cgc]}||jvsŒ|‘Œ}}ng}tj|jj D�cgc] }||«sŒ |‘Œc}|jj D�cgc] }||«sŒ |‘Œc}|jjD�cgc] }||«sŒ |‘Œc}ggg|«Scc}wcc}wcc}wcc}w)z´Return matched files only in ``self._status`` Uncommitted files appear "clean" via this context, even if they aren't actually so in the working directory. )rFÚ _changedsetrrRrLrirjrk)r%r r[rWrZr÷s r'rz workingcommitctx._dirstatestatus£ sË€ñ Ø $§¢ÓL¡˜1°!¸4×;KÑ;KÒ2K’Q ˆEÑLàˆEÜ�~‰~ØŸ ™ ×-Ò-Ó :Ñ-�1±°qµŠQÐ-Ñ :ØŸ ™ ×*Ò*Ó 7Ñ*�1©e°A­hŠQÐ*Ñ 7ØŸ ™ ×,Ò,Ó 9Ñ,�1±°aµŠQÐ,Ñ 9Ø Ø Ø Ø ó ð ùòMùò ;ùÚ 7ùÚ 9s.‘C ¥C Á CÁ#C C ÂC Â- C Â;C cóØ—t|jj«}|j|jj«|j|jj «|S)z/Return the set of files changed in this context)r\rLriÚupdaterjrk)r%Úchangeds r'rÓzworkingcommitctx._changedset· sI€ô�d—l‘l×+Ñ+Ó,ˆØ�‰�t—|‘|×)Ñ)Ô*Ø�‰�t—|‘|×+Ñ+Ô,؈r))r)NNNr) r5rrrr(rrrÓr™ršs@r'rÐrД s-ø„ñðDHõ ó ð(ñóôr)rÐc󇇗iŠˆˆfd„}|S)zØCreate a filectxfn that caches based on the path. We can't use util.cachefunc because it uses all arguments as the cache key and this creates a cycle since the arguments include the repo and memctx. có0•—|‰vr ‰|||«‰|<‰|Sr!rA)r&rŸr¼r¬r�s €€r'Ú getfilectxz(makecachingfilectxfn..getfilectxÉ s'ø€Ø �uÑ Ù˜t V¨TÓ2ˆE�$‰KØ�T‰{Ðr)rA)r�rÙr¬s` @r'ÚmakecachingfilectxfnrÚÀ sù€ð €Eõð Ðr)có‡—ˆfd„}|S)zŒGiven a context return a memfilectx for ctx[path] This is a convenience method for building a memctx based on another context. c 󦕗‰|}|j«}t||||j«|j«|j «|¬«S©N)rërærÙ)rÙržrÜrëræ)r&rŸr¼rõrÙrÛs €r'rÙz"memfilefromctx..getfilectxØ sLø€Ø�4‰yˆØ—_‘_Ó&ˆ ÜØ Ø Ø Ø �I‰I‹KØ—;‘;“=Ø—;‘;“=Ø!ô ð r)rA)rÛrÙs` r'ÚmemfilefromctxrÞÑ sø€ô  ð Ðr)có‡—ˆfd„}|S)zŽGiven a patch (e.g. patchstore object) return a memfilectx This is a convenience method for building a memctx based on a patchstore. c ób•—‰j|«\}}}|€y|\}}t|||||||¬«SrÝ)r rž) r&rŸr¼rÜrÞrÙrëræÚ patchstores €r'rÙz$memfilefrompatch..getfilectxî sMø€Ø!+×!3Ñ!3°DÓ!9шˆd�JØ ˆ<ØØ‰ˆ�ÜØ Ø Ø Ø ØØØ!ô ð r)rA)rárÙs` r'Úmemfilefrompatchrâè sø€ô  ð Ðr)cóf‡—eZdZdZdZ d ˆfd„ Zd d„Zd„Zed„«Z ed„«Z d„Z ˆxZ S) rŸaNUse memctx to perform in-memory commits via localrepo.commitctx(). Revision information is supplied at initialization time while related files data and is made available through a callback mechanism. 'repo' is the current localrepo, 'parents' is a sequence of two parent revisions identifiers (pass None for every missing parent), 'text' is the commit message and 'files' lists names of files touched by the revision (normalized and relative to repository root). filectxfn(repo, memctx, path) is a callable receiving the repository, the current memctx object and the normalized path of requested file, relative to repository root. It is fired by the commit function for every file in 'files', but calls order is undefined. If the file is available in the revision being committed (updated or added), filectxfn returns a memfilectx object. If the file was removed, filectxfn return None for recent Mercurial. Moved files are represented by marking the source file removed and the new file added with copy information (see memfilectx). user receives the committer name and defaults to current repository username, date is the commit date in any format supported by dateutil.parsedate() and defaults to current date, extra is a dictionary of metadata or is left empty. Tc óz•—tt|� |||||| ¬«d|_d|_|D� cgc]&} | xs |j j j‘Œ(}} |\} } | | fD� cgc]} |j | ‘Œc} |_tt|««}||_ i|_ t|tj«r t!|«}nt#|«s t%|«}t'|«|_| r?| |j |g«|_|j j-|j*«yycc} wcc} w)Nr‡)rrŸr(r;r€r#r`rzr©rAr\Ú_filesrxrùrÚ filestorerâÚcallablerÞrÚÚ _filectxfnrHÚsavecommitmessage)r%r&rªrPr¸Ú filectxfnr1r2r4r r¡rr­r±r s €r'r(zmemctx.__init__! sø€ô Œf�dÑ$Ø �$˜˜d E°&ð %ô ðˆŒ ØˆŒ ÙCJÓKÁ7¸a�AÒ8˜Ÿ™×1Ñ1×8Ñ8Ñ8À7ˆÐK؉ˆˆBØ13°R±Ó9±¨1˜Ÿ™ A›°Ñ9ˆŒ Ü”s˜5“zÓ"ˆØˆŒ ؈Œ ä �i¤§¡Ô 1Ü(¨Ó3‰Iܘ)Ô$ä& yÓ1ˆIô/¨yÓ9ˆŒá Ù § ¡ ¨D°"Ó5ˆDŒJØ �J‰J× (Ñ (¨¯©Õ 4ð ùò!Lùâ9s ­+D3Á%D8có<—|j|j||«S)zpget a file context from the working directory Returns None if file doesn't exist and should be removed.)rèr#r­s r'rKzmemctx.filectxG s€ð�‰˜tŸz™z¨4°Ó6Ð6r)có8—|jj|«S©zcommit context to the repo©r#Ú commitctxr,s r'Úcommitz memctx.commitM ó€à�z‰z×#Ñ# DÓ)Ð)r)cóž—|jd}|j«j«}|jjD]%}|j j j||<Œ'|jjD]%}|j j j||<Œ'|jjD] }||vsŒ||=Œ |S)z;generate a manifest based on the return values of filectxfnr) r©rQrërLrir#r`r rjr rk)r%rÔrœr÷s r'rFzmemctx._manifestQ s­€ð �}‰}˜QшØ�m‰m‹o×"Ñ"Ó$ˆà—‘×&Ô&ˆAØ—Z‘Z×-Ñ-×<Ñ<ˆC�ŠFð'ð—‘×#Ô#ˆAØ—Z‘Z×-Ñ-×9Ñ9ˆC�ŠFð$ð—‘×%Ô%ˆAØ�CŠxؘ‘Fð&ðˆ r)c 󮇇—|j«j«Š|jd}|j«tk7r|j«Šˆˆfd„}nˆfd„}ggg}}}|j D]D}||«s|j |«Œ||r|j |«Œ4|j |«ŒFtj|||gggg«S)z?Calculate exact status from ``files`` specified at constructionrcó•—|‰vxs|‰vSr!rA©r÷Úman1Úman2s €€r'r!z memctx._status..o óø€  d Ò!7¨a°4¨iÐ!7r)có •—|‰vSr!rA©r÷rös €r'r!z memctx._status..q ó ø€  d¡r)© r­rQr©rXrrår_rrR© r%r±Úmanagingrirjrkr÷rör÷s @@r'rLzmemctx._statuse sµù€ð�w‰w‹y×!Ñ!Ó#ˆØ �]‰]˜1Ñ ˆð �6‰6‹8”wÒ Ø—;‘;“=ˆDÜ7‰Hã*ˆHà#% r¨2˜�%ˆØ—”ˆAÙ˜A”;Ø— ‘ ˜Q•Ø�a’Ø—‘ Õ"à—‘˜qÕ!ð ô�~‰~˜h¨¨w¸¸BÀÀBÓGÐGr)có‚—|jdj«tk(r|jdgS|jS)Nrr)r©rXrr,s r'rªzmemctx.parents~ s8€Ø �=‰=˜Ñ × Ñ Ó !¤WÒ ,Ø—M‘M !Ñ$Ð%Ð %Ø�}‰}Ðr))NNNNNr!) r5rrrÚ_returnnoneformissingfilesr(rKrðrrFrLrªr™ršs@r'rŸrŸ s`ø„ñð<"&ÐðØ ØØØõ$5óL7ò *ðñóðð&ñHóðHö0r)rŸcóJ‡—eZdZdZ dˆfd„ Zd„Zd„Zd„Zd d„Zd„Z ˆxZ S) ržzpmemfilectx represents an in-memory file to commit. See memctx and committablefilectx for more details. có •—tt|� ||d|«||_|rd|_||_y|rd|_||_yd|_||_y)aQ path is the normalized file path relative to repository root. data is the file content as a string. islink is True if the file is a symbolic link. isexec is True if the file is executable. copied is the source file path if current file was copied in the revision being committed, or None.Nrêrär))rržr(Ú_datar¼Ú _copysource) r%r&rúr¼rÜrërærÙr s €r'r(zmemfilectx.__init__Š s\ø€ô" Œj˜$Ñ(¨¨t°T¸9ÔE؈Œ ٠؈DŒKð &ˆÕñ ؈DŒKð&ˆÕðˆDŒKØ%ˆÕr)có—|jSr!)rr,s r'rÙzmemfilectx.copysource¥ s€Ø×ÑÐr)cóD—|j«|j«k7Sr!rºrôs r'rbzmemfilectx.cmp¨ r»r)có—|jSr!©rr,s r'rÜzmemfilectx.data« r�r)có2—|j|j=y)r@N)r¢rŸrÍs r'rEzmemfilectx.remove® s€ð �O‰O˜DŸJ™JÑ 'r)c ó—||_y)rGNr©r%rÜr¹rKs r'rïzmemfilectx.write³ s €àˆ� r))FFNr) r5rrrr(rÙrbrÜrErïr™ršs@r'ržrž„ s1ø„ñðØØõ&ò6 ò*òó(ö r)ržcót‡—eZdZdZ d ˆfd„ Zd„Zed„«Zd d„Zd„Z ed„«Z e d„«Z ˆxZ S) Úmetadataonlyctxa·Like memctx but it's reusing the manifest of different commit. Intended to be used by lightweight operations that are creating metadata-only changes. Revision information is supplied at initialization time. 'repo' is the current localrepo, 'ctx' is original revision which manifest we're reuisng 'parents' is a sequence of two parent revisions identifiers (pass None for every missing parent), 'text' is the commit. user receives the committer name and defaults to current repository username, date is the commit date in any format supported by dateutil.parsedate() and defaults to current date, extra is a dictionary of metadata or is left empty. c óŠ•—|€|j«}tt|�|||||«d|_d|_||_|j«|_|€|j«}n|D� cgc] } | €Œ|| ‘Œ }} |dd}t|«dkr'|j|t«t|«dkrŒ'|x\} } |_ |j«j\} } | |jj j"k7r| j«| k7r t%d«‚| |jj j"k7r| j«| k7r t%d«‚|j'«|_i|_|r?||j|g«|_|jj/|j,«yycc} w)Nr¯z=can't reuse the manifest: its p1 doesn't match the new ctx p1z=can't reuse the manifest: its p2 doesn't match the new ctx p2)r3rr r(r;r€Ú _originalctxr8Ú _manifestnoderªr°r_rr©rˆr#r`rzÚ RuntimeErrorr¸rårxrHré)r%r&Ú originalctxrªrPr1r2r4r¡rr­r±Úmp1Úmp2r s €r'r(zmetadataonlyctx.__init__È s¥ø€ð ˆ<Ø×*Ñ*Ó,ˆDÜ Œo˜tÑ-¨d°D¸$ÀÀeÔL؈Œ ؈Œ Ø'ˆÔØ(×5Ñ5Ó7ˆÔØ ˆ?Ø!×)Ñ)Ó+‰Gá(/ÓA© 1°1±=�t˜A“w¨ˆGÐAØ™!�*ˆÜ�'‹l˜QÒØ �N‰N˜4¤™=Ô )ô�'‹l˜QÓà!(Ð(‰ˆˆB�”ð×#Ñ#Ó%×-Ñ-‰ˆˆSØ �—‘×)Ñ)×0Ñ0Ò 0°R·_±_Ó5FÈ#Ò5MÜð0óð ð �—‘×)Ñ)×0Ñ0Ò 0°R·_±_Ó5FÈ#Ò5MÜð7óð ð "×'Ñ'Ó)ˆŒ ؈Œ á Ù § ¡ ¨D°"Ó5ˆDŒJØ �J‰J× (Ñ (¨¯©Õ 4ð ùò/Bs Á,GÁ4Gcó—|jSr!)rr,s r'r8zmetadataonlyctx.manifestnodeø s€Ø×!Ñ!Ð!r)cóH—|jj|jSr!)r#rºrr,s r'r‡zmetadataonlyctx._manifestctxû s€à�z‰z×%Ñ% d×&8Ñ&8Ñ9Ð9r)có<—|jj||¬«S)N)rt)rrKr­s r'rKzmetadataonlyctx.filectxÿ s€Ø× Ñ ×(Ñ(¨°wÐ(Ó?Ð?r)có8—|jj|«Srírîr,s r'rðzmetadataonlyctx.commit rñr)có6—|jj«Sr!)rrQr,s r'rFzmetadataonlyctx._manifest s€à× Ñ ×)Ñ)Ó+Ð+r)c 󬇇—|j«j«Š|jd}|j«tk7r|j«Šˆˆfd„}nˆfd„}ggg}}}|j D]C}||«s|j |«Œ||vr|j |«Œ3|j |«ŒEtj|||gggg«S)zjCalculate exact status from ``files`` specified in the ``origctx`` and parents manifests. rcó•—|‰vxs|‰vSr!rArõs €€r'r!z)metadataonlyctx._status.. rør)có •—|‰vSr!rArús €r'r!z)metadataonlyctx._status.. rûr)rürýs @@r'rLzmetadataonlyctx._status sµù€ð �w‰w‹y×!Ñ!Ó#ˆØ �]‰]˜1Ñ ˆð �6‰6‹8”wÒ Ø—;‘;“=ˆDÜ7‰Hã*ˆHà#% r¨2˜�%ˆØ—”ˆAÙ˜A”;Ø— ‘ ˜Q•Ø�d‘Ø—‘ Õ"à—‘˜qÕ!ð ô�~‰~˜h¨¨w¸¸BÀÀBÓGÐGr)rµr!)r5rrrr(r8r˜r‡rKrðrFrrLr™ršs@r'r r ¸ spø„ñ ð&Ø Ø Ø ØØõ.5ò`"ðñ:óð:ó@ò*ðñ,óð,ðñHóôHr)r cóB—eZdZdZd d„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z y) Úarbitraryfilectxz„Allows you to use filectx-like functions on a file in an arbitrary location on disk, possibly not in the working directory. Ncó —||_||_yr!)r#rŸ)r%r¼r&s r'r(zarbitraryfilectx.__init__+ s€àˆŒ ؈� r)cód—d|j«vxsd|j«v}|sht|t«rX|jrLt j |j «|jj|j ««« S|j«|j«k7Sré) r¹rùr¬r#Úfilecmprbr¼ÚwjoinrÜ)r%rõÚsymlinkss r'rbzarbitraryfilectx.cmp0 s~€ð˜4Ÿ:™:›<Ð'Ò?¨4°4·:±:³<Ð+?ˆÙœJ t¬^Ô<ÀÇÂô—{‘{ 4§9¡9£;°· ± ×0@Ñ0@ÀÇÁÃÓ0MÓNÐNÐ NØ�y‰y‹{˜dŸi™i›kÑ)Ð)r)có—|jSr!r®r,s r'r¼zarbitraryfilectx.path; r�r)có—yrŸrAr,s r'r¹zarbitraryfilectx.flags> s€Ør)có@—tj|j«Sr!©rÚreadfilerŸr,s r'rÜzarbitraryfilectx.dataA ó€Ü�}‰}˜TŸZ™ZÓ(Ð(r)có@—tj|j«Sr!r'r,s r'r3zarbitraryfilectx.decodeddataD r)r)cóB—tj|j«yr!)rrTrŸr,s r'rEzarbitraryfilectx.removeG s€Ü � ‰ �D—J‘JÕr)c óL—|rJ‚tj|j|«yr!)rÚ writefilerŸr s r'rïzarbitraryfilectx.writeJ s€ÙЈyÜ �‰�t—z‘z 4Õ(r)r!) r5rrrr(rbr¼r¹rÜr3rErïrAr)r'rr& s/„ñóò *òòò)ò)ò ó)r)r)9r!r¼r¿Úi18nrr+rrrÚpycompatrÚr r r r r rÞrrrrr˜rrrrrrrrrrÚutilsrrÚ dirstateutilsrrrrúrœrKrFr…r r¬rZr²rÐrÚrÞrârŸržr rrAr)r'Úr3s6ðóÛ Û å÷ñõ ÷÷÷÷÷÷(õð×"Ñ"€ ÷z ñz ôz i �ôi ÷X B?ñB?ôJ{ ˆkô{ ô|f�WôfôRP9�ôP9ôf=˜ô=ô@Y3Ð'ôY3ôx` ˜ô` ôF 5 Ð.ô5 ôp)�zô)òXò"ò.ô0Aˆ^ôAôH1Ð#ô1ôhkH�nôkH÷\&)ò&)r)