Ë cgÉ/´Ÿãóz—ddlmZddlmZmZddlmZmZmZm Z m Z m Z d„Z d d„Z d d„Zd„Zdd „Zd „Z dd „Zd „Zy)é)Ú_)ÚhexÚnullrev)ÚcontextÚ mergestateÚmetadataÚphasesÚscmutilÚ subrepoutilcó‚—|jdk(rd}d}||fS|jjdd«}|dk7}|dv}||fS)zÊreturn a (changelog, filelog) boolean tuple changelog: copy related information should be stored in the changeset filelof: copy related information should be written in the file revision óchangeset-sidedataTó experimentalscopies.write-toóchangeset-only)rs compatibility)ÚfilecopiesmodeÚuiÚconfig)ÚrepoÚwritechangesetcopyÚwritefilecopymetaÚ writecopiestos ú4usr/lib/python3.12/site-packages/mercurial/commit.pyÚ_write_copy_metarsn€ð  ×ÑÐ3Ò3Ø!ÐØ Ðð Ð0Ð 0Ð0ð Ÿ™Ÿ™ Ð8JÓKˆ Ø)Ð->Ñ>ÐØ*ð/ ð Ðð Ð0Ð 0Ð0óNc ó —|j«}|j«|j«}}|j«}|j «5|j d«5}t ||||¬«\}} |j«j«} | �dD]} | j| d«Œ|jjdk(r t|| | «} |jj«} |jjt!d««|jj#|«|jj%|| |j'«||j)«|j)«||j+«| « } || j-«}| |jj«k7r+|j/||jj1|««|j3«|xr|j3«xsd}}|j5dd t3| «||¬ «t7j8|j|«}| |jj«k(xr||j;« }|r|st=j>||||g«| cddd«cddd«S#1swYnxYwddd«y#1swYyxYw) a‡Add a new revision to the target repository. Revision information is passed via the context argument. ctx.files() should list all files involved in this commit, i.e. modified/added/removed files. On merge, it may be wider than the ctx.files() to be committed, since any file nodes derived directly from p1 or p2 are excluded from the committed ctx.files(). origctx is for convert to work around the problem that bug fixes to the files list in changesets change hashes. For convert to be the identity, it can pass an origctx and this function will use the same files list when it makes sense to do so. scommit)ÚerrorÚorigctxN)óp1copiesóp2copiesó filesaddedó filesremovedsextrascommitting changelog rs pretxncommitT)ÚthrowÚnodeÚparent1Úparent2) Ú unfilteredÚp1Úp2ÚuserÚlockÚ transactionÚ_prepare_filesÚextraÚcopyÚpopÚ changelogÚ_copiesstorageÚ_extra_with_copiesÚtiprevrÚnoterÚ delayupdateÚaddÚ descriptionr"ÚdateÚrevÚregister_changesetÚchangelogrevisionrÚhookr ÚnewcommitphaseÚphaser Ú registernew)rÚctxrrr&r'r(ÚtrÚmnÚfilesr,ÚnameÚoldtipÚnr8Úxp1Úxp2Ú targetphaseÚ waspublics rÚ commitctxrJ*s@€ð �?‰?Ó €Dà �V‰V‹X�s—v‘v“xˆ€BØ �8‰8‹:€Dà �‰��d×&Ñ& yÔ1°RÜ" 2 s°%ÀÔI‰ ˆˆEà— ‘ “ × Ñ Ó"ˆà Ð ó�ð — ‘ ˜$ Õ%ð ð �>‰>× (Ñ (¨HÒ 4Ü& t¨U°EÓ:ˆEð—‘×&Ñ&Ó(ˆð �‰� ‰ ”QÐ0Ó1Ô2Ø �‰×"Ñ" 2Ô&Ø �N‰N× Ñ Ø Ø Ø �O‰OÓ Ø Ø �G‰G‹IØ �G‰G‹IØ Ø �H‰H‹JØ ó ˆð�1‰g�k‰k‹mˆØ �T—^‘^×*Ñ*Ó,Ò ,Ø × #Ñ # C¨¯©×)IÑ)IÈ#Ó)NÔ Oà—6‘6“8˜Rš_ B§F¡F£HÒ3°ˆSˆØ � ‰ Ø ØÜ�Q“ØØð ô ô"×0Ñ0°·±¸#Ó>ˆ ð˜dŸn™n×3Ñ3Ó5Ñ5ÒO¸dÀ3¹i¿o¹oÓ>OÐ:Oˆ á ™yô × Ñ ˜t R¨°s°eÔ <Ø÷u2Ð1�‰×1Ð1ú��‰ús%ÁKÁ#H9J/Ê KÊ/J8 Ê4KËK cóî—|j«}|j«}t|«\}}tj«}t j j |«} t|| |«} | D]} |j| «Œi} |j«j«j«s?| j«j«D]\} }|jd«}|€Œ|| | <Œ |j«r�| s‹|jj!d«|j«}|j#|j%««|rŽ|j'|j)««|j+|j-««nO|j%«s.| s,|jj!d«|j«}nt/||| || |¬«}|rQ|j«|k(r>|j%«}|j0j3|«sJ‚|j#|«|r>|j5|j7««|j9|j;««||fS)Nsoutside-narrow-merge-actionsreusing known manifest s*reusing manifest from p1 (no file change) )r)rr&rrÚ ChangingFilesrÚreadÚ _get_salvagedÚ mark_salvagedÚ narrowmatchÚalwaysÚ allextrasÚitemsÚgetÚ manifestnoderÚdebugÚupdate_touchedrBÚ update_addedÚ filesaddedÚupdate_removedÚ filesremovedÚ_process_filesÚtouchedÚissubsetÚupdate_copies_from_p1Úp1copiesÚupdate_copies_from_p2Úp2copies)r@r?rrrr&rrrBÚmsÚsalvagedÚsÚ narrow_filesÚfÚeÚactionrAÚ origfiless rr+r+{s÷€Ø �8‰8‹:€DØ �‰‹€Bä,<¸TÓ,BÑ)ÐÐ)Ü × "Ñ "Ó $€EÜ × Ñ × #Ñ # DÓ )€BܘT 2 sÓ+€HÛ ˆØ ×јAÕðð€LØ �8‰8‹:× !Ñ !Ó #× *Ñ *Ô ,Ø—L‘L“N×(Ñ(Ö*‰DˆAˆqØ—U‘UÐ9Ó:ˆFØÑ!Ø"(� ˜Q’ð+ð ×ÑÔ¡,à �‰� ‰ Ð1Ô2Ø × Ñ Ó ˆØ ×јSŸY™Y›[Ô)Ù Ø × Ñ ˜sŸ~™~Ó/Ô 0Ø × Ñ  ×!1Ñ!1Ó!3Õ 4Ø �Y‰YŒ[¡Ø �‰� ‰ ÐDÔEØ �_‰_Ó ‰ä ˜B  R¨° ÀEÔ Jˆá�7×'Ñ'Ó)¨RÒ/Ø—M‘M“Oˆ Ø�}‰}×%Ñ% iÔ0Ð0Ð0Ø ×јYÔ'áØ ×#Ñ# C§L¡L£NÔ3Ø ×#Ñ# C§L¡L£NÔ3à ˆuˆ9ÐrcóT—g}|jdk(}|r”t|j««dkDrx|j«rht |j «j ««D]>}|j|«jd«}|dk(sŒ)||vsŒ.|j|«Œ@|S)zzreturns a list of salvaged files returns empty list if config option which process salvaged files are not enabledr rómerge-removal-candidateóyes) rÚlenÚparentsÚactiveÚsortedrRÚkeysÚextrasrTÚappend)rrcr?rdÚcopy_sdÚfnameÚ might_removeds rrNrN¦s’€ð €HØ×!Ñ!Ð%:Ñ:€GÙ”3�s—{‘{“}Ó%¨Ò)Ø �9‰9Œ;Ü § ¡ £× 3Ñ 3Ó 5Ö6�Ø "§ ¡ ¨%Ó 0× 4Ñ 4Ð5OÓ P� Ø  FÓ*Ø ’|Ø Ÿ™¨Õ.ð 7ð €Orc óî—|j«}|j«}|j«}t|«\} } |j «} |j «} | j «} | j «}| j «}| j «}g}t|j««}t|«}|jjtd««tj|«}|j«|j!«z}|j#|j%««|j'«|D�]}|jj||«dz«||v�rB|j)|«}|t*j,k(r#|j/|«|j1|«nù|t*j2k(rU|j5|«|j1|«||||<| j7|«dxsd}|j9||«n‘|t*j:k(rU|j=|«|j1|«||||<| j7|«dxsd}|j9||«n)td«}td«}|j?||¬«‚�Œo ||}|€|j1|«nŠ|j1|«tA||||||| |«\||<}|r?|dk(r|j5|«n(|d k(r|jC|«n|j=|«|j9||jE««�Œ|D�cgc] }||vs||vsŒ |‘Œ}}tK|D�cgc] }||vsŒ|‘Œ c}«}|D]}||=Œ|jM«tNk(r|jQ|«n;tSjT|||||f«}|D]}||«rŒ |j/|«ŒtW|||| ||jX||t[|«« }|S#tF$r/|jjItd «||«z«‚wxYwcc}wcc}w) Nscommitting files: ó rrs/corrupted mergestate, unknown narrow action: %bsrestart the merge)ÚhintÚaddedÚmergedstrouble committing %s! ).rr&r'rÚ manifestctxr-rMÚlistÚremovedrnrr3rr Ú getuipathfnÚmodifiedr{ÚextendrrÚsortrTrÚCHANGE_REMOVEDÚ mark_removedrtÚ CHANGE_ADDEDÚ mark_addedÚfindÚsetflagÚCHANGE_MODIFIEDÚ mark_touchedÚAbortÚ _filecommitÚ mark_mergedÚflagsÚOSErrorÚwarnrqr8rrZrÚget_removal_filterÚ_commit_manifestr]Úbool) r@r?rcrBrfrrr&r'rrÚm1ctxÚm2ctxÚmctxÚmÚm1Úm2r{rÚlinkrevÚuipathfnÚ all_filesrgÚ narrow_actionr�ÚmsgrzÚfctxÚ is_touchedÚdropÚrfrAs rr\r\·sô€Ø �8‰8‹:€DØ �‰‹€BØ �‰‹€Bä,<¸TÓ,BÑ)ÐÐ)à �N‰NÓ €EØ �N‰NÓ €EØ �:‰:‹<€Dà � ‰ ‹ €AØ �‰‹€BØ �‰‹€Bð €EÜ�3—;‘;“=Ó!€GÜ�$‹i€G؇G�G‡L�L”Ð)Ó*Ô+Ü×"Ñ" 4Ó(€HØ— ‘ “ §¡£Ñ,€IØ ×Ñ�\×&Ñ&Ó(Ô)Ø ‡N�NÔÜ ˆØ �‰� ‰ ‘X˜a“[ 5Ñ(Ô)Ø � Ò Ø(×,Ñ,¨QÓ/ˆMؤ × 9Ñ 9Ò9Ø×"Ñ" 1Ô%Ø—‘˜qÕ!ؤ*×"9Ñ"9Ò9Ø× Ñ  Ô#Ø— ‘ ˜Q”ؘ!‘u��!‘ØŸ ™  1›  aÑ(Ò/¨C�Ø— ‘ ˜!˜UÕ#ؤ*×"<Ñ"<Ò<Ø×"Ñ" 1Ô%Ø— ‘ ˜Q”ؘ!‘u��!‘ØŸ ™  1›  aÑ(Ò/¨C�Ø— ‘ ˜!˜UÕ#äÐJÓK�ÜÐ-Ó.�Ø—k‘k #¨D�kÓ1Ð1Ù ð Ø�q‘6ˆD؈|Ø—‘˜qÕ!à— ‘ ˜Q”Ü#.ؘ$  B¨°Ð5FÈó$Ñ ��!‘�jñØ! WÒ,Ø×(Ñ(¨Õ+Ø# xÒ/Ø×)Ñ)¨!Õ,à×*Ñ*¨1Ô-Ø— ‘ ˜!˜TŸZ™Z›\Ô*ùðQñ\"Ó8™'�Q Q¨"¡W°°R²Šq˜'€GÐ8Ü ™gÓ0™g˜¨¨aª’1˜gÑ0Ó 1€DÛ ˆØ ˆa‰Dðà ‡v�vƒx”7ÒØ ×јWÕ%ä × (Ñ (¨¨r°2°r¸2Ð.>Ó ?ˆÛˆAÙ�a•5Ø×"Ñ" 1Õ%ðô Ø ØØ Ø Ø Ø � ‰ Ø Ø Ü ˆ\Óó €Bð €Iøô;ò Ø �G‰G�L‰LœÐ6Ó7¹(À1»+ÑEÔ FØ ð üò 9ùÚ0s%ËB#P2Í* Q-Í8Q-Î Q2ÎQ2Ð28Q*có¨—|j«}|j||j«} |j||j«} d} | | cxk(r|jk(rnnd} t|tj «rœ|j «} | | | fvr†|jjd|z«| |jk7r"|j|«|j«k7s1| |jk7r$|j|«|j«k7rd} | | fS|j|«} i}|j«}d}|r±||k7r¬|j|«}| }|r| |jk(s|€ ||vr||}| }|rO|jjd||t|«fz«|r||d<t|«|d<|j|} } �n|jjtd«||fz«næ| |jk(r| |j} } nÈ| |jk7r¹|j«r2|j!|«jd «d k(r| |j} } nw|j«r2|j!|«jd «d k7r| |j} } n5| j#| | «}| |vr| |j} } n| |vr |j} d }|jj%dd«r5|j«r%|j!|«jd«d k(rd}|j'«}| |jk7s%| |jk(s|s| j)| |«s|r0| €| |jk(rd} nd} | j+||||| | «}|| fS||vr*|j|«|j«k7rd} | }|| fS| }|| fS)a commit an individual file as part of a larger transaction input: fctx: a file context with the content we are trying to commit manifest1: manifest of changeset first parent manifest2: manifest of changeset second parent linkrev: revision number of the changeset being created tr: current transation includecopymeta: boolean, set to False to skip storing the copy data (only used by the Google specific feature of using changeset extra as copy source of truth). ms: mergestate object output: (filenode, touched) filenode: the filenode that should be used by this changeset touched: one of: None (mean untouched), 'added' or 'modified' Nr{sreusing %s filelog entry r�s %s: copy %s:%s scopyscopyrevs8warning: can't find ancestor for '%s' copied from '%s'! sfilenode-sourcesothersmergedrmFrsmerge-track-salvagedrlTr|)ÚpathrTÚnullidÚ isinstancerÚfilectxÚfilenoderrVr�ÚfileÚ copysourcerr‘rrprsÚcommonancestorsheadsÚ configboolÚdataÚcmpr5)rr Ú manifest1Ú manifest2r›r@ÚincludecopymetarcrvÚfparent1Úfparent2r]r"ÚflogÚmetaÚcfnameÚfnodeÚcnodeÚ newfparentÚfparentancestorsÚforce_new_nodeÚtexts rr�r�s”€ð> �I‰I‹K€EØ�}‰}˜U D§K¡KÓ0€HØ�}‰}˜U D§K¡KÓ0€HØ€GØ�8Ô*˜tŸ{™{Õ*؈ä�$œŸ™Ô(ð�}‰}‹ˆØ �H˜hÐ'Ñ 'Ø �G‰G�M‰MÐ7¸%Ñ?Ô @à˜DŸK™KÒ'Ø—O‘O EÓ*¨d¯j©j«lÒ:à˜DŸK™KÒ'Ø—O‘O EÓ*¨d¯j©j«lÒ:à$�ؘ�=Ð à �9‰9�UÓ €DØ €DØ �_‰_Ó €FØ €Eá �&˜E’/ð(— ‘ ˜fÓ%ˆØˆ á à˜DŸK™KÒ'¨5¨=à˜YÑ&Ø% fÑ-�EØ!)�Jñ Ø �G‰G�M‰MÐ.°%¸ÄÀUÃÐ1LÑLÔ MÙØ &��W‘ Ü#& u£:��ZÑ Ø!%§¡¨j�hŠHà �G‰G�L‰LÜð+óð˜&�/ñ "õ ð �T—[‘[Ò Ø% t§{¡{�(‰Ø �T—[‘[Ò Ø �9‰9Œ;˜2Ÿ9™9 UÓ+×/Ñ/Ð0BÓCÀxÒOØ!)¨4¯;©;�h‰HØ �Y‰YŒ[˜RŸY™Y uÓ-×1Ñ1°)Ó<ÀÒFØ!)¨4¯;©;�h‰Hð $×8Ñ8¸À8ÓLÐ ØÐ+Ñ+Ø%-¨t¯{©{˜(‘ØÐ-Ñ-ØŸ;™;�à€Nð �‰×ј?Ð,CÔDØ �I‰IŒKØ �I‰I�eÓ × Ñ Ð!;Ó <ÀÒ Fàˆà �9‰9‹;€Dà�D—K‘KÒØ �t—{‘{Ò "Ù Ø �8‰8�H˜dÔ #Ù à ˆ?ؘ4Ÿ;™;Ò&Ø$‘à"�Ø—‘˜˜t R¨°(¸HÓEˆð �'ˆ>Ðð �)Ñ   §¡°Ó 6¸$¿*¹*»,Ò F؈؈ð �'ˆ>ÐðˆØ �'ˆ>Ðrc ó�—|j«} d} |j«} |j«} | j«} | j «}|s4|j |t j| |j«««} |s| r| jjd«|s| ro| jjtd««|rd}n| j«}|j||| j«| j«|||¬«}|S| jjd«| j«}|S)amake a new manifest entry (or reuse a new one) given an initialised manifest context and precomputed list of - files: files affected by the commit - added: new entries in the manifest - drop: entries present in parents but absent of this one Create a new manifest revision, reuse existing ones if possible. Return the nodeid of the manifest revision. NsInot reusing manifest (no file change in changelog, but manifest differs) scommitting manifest )Úmatchs;reusing manifest from p1 (listed files actually unchanged) )rr&r'r}rMÚdiffr Ú matchfilesrBrrVr3rrPÚwriterU)r@r›r?r—ÚmanifestrBr{r¢Úhas_some_narrow_actionrÚmdr&r'r•r™r¿rAs rr“r“½s€ð, �8‰8‹:€Dà €Bð �‰‹€BØ �‰‹€BØ �N‰NÓ €Eà �‰‹€Bá ð�W‰W�Xœw×1Ñ1°$¸¿ ¹ » ÓDÓ EˆÙ ‘RØ �‰� ‰ ð 2ô ñ ‘Ø �‰� ‰ ”QÐ/Ó0Ô1ñ "؉Eà×$Ñ$Ó&ˆEØ �Z‰ZØ Ø Ø �O‰OÓ Ø �O‰OÓ Ø Ø Øðó ˆð €Ið �‰� ‰ Ø Oô ð�_‰_Ó ˆà €Ircóü—|j}|j}|j}|j}t |j «}t |«ds|xsd}|xsd}|xsd}|xsd}||||f}|€td„|D««ri}|�tj||«}||d<|�tj||«}||d<|�tj||«}||d<|�tj||«}||d<|S)z2encode copy information into a `extra` dictionnaryrNc3ó$K—|]}|du–—Œ y­w)N©)Ú.0Úxs rÚ z%_extra_with_copies..sèø€ÐB±M¨q˜Q dœ]±Mùs‚rrrr ) Úcopied_from_p1Úcopied_from_p2r{rrqr]rÚanyrÚ encodecopiesÚencodefileindices)rr,rBr`rbrYr[Ú extrasentriess rr1r1s!€à×#Ñ#€HØ×#Ñ#€HØ—‘€JØ—=‘=€LÜ �5—=‘=Ó !€EÜ ˜DÓ ! !Ò $ð Ò#˜tˆØÒ#˜tˆØÒ' 4ˆ Ø#Ò+ tˆ à˜h¨ °LÐ@€MØ €}œÑB±MÓBÔB؈ØÐÜ×(Ñ(¨°Ó9ˆØ%ˆˆkÑØÐÜ×(Ñ(¨°Ó9ˆØ%ˆˆkÑØÐÜ×/Ñ/°°zÓBˆ Ø)ˆˆmÑØÐÜ×1Ñ1°%¸ÓFˆ Ø!-ˆˆoÑØ €Lr)FN)NF)F)Úi18nrr"rrÚrrrr r r rrJr+rNr\r�r“r1rÈrrÚrÔsOðõ÷÷ ÷ò1ó&Nób(òVó"^òBbð\!óGóT r