Ë 8ËíÌ0ÄTúãó†—ddlZddlZddlmZddlmZmZddlmZm Z m Z ddl m Z d„Z d„ZGd „d e j«Zy) éN)Ú_)ÚerrorÚutil)ÚdateutilÚprocutilÚ stringutilé)Úcommonc#ófK— tj|«}|sy|–—Œ#t$rYywxYw­w)z,Yield the dictionary objects generated by p4N)ÚmarshalÚloadÚEOFError)ÚfÚds ú4usr/lib/python3.12/site-packages/hgext/convert/p4.pyÚloaditerrs>èø€ð ØÜ— ‘ ˜Q“ˆAÙØØŠGð øô ò Ù ð üs ‚1„"œ1�"¢ .«1­.®1cóF—gd¢}|D]\}}|j||«}Œ|S)aQPerforce escapes special characters @, #, *, or % with %40, %23, %2A, or %25 respectively >>> decodefilename(b'portable-net45%252Bnetcore45%252Bwp8%252BMonoAndroid') 'portable-net45%2Bnetcore45%2Bwp8%2BMonoAndroid' >>> decodefilename(b'//Depot/Directory/%2525/%2523/%23%40.%2A') '//Depot/Directory/%25/%23/#@.*' ))s%2Aó*)s%23ó#)s%40ó@)s%25ó%)Úreplace)ÚfilenameÚ replacementsÚkÚvs rÚdecodefilenamer%s0€ò€Ló ‰ˆˆ1Ø×#Ñ# A qÓ)‰ðà €Oócó<‡—eZdZdˆfd„ Zd„Zd„Zd„Zejd„«Z ejd„«Z ejd„«Z ejd„«Z ejd „«Z ejd „«Zd „Zd „Zd „Zdd„Zd„Zd„Zd„Zd„ZˆxZS)Ú p4_sourcecó:•—ddlm}tt|�||||¬«d|vr2|j d«s!t jtd«|z«‚t jdd¬ «i|_ |jjd d |j«|_tj d «|_tj d «|_tj d«|_|r-t)|«dkDrt+j,td««‚yy)Nr )Úconvcmd)Úrevsó/ó//s%%s does not look like a P4 repositoryóp4F)Úabortóconverts p4.encodingsE([a-z]+)?(text|binary|symlink|apple|resource|unicode|utf\d+)(\+\w+)?$sA\$(Id|Header|Date|DateTime|Change|File|Revision|Author):[^$\n]*\$s\$(Id|Header):[^$\n]*\$s8p4 source does not support specifying multiple revisions)Úr"Úsuperr Ú__init__Ú startswithr ÚNoReporÚ checktoolÚrevmapÚuiÚconfigÚ orig_encodingÚencodingÚreÚcompileÚre_typeÚ re_keywordsÚre_keywords_oldÚlenrÚAbort)Úselfr0ÚrepotypeÚpathr#r"Ú __class__s €rr+zp4_source.__init__:sþø€åä Œi˜Ñ'¨¨H°dÀÐ'ÔFà �4‰< §¡°Ô 6Ü—-‘-ÜÐ:Ó;¸dÑBóð ô ×ј eÕ,àˆŒ ØŸ™Ÿ™Ø ˜¨×(=Ñ(=ó ˆŒ ô—z‘zð ó ˆŒ ôŸ:™:ð ó ˆÔô "Ÿz™zÐ*EÓFˆÔá ”C˜“I ’MÜ—+‘+Üð*óóð ð"ˆ4rcó—||_y)a—Sets the parsed revmap dictionary. Revmap stores mappings from a source revision to a target revision. It is set in convertcmd.convert and provided by the user as a file on the commandline. Revisions in the map are considered beeing present in the repository and ignored during _parse(). This allows for incremental imports if a revmap is provided. N)r/)r;r/s rÚ setrevmapzp4_source.setrevmap]s €ðˆ� rcó¼—dtj|«z}tj|d¬«}i}t|«D]}|j dd«}|sŒd||<Œ|S)zRead changes affecting the pathsp4 -G changes -s submitted %sórb©ÚmodeóchangeNT)rÚ shellquoteÚpopenrÚget)r;r=ÚcmdÚstdoutÚ p4changesrÚcs rÚ _parse_viewzp4_source._parse_viewjs_€à.´×1DÑ1DÀTÓ1JÑJˆÜ—‘ ¨%Ô0ˆØˆ ܘ&Ö!ˆAØ—‘�i Ó&ˆAÚØ#� ˜!’ ð"ðÐrc ó| —i}i}i}i}i}i}g} |jtd««d|vrO|j|j|««|j d«r|j d«r|dddi} nåddi} nàdt j|«z} tjt j| d ¬ ««} i} | D]—} | j d «sŒ| | j«\}}|j|j|««|j d «r|j d «r |dd}|dd}|d d}||jd«dzd}|| |<Œ™t|j«t¬«}t| j«t d¬«}|j"j%dd«}|jtd««d}|D�]Ê}|rt|«t|«krŒ|j&r%t|«t|j&d«kDrŒO||j(vr|}Œ`|r|g}ng}|j+|«}|j-||«}|j.j1d«}t!|«dkDr|dj3d«}nd}d|j4|fz}|jt7j8|d«dz«g}i}g}d}d|z|vrÅd|z|vr¾|d|z}d}|D]N} |j;«j | j;««sŒ1t=| | |t!| «dz«}n|rK|j?||d|zf«|||<|jAd|z«dk(r|j?|«|||<|dz }d|z|vrd|z|vrŒ¾|D]Ý}||}dt j|«z}!t j|!d ¬ «}"d}#tC|"«D]p}d}$d}d |z|vrU|d |z|k(r=|d|zdk(r2d}%d!||%fz|vr'|d"||%fzd#k(r |d!||%fz}$n|%dz }%d!||%fz|vrŒ'|dz }d |z|vrŒU|$sŒf|$|vsŒk||$}#n|#r|#||<Œ¿|jEtd$«||fz«Œß|||<|||<|||<|}�ŒÍ|rt!|«dkDr|g} |||| |d%œS)&z4Prepare list of P4 filenames and revisions to importsreading p4 views r$r%s/...Néýÿÿÿrsp4 -G client -o %srBrCsViews...ér )ÚkeyT)rQÚreverser(s p4.startrevscollecting p4 changelists rs s **empty changelist description**s%s %séPó s depotFile%dsrev%dsaction%dsmove/addsp4 -G filelog %sschange%ds file%d,%dshow%d,%ds moved froms*cannot find source for copied file: %s@%s )ó changesetófilesócopiesóheadsó depotname)#ÚstatusrÚupdaterMr,ÚendswithrrFr r rGÚsplitÚfindÚsortedÚkeysÚintr9r0r1r#r/Ú_fetch_revisionÚ_construct_commitÚdescÚ splitlinesÚrstripÚrevrÚellipsisÚlowerrÚappendrHrÚwarn)&r;r0r=rKÚ changesetÚ files_mapÚ copies_mapÚ localnameÚ depotnameÚheadsÚviewsrIÚ clientspecÚclientÚsviewÚcviewÚ vieworderÚstartrevÚlastidÚchangeÚparentsrrLÚdescarrÚ shortdescÚtÚfilesÚcopiesÚ copiedfilesÚiÚoldnamerrÚflcmdÚflstdoutÚcopiedfilenameÚ copiedoldnameÚjs& rÚ_parsezp4_source._parseusI€àˆ ؈ ؈ ؈ ؈ ؈ ؈à � ‰ ”!Ð)Ó*Ô+ð �4‰<Ø × Ñ ˜T×-Ñ-¨dÓ3Ô 4Ø�‰˜uÔ%¨$¯-©-¸Ô*@ؘc˜r˜ CÐ(‘à ˜ ‘à'¬(×*=Ñ*=¸dÓ*CÑCˆCÜ Ÿ™¤h§n¡n°S¸uÔ&EÓFˆJàˆEÛ$�Ø×$Ñ$ WÕ-Ø#-¨fÑ#5×#;Ñ#;Ó#=‘L�E˜5Ø×$Ñ$ T×%5Ñ%5°eÓ%<Ô=Ø—~‘~ fÔ-°%·.±.ÀÔ2HØ % c r  ˜Ø % c r  ˜Ø! ! "˜I�EØ! %§*¡*¨TÓ"2°QÑ"6Ð"8Ð9�EØ#(�E˜%’Lð%ô˜9Ÿ>™>Ó+´Ô5ˆ ô˜5Ÿ:™:›<¬S¸$Ô?ˆ ð—7‘7—>‘> *¨nÓ=ˆð � ‰ ”!Ð2Ó3Ô4؈܈FÙœC ›K¬#¨h«-Ò7ØØ�yŠyœS ›[¬3¨t¯y©y¸©|Ó+<Ò<ØØ˜Ÿ™Ñ$à�ØáØ!˜(‘à�à×$Ñ$ VÓ,ˆAØ×&Ñ& q¨'Ó2ˆAà—f‘f×'Ñ'¨Ó-ˆGÜ�7‹|˜aÒØ# A™J×-Ñ-¨gÓ6‘ à?� à˜AŸE™E 9Ð-Ñ-ˆAØ �I‰I”j×)Ñ)¨!¨RÓ0°5Ñ8Ô 9àˆE؈F؈K؈AØ! AÑ%¨!Ñ+°¸A±À!Ñ0CؘN¨QÑ.Ñ/�Ø�Û"�AØ—}‘}“×1Ñ1°!·'±'³)Õ<Ü#1°%¸±(¸WÄSÈÃVÀXÐ=NÑ2NÓ#O˜Ùð#ñØ—L‘L (¨A¨h¸©l©OÐ!<Ô=Ø*1�I˜hÑ'Ø—u‘u˜[¨1™_Ó-°Ò<Ø#×*Ñ*¨8Ô4Ø)1�I˜gÑ&Ø�Q‘�ð" AÑ%¨!Ñ+°¸A±À!Ò0Có (�Ø# HÑ-�à+¬h×.AÑ.AÀ'Ó.JÑJ�Ü#Ÿ>™>¨%°eÔ<�à!%�Ü! (Ö+�AØ$(�Mà�AØ&¨™?¨qÑ0à˜k¨A™oÑ.°&Ò8Ø ! +°¡/Ñ 2°kÒ Aà !˜AØ#/°1°a°&Ñ#8¸QÑ">Ø#$ [°A°q°6Ñ%9Ñ#:¸mÒ#KØ45°lÀaÈÀVÑ6KÑ4L MØ$)Ø ! Q¡ ð $0°1°a°&Ñ#8¸QÒ">ð ˜Q™˜ð'¨™?¨qÒ0ò%¨¸)Ò)CØ)2°=Ñ)A˜Ùð',ñ*"Ø'5�F˜8Ò$à—G‘GÜÐHÓIØ# VÐ,ñ-õð?(ðH!"ˆI�fÑ Ø %ˆI�fÑ Ø!'ˆJ�vÑ ØŠFðm ñp ”c˜)“n qÒ(Ø�HˆEð$ØØ!ØØ#ñ  ð rcóN—|j|j|j«S©N)r‰r0r=©r;s rÚ _parse_oncezp4_source._parse_onces€à�{‰{˜4Ÿ7™7 D§I¡IÓ.Ð.rcó —|jdS)NrW©r�rŒs rr€zp4_source.copies s€à×Ñ  Ñ*Ð*rcó —|jdS)NrVr�rŒs rrzp4_source.filesó€à×Ñ Ñ)Ð)rcó —|jdS)NrUr�rŒs rrlzp4_source.changesetó€à×Ñ  Ñ-Ð-rcó —|jdS)NrXr�rŒs rrqzp4_source.headsr‘rcó —|jdS)NrYr�rŒs rrpzp4_source.depotnamer“rcó—|jSr‹)rqrŒs rÚgetheadszp4_source.getheadss €Ø�z‰zÐrcó6—dtjd|j||fz«z}d} tj|d¬«}d}g}d}t |«D]ö} | d} | j d«} | dk(r|st | d| «}nÈ|‚| d k(r¢| j d «} | d vry |jj| d «} | r†d}| jd«xsd| jd«xsdz}d|vrd}| jd«dk(rd}d|vr |j}n,d|vr(|j}n| dk(s| dk(r|j| «d}Œø|sn�Œ&|€y dj|«}|r|jd|«}|dk(r|jd«r|dd}||fS)Nsp4 -G print %ss%s#%srBrCscodesdataserrorsgenericsstatsaction)spurgesdeletes move/delete)NNstyperr éóxrPssymlinkólskoókstextsbinarys$\1$rTéÿÿÿÿ)rrFrprGrrHÚIOErrorr6ÚmatchÚgroupr8r7rjÚjoinÚsubr\)r;ÚnamergrIÚ lasterrorrJrDÚcontentsÚkeywordsrÚcodeÚdataÚactionÚp4typeÚflagss rÚgetfilezp4_source.getfile"sՀؤ(×"5Ñ"5Ø ˜Ÿ™ tÑ,¨cÐ2Ñ 2ó# ñ ˆðˆ ØÜ—^‘^ C¨eÔ4ˆFàˆD؈H؈Hä˜fÖ%�ؘ‘z�Ø—u‘u˜W“~�à˜8Ò#ñ%Ü$+¨A¨j©M¸4Ó$@˜ áà'˜à˜W’_ØŸU™U 9Ó-�FØÐ!FÑFÙ)Ø!Ÿ\™\×/Ñ/°°'± Ó;�FÙØ"˜Ø!'§¡¨a£Ò!7°CØ"ŸL™L¨›OÒ2¨sñ!˜ð  5™=Ø#'˜DØ!Ÿ<™<¨›?¨jÒ8Ø#'˜DØ  E™>Ø'+×';Ñ';™HØ! U™]Ø'+×'7Ñ'7™Hà˜W’_¨° Ò(9Ø—O‘O DÔ)à ‘ ðI&ñLØñ]ð` ˆ<Øà—8‘8˜HÓ%ˆá Ø—|‘| H¨hÓ7ˆHØ �4Š<˜H×-Ñ-¨eÔ4Ø  �}ˆHà˜ˆ~Ðrcó�—|rtjtd««‚|j||j|t «fS)Ns'convert from p4 does not support --full)rr:rrr€Úset)r;rgÚfulls rÚ getchangeszp4_source.getchangesds:€Ù Ü—+‘+œaÐ JÓKÓLÐ LØ�z‰z˜#‰ § ¡ ¨CÑ 0´#³%Ð7Ð7rc ó—|j|jdd««}t|d«df}|€g}tj|j|d«t j |d«||d|d|d|dd œ¬ «S) ze Constructs a common.commit object from an unmarshalled `p4 describe` output sdescrstimerNsusers%Y-%m-%d %H:%M:%S %1%2rE)r&sconvert_revision)ÚauthorÚdater{rdÚbranchrgÚextra)ÚrecoderHrar ÚcommitrÚdatestr)r;Úobjr{rdr³s rrczp4_source._construct_commitisŒ€ð �{‰{˜3Ÿ7™7 7¨CÓ0Ó1ˆÜ�C˜‘LÓ! 1Ð%ˆØ ˆ?؈Gä�}‰}Ø—;‘;˜s 7™|Ó,Ü×!Ñ! $Ð(AÓBØØØØ�I‘ؘi™.¸sÀ9¹~ÑNô ð rcód—d|z}tj|d¬«}tj|«S)zXReturn an output of `p4 describe` including author, commit date as a dictionary.sp4 -G describe -s %srBrC)rrGr r )r;rgrIrJs rrbzp4_source._fetch_revision}s-€ð&¨Ñ+ˆÜ—‘ ¨%Ô0ˆÜ�|‰|˜FÓ#Ð#rcóâ—||jvr|j|S||jvr$|j|«}|j|d¬«St j t d«|z«‚)N)r{s1cannot find %s in the revmap or parsed changesets)rlr/rbrcrr:r)r;rgrs rÚ getcommitzp4_source.getcommit„sn€Ø �$—.‘.Ñ Ø—>‘> #Ñ&Ð &Ø �D—K‘KÑ Ø×$Ñ$ SÓ)ˆAØ×)Ñ)¨!°TÐ)Ó:Ð :Ü�k‰kÜ ÐBÓ CÀcÑ Ió ð rcó—iSr‹©rŒs rÚgettagszp4_source.gettagsŽs€Øˆ rcó^—t|j|D�cgc]}|d‘Œ c}«Scc}w)Nr)r_r)r;rgr‚Úxs rÚgetchangedfileszp4_source.getchangedfiles‘s+€Ü T§Z¡Z°¢_Ó5¡_ �q˜“t _Ñ5Ó6Ð6ùÒ5s— *r‹)Ú__name__Ú __module__Ú __qualname__r+r@rMr‰rÚ propertycacher�r€rrlrqrpr—r¬r°rcrbr¼r¿rÂÚ __classcell__)r>s@rr r 9sàø„õ!òF ò òP ðd ×Ññ/óð/ð ×Ññ+óð+ð ×Ññ*óð*ð ×Ññ.óð.ð ×Ññ*óð*ð ×Ññ.óð.òò@òD8ó  ò($ò òö7rr )r r4Úmercurial.i18nrÚ mercurialrrÚmercurial.utilsrrrr)r rrÚconverter_sourcer r¾rrÚrÌsBðóÛ å÷÷ñõ ò  òô(Y7�×'Ñ'õY7r