Ë ïABÈædãóP—ddlmZmZmZmZddlmZmZddl m Z e j«Z ejej«Gd„d««Zejej «Gd„d««Zejej$«Gd „d ««Zy ) é)ÚmatchÚpathutilÚpycompatÚutil)Ú repositoryré)ÚgitutilcóÚ—eZdZdZd„Zd„Zd„Zd„Zd„Zd„Z e Z d„Z d „Z d „Z d „Zd „Zd „Zdd„Zej&d„«Zd„Zd„dfd„Zd„Zdd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z y) ÚgittreemanifestzƒExpose git trees (and optionally a builder's overlay) as a manifestdict. Very similar to mercurial.manifest.treemanifest. có6—||_||_|€i}||_y)a¹Initializer. Args: git_repo: The git_repo we're walking (required to look up child trees). root_tree: The root Git tree object for this manifest. pending_changes: A dict in which pending changes will be tracked. The enclosing memgittreemanifestctx will use this to construct any required Tree objects in Git during it's `write()` method. N)Ú _git_repoÚ_treeÚ_pending_changes)ÚselfÚgit_repoÚ root_treeÚpending_changess ú6usr/lib/python3.12/site-packages/hgext/git/manifest.pyÚ__init__zgittreemanifest.__init__s%€ð"ˆŒØˆŒ Ø Ð "Ø ˆOà /ˆÕócób—tj|«}d}||jvr|j|}|€t‚|S|j}|j d«}|j}|ddD] }||}|j |j}Œ"||d}|jtjk(rd} na|jtjk(rd} nA|jtjk(rd} n!tdt|j«z«‚|jj| fS)z‘Given a path, load its node and flags, or raise KeyError if missing. This takes into account any pending writes in the builder. NÚ/éÿÿÿÿróxólzunsupported mode %s)rÚfsdecoderÚKeyErrorrÚsplitr ÚidÚfilemodeÚpygit2ÚGIT_FILEMODE_BLOBÚGIT_FILEMODE_BLOB_EXECUTABLEÚGIT_FILEMODE_LINKÚ ValueErrorÚoctÚraw) rÚpathÚupathÚentÚvalÚtÚcompsÚteÚcompÚflagss rÚ_resolve_entryzgittreemanifest._resolve_entry+s€ô ×!Ñ! $Ó'ˆØˆØ �4×(Ñ(Ñ (Ø×'Ñ'¨Ñ-ˆC؈{Ü�؈JØ �J‰JˆØ— ‘ ˜CÓ ˆØ �Z‰ZˆØ˜#˜2“JˆDØ�D‘ˆBØ—‘˜rŸu™uÑ%‰Aðð��b‘ ‰lˆØ �<‰<œ6×3Ñ3Ò 3؉EØ �\‰\œV×@Ñ@Ò @؉EØ �\‰\œV×5Ñ5Ò 5؉EäÐ2´S¸¿¹Ó5FÑFÓGÐ GØ�v‰v�z‰z˜5Ð Ð rcó*—|j|«dS©Nr©r1©rr(s rÚ __getitem__zgittreemanifest.__getitem__Hs€Ø×"Ñ" 4Ó(¨Ñ+Ð+rcó$—|j|«S©Nr4r5s rÚfindzgittreemanifest.findKs€Ø×"Ñ" 4Ó(Ð(rcól—tt|jtj««««Sr8)ÚlenÚlistÚwalkÚmatchmodÚalways©rs rÚ__len__zgittreemanifest.__len__Ns"€Ü”4˜Ÿ ™ ¤(§/¡/Ó"3Ó4Ó5Ó6Ð6rcóL— tt|««y#t$rYywxYw©NTF)ÚnextÚiterÚ StopIterationr@s rÚ __nonzero__zgittreemanifest.__nonzero__Qs(€ð Ü ”�d“Ô ØøÜò Ùð ús ‚— #¢#cóF— |j|«y#t$rYywxYwrC©r1rr5s rÚ __contains__zgittreemanifest.__contains__Zs*€ð Ø × Ñ  Ô %ØøÜò Ùð ús ‚” Ÿ cóH—|jtj««Sr8)r=r>r?r@s rÚiterkeyszgittreemanifest.iterkeysas€Ø�y‰yœŸ™Ó*Ó+Ð+rcó4—t|j««Sr8)r<rLr@s rÚkeyszgittreemanifest.keysds€Ü�D—M‘M“OÓ$Ð$rcó"—|j«Sr8)rLr@s rÚ__iter__zgittreemanifest.__iter__gs€Ø�}‰}‹ÐrcóD—||j|«f|j|<yr8)r0r)rr(Únodes rÚ __setitem__zgittreemanifest.__setitem__js €Ø&*¨D¯J©J°tÓ,<Ð&<ˆ×јdÒ#rcó"—d|j|<yr8)rr5s rÚ __delitem__zgittreemanifest.__delitem__ms€à&*ˆ×јdÒ#rNcóî—|�Utj|d„«}t|j|««}|j|«D�chc] }||vsŒ|’Œ c}S|D�chc] }||vsŒ|’Œ c}Scc}wcc}w)Ncó—yr8©)r(Úmsgs rÚz,gittreemanifest.filesnotin..ss€¸tr)r>ÚbadmatchÚsetr=)rÚotherrÚsm2Úfs rÚ filesnotinzgittreemanifest.filesnotinqsx€Ø Ð Ü×%Ñ% eÑ-CÓDˆEÜ�e—j‘j Ó'Ó(ˆCØ#Ÿy™y¨Ô/Ó@Ñ/˜!°1¸C²<’AÐ/Ñ@Ð @ÙÓ2™4�a 1¨E¢>’˜4Ñ2Ð2ùòAùÚ2sÁ A-ÁA-Á A2Á&A2có,—tj|«Sr8)rÚdirsr@s rÚ_dirszgittreemanifest._dirsxs€ä�}‰}˜TÓ"Ð"rcó—||jvSr8)rc)rÚdirs rÚhasdirzgittreemanifest.hasdir|s€Ø�d—j‘jÐ Ð rcó—y)NTrX©Úxs rrZzgittreemanifest.s€¨$rFc󰇇‡‡‡‡ —iŠˆˆˆˆˆˆ fd„}gŠ |‰j‰jd«‰ r!‰ j«\}}}||||«‰ rŒ!‰S)aœFinds changes between the current manifest and m2. The result is returned as a dict with filename as key and values of the form ((n1,fl1),(n2,fl2)), where n1/n2 is the nodeid in the current/other manifest and fl1/fl2 is the flag in the current/other manifest. Where the file does not exist, the nodeid will be None and the flags will be the empty string. cóÜ•—|€i}|€i}|D�]!}|tj|j«z}|jtj k(rG ||j}|jtj k7rd}‰j|dz||f«ŒŠ‰j|«\}} ||j}‰ j|«\}} |�4|jtj k(r‰j|dzd|f«‰ |«s�Œ||k7s|| k7r ||f|| ff‰ |<�Œ‰ s�Œd‰ |<�Œ$|D]Ž}|j|vrŒ|tj|j«z}|jtj k(r‰j|dzd|f«Œi‰ |«sŒr‰ j|«\}} d|| ff‰ |<Œ�y#t $rd}Y�ŒUwxYw#t $r d}d\}} Y�ŒwxYw)zQcompares two trees and appends new tree nodes to examine to the stackNó/©Nr) rÚfsencodeÚnameÚtyper!Ú GIT_OBJ_TREErÚappendr9)Út1Út2ÚsubdirÚe1ÚrealnameÚe2Ún1Úfl1Ún2Úfl2Úcleanrr]ÚresultrÚstacks €€€€€€rÚ_iterativediffz,gittreemanifest.diff.._iterativediff‹síø€ðˆzØ�؈zØ�ä�Ø!¤H×$5Ñ$5°b·g±gÓ$>Ñ>�à—7‘7œf×1Ñ1Ò1ð"Ø §¡™[˜ØŸ7™7¤f×&9Ñ&9Ò9Ø!%˜Bð—L‘L (¨T¡/°2°rÐ!:Õ;à"Ÿi™i¨Ó1‘G�B˜ð.Ø §¡™[˜Ø"'§*¡*¨XÓ"6™˜˜Cð �~¨"¯'©'´V×5HÑ5HÒ*HØŸ ™  h°¡o°t¸RÐ%@ÔAá  œ?Ù à˜R’x 3¨#¢:Ø-/°¨I¸¸C°yÐ+A˜˜xÓ(ÛØ+/˜˜xÓ(ð?óB�Ø—7‘7˜b‘=Øà!¤H×$5Ñ$5°b·g±gÓ$>Ñ>�à—7‘7œf×1Ñ1Ò1Ø—L‘L (¨T¡/°4¸Ð!<Õ=Ù˜8•_Ø#Ÿj™j¨Ó2‘G�B˜Ø(3°b¸#°YÐ'?�F˜8Ò$ñøô3$ò"Ø!›ð"ûô$ò.Ø!˜Ø"-™˜›Cð.ús$Á.GÂ+#GÇ GÇGÇG+Ç*G+r)rÚpop) rr]rr}r€rursrtr~rs ```` @@rÚdiffzgittreemanifest.diffs^ý€ðˆ÷3 @ñ3 @ðjˆÙ�t—z‘z 5§;¡;°Ô4ÙØ"ŸY™Y›[‰NˆF�B˜á ˜2˜r 6Ô *òð ˆ rcóN—|j|«\}}||f|j|<yr8)r1r)rr(ÚflagrRÚ unused_flags rÚsetflagzgittreemanifest.setflagÉs+€Ø ×/Ñ/°Ó5шˆkØ&*¨D jˆ×јdÒ#rcóN— |j|«dS#t$r|cYSwxYwr3rI)rr(Údefaults rÚgetzgittreemanifest.getÍs1€ð Ø×&Ñ& tÓ,¨QÑ/Ð /øÜò ØŠNð ús ‚– $£$cóJ— |j|«dS#t$rYywxYw)NrrrIr5s rr0zgittreemanifest.flagsÓs/€ð Ø×&Ñ& tÓ,¨QÑ/Ð /øÜò Ùð ús ‚– "¡"cój—t|j|jt|j««Sr8)r r rÚdictrr@s rÚcopyzgittreemanifest.copyÙs)€ÜØ �N‰N˜DŸJ™J¬¨T×-BÑ-BÓ(Có ð rc#ó(K—|D] }||–—Œ y­wr8rX©rr_s rÚitemszgittreemanifest.itemsÞsèø€ÛˆAà�q‘'‹Mñùs‚có"—|j«Sr8)r�r@s rÚ iteritemszgittreemanifest.iteritemsãs€Ø�z‰z‹|Ðrc#ó@K—|D]}|j|«–—Œy­wr8r4r�s rÚ iterentrieszgittreemanifest.iterentriesæs!èø€ÛˆAà×%Ñ% aÓ(Ó (ñùs‚có—J‚r8rXr@s rÚtextzgittreemanifest.textës€Øˆurc#óFK—|D]˜}|tj|j«z}|jtj k(r7|j |j|j||dz«D]}|–—ŒŒy||«sŒ‚tj|«–—Œšy­w)Nrl) rrnrorpr!rqÚ _walkonetreer r)rÚtreerrur.rwÚinners rr˜zgittreemanifest._walkonetreeîs‰èø€ÛˆBà¤× 1Ñ 1°"·'±'Ó :Ñ:ˆHØ�w‰wœ&×-Ñ-Ò-Ø!×.Ñ.Ø—N‘N 2§5¡5Ñ)¨5°(¸T±/ö�Eð “Kññ�x•Ü×'Ñ'¨Ó1Ó1ñùs ‚BB!ÂB!có:—t|j|j|d««}|jj «D��chc] \}}|�Œ |’Œ }}}|jD�chc] }||«sŒ |’Œ}}t t ||z|z ««Scc}}wcc}wrm)r\r˜rrr�rEÚsorted)rrÚbaselineÚpÚvÚdeletedÚpends rr=zgittreemanifest.walkús’€ô�t×(Ñ(¨¯©°U¸CÓ@ÓAˆØ!%×!6Ñ!6×!<Ñ!<Ô!>ÔLÑ!>™˜˜AÀ!Á)’1Ð!>ˆÑLØ×0Ò0Ó=Ñ0�a±E¸!µH’Ð0ˆÐ=Ü”F˜H t™O¨wÑ6Ó7Ó8Ð8ùóMùÚ=sÁ BÁBÁ$ BÁ2Br8)!Ú__name__Ú __module__Ú __qualname__Ú__doc__rr1r6r9rArGÚ__bool__rJrLrNrPrSrUr`rÚ propertycachercrfr‚r†r‰r0r�r�r’r”r–r˜r=rXrrr r s®„ñò 0ò&!ò:,ò)ò7òð€Hòò,ò%òò=ò+ó3ð ×Ññ#óð#ò!ñ!/°eóHòT1óò ò  ò ò ò)ò ò 2ó9rr có,—eZdZd„Zd„Zdd„Zd„Zd„Zy)Úgittreemanifestctxcó —||_||_yr8)Ú_repor)rÚrepoÚgittrees rrzgittreemanifestctx.__init__s€ØˆŒ ؈� rcóD—t|j|jd«Sr8)r r«rr@s rÚreadzgittreemanifestctx.read s€Ü˜tŸz™z¨4¯:©:°tÓ<Ð.:s €´S¸³V¸Q±Kr)Úkeyrlr)rrrT)r¿Úreverse)Ú isinstancer>Ú alwaysmatcherrrbr<rrr«Ú TreeBuilderrœrrrrrr�ÚrsplitÚremover!r"r#r$Úinsertr Ú togitnoder;ÚwriteÚGIT_FILEMODE_TREEr')rÚ transactionÚlinkÚp1Úp2ÚaddedÚremovedrÚ touched_dirsÚtreesÚbuildersÚdr-ÚfullÚpartÚparentÚparent_tree_idÚnewr_ÚinfoÚdirnameÚbasenameÚnÚflÚmodeÚbÚcbÚdnÚbns rrÈzmemgittreemanifestctx.write)s¥€ñ œJ u¬h×.DÑ.DÔEÐEÐEä—}‘}¤T¨$×*?Ñ*?Ó%@ÓAˆ à �—‘ð ˆð �—‘×'Ñ'¨¯ © Ó3ð ˆô˜ Ñ*?×@ˆAØ�CŠxàØ—G‘G˜D“MˆE؈DÛ�ؘt™�ðØ%+¬H×,=Ñ,=¸dÓ,CÑ%D×%GÑ%G�NØŸ*™* ^Ñ4�Cð˜˜t™ Ñ#�Ø�?à"%�E˜$‘KØ%)§Z¡Z×%;Ñ%;¸CÓ%@�H˜T’Nð #%�E˜$‘KØ%)§Z¡Z×%;Ñ%;Ó%=�H˜T’Nñ%ð Að2×,Ñ,×2Ñ2Ö4‰GˆAˆtؘ1‰}Ø�Ø‘à$%§H¡H¨T°1Ó$5Ñ!�˜Ø ™.�؈|ؘÑ!×(Ñ(¬×):Ñ):¸8Ó)DÕEà‘��2ä×1Ñ1Ü ×=Ñ=Ü ×2Ñ2ñðñ �ð ˜Ñ!×(Ñ(Ü×%Ñ% hÓ/´×1BÑ1BÀ1Ó1EÀtõð!5ô*˜¤c°4×8ˆAØ�CŠxÙØ˜!‘ˆBØ—X‘X˜d AÓ&‰FˆB�Ø �R‰L× Ñ Ü×!Ñ! "Ó% r§x¡x£z´6×3KÑ3Kõ ð 9ð˜‰}×"Ñ"Ó$×(Ñ(Ð(øôW òà“CðúsÂ11J3Ê3 KËKr8)r¢r£r¤rr¯r�rÈrXrrr¶r¶s„ò#ò Nò=ô G)rr¶N)Ú mercurialrr>rrrÚmercurial.interfacesrÚ interfaceutilÚr Ú get_pygit2r!Ú implementerÚ imanifestdictr Úimanifestrevisionstoredr©Úimanifestrevisionwritabler¶rXrrÚrìs·ð÷ó÷ õð ˆ× Ñ Ó €ð€×ј:×3Ñ3Ó4÷o9ðo9ó5ðo9ðd€×ј:×=Ñ=Ó>÷!ð!ó?ð!ð(€×ј:×?Ñ?Ó@÷V)ðV)óAñV)r