Ë qý”šìVCãó—dZddlZddlZddlZddlmZddlmZddlm Z m Z m Z m Z m Z mZmZiZej"e«ZdZd„Zd„Zed d d ged «ed «fddded«ed«fddded«ed«fddded«ed«fddded«ed«fdd d!ed"«fd#d$d!ed%«fdd&d!ed'«fdd(ded)«ed*«fg e j*zed+«ej,d,¬-«d.„«Zy)/z6command to display statistics about repository historyéN)Ú_)Úopen)ÚcmdutilÚencodingÚ logcmdutilÚpatchÚpycompatÚ registrarÚscmutilsships-with-hg-corecó~—d\}}djtj||j«|j«|««}d}|j d«D]\} |r| j d«r|dz }Œ|r| j d«r|dz }Œ5| j d«rd }ŒI| j d «sŒ[d}Œ^||fS) N©rróFó ó+éó-ó@Tód)ÚjoinrÚdiffÚnodeÚsplitÚ startswith) ÚuiÚrepoÚctx1Úctx2ÚfmatchÚaddedÚremovedrÚinhunkÚls ú/usr/lib/python3.12/site-packages/hgext/churn.pyÚ changedlinesr$%s©€Ø�N€Eˆ7Ø �8‰8”E—J‘J˜t T§Y¡Y£[°$·)±)³+¸vÓFÓ G€DØ €FØ �Z‰Z˜Ö ˆÙ �a—l‘l 4Ô(Ø �Q‰J‰EÙ ˜Ÿ ™  TÔ*Ø �q‰L‰GØ �\‰\˜$Ô Ø‰FØ �\‰\˜$Õ Ø‰Fðð �7Ð Ðrc óB‡‡‡‡‡ ‡ ‡ ‡ —tj‰«Š‰jd«rˆfd„Š nA‰jd«xs‰jd«Š tj‰‰‰ «Š ˆ ˆfd„Š ‰j t d«t d«t‰«¬«Š iŠ ˆˆ ˆˆ ˆ ˆˆfd „}tj|‰‰d ‰d ‰d ‰d ¬«}tj‰|«\}}tj‰|||«D]} Œ‰ j«‰ S)zCalculate statsó dateformatcó•—|j«\}}tjtjt |«|z «ddŽ}t j |jt j‰d«««S)Nér&) ÚdateÚdatetimeÚtimeÚgmtimeÚfloatrÚ strtolocalÚstrftimeÚ strfromlocal)ÚctxÚtÚtzr)Úoptss €r#Úgetkeyzcountrate..getkey:siø€Ø—H‘H“J‰EˆAˆrÜ×$Ñ$¤d§k¡k´%¸³(¸R±-Ó&@ÀÀ!Ð&DÐEˆDÜ×&Ñ&Ø— ‘ œh×3Ñ3°D¸Ñ4GÓHÓIóð ró oldtemplateótemplatecóf•—‰j«‰j|«‰j«S©N)Ú pushbufferÚshowÚ popbuffer)r1Útmplrs €€r#r5zcountrate..getkeyEs#ø€Ø �M‰MŒOØ �I‰I�cŒNØ—<‘<“>Ð !rs analyzings revisions)ÚunitÚtotalcó •—|j«}‰ |«j«}‰ j||«}‰ jd«r‰ j|d«ddzdf‰ |<n†|j«}t |«dkDr‰j t d«|fz«y|d}t‰‰|||«}t‰ j|d«|«D��cgc] \}}||z‘Œ c}}‰ |<‰ j«ycc}}w)Nó changesets)rrrs$revision %d is a merge, ignoring... r ) ÚrevÚstripÚgetÚparentsÚlenÚnoterr$ÚzipÚ increment)r1rrBÚkeyrErÚlinesÚrr"Úamapr5r4ÚprogressÚraterrs €€€€€€€r#Úprepzcountrate..prepOs󸀨�g‰g‹iˆÙ�S‹k×ÑÓ!ˆØ�h‰h�s˜CÓ ˆØ �8‰8�MÔ "ØŸ™ # tÓ,¨QÑ/°!Ñ3°QÐ7ˆD�ŠIà—k‘k“mˆGÜ�7‹|˜aÒØ—‘œÐBÓCÀsÀfÑLÔMØà˜1‘:ˆDÜ   T¨4°°fÓ=ˆEÜ+.¨t¯x©x¸¸VÓ/DÀeÔ+LÔMÑ+L¡4 1 a˜˜Q›Ð+LÒMˆD�‰Ià×ÑÕùóNsÃDórevódatesincludesexclude)Úpatsr4Úrevspecr)Ú include_patsÚ exclude_pats) r Ú byteskwargsrDrÚ maketemplaterÚ makeprogressrrFÚwalkoptsÚ makewalkerr ÚwalkchangerevsÚcomplete)rrrMrSr4rPÚwoptsÚrevsÚmakefilematcherr1r5rNrOr=s``` ` @@@@r#Ú countratera5sÿ€ä × Ñ  Ó %€DØ ‡x�x� Ôõ ð�x‰x˜Ó'Ò@¨4¯8©8°KÓ+@ˆÜ×'Ñ'¨¨D°$Ó7ˆõ "ð �‰Ü ˆ,‹œa  ›o´S¸³Yðó€Hð €D÷òô$ × Ñ Ø Ø Ø�V‘ Ø �'‰]ؘ*Ñ%ؘ*Ñ%ô  €Eô'×1Ñ1°$¸Ó>Ñ€Dˆ/Ü×%Ñ% d¨D°/À4ÖHˆØðIð ×ÑÔà €KrschurnórrQs/count rate for the specified revision or revsetsREVrrRrs+count rate for revisions matching date specsDATEótr6s)template to group changesets (DEPRECATED)sTEMPLATEóTr7s{author|email}stemplate to group changesetsófr&s/strftime-compatible format for grouping by datesFORMATócrAFs"count rate by number of changesetsósssorts$sort by key (default: sort by count)sdiffstats&display added/removed lines separatelysaliasessfile with email aliasessFILEs3hg churn [-d DATE] [-r REV] [--aliases FILE] [FILE]T)Ú helpcategoryÚ inferrepoc󇇇‡‡‡—d„Ši}|jd«}|s?tjj|j d««r|j d«}|rRt |d«D]C} |j d|vxrdxsdd«\}}|j«||j«<ŒEtt‰||g|¢­i|¤Žj««} | sy|jd «r| j«n| jd „¬ «tt!d „| D«««xsd Št!d„| D««Š‰j#«} ‰j%d| z«| ‰z dz dz dz Š|jd«r‰dzŠˆˆˆˆfd„} n ‰dzŠˆˆˆfd„} ˆˆfd„Š| D]\} } ‰j'| | | ««Œy#t$r3|j«}|r‰jtd«|z«Y�Œ˜wxYw)aóhistogram of changes to the repository This command will display a histogram representing the number of changed lines or revisions, grouped according to the given template. The default template will group changes by author. The --dateformat option may be used to group the results by date instead. Statistics are based on the number of changed lines, or alternatively the number of matching revisions if the --changesets option is specified. Examples:: # display count of changed lines for every committer hg churn -T "{author|email}" # display daily activity graph hg churn -f "%H" -s -c # display activity of developers by month hg churn -f "%Y-%m" -s -c # display count of lines changed in every year hg churn -f "%Y" -s # display count of lines changed in a time range hg churn -d "2020-04 to 2020-09" It is possible to map alternate email addresses to a main address by providing a file using the following format:: = Such a file may be specified with the --aliases option, otherwise a .hgchurn file will be looked for in the working directory root. Aliases will be split from the rightmost "=". có>—|d|tj|«z zzS)Nó )rÚcolwidth)Úsr"s r#Úpadzchurn..padÊs"€Ø�4˜1œx×0Ñ0°Ó3Ñ3Ñ4Ñ4Ð4rÚaliasess.hgchurnsrbó=Nrsskipping malformed alias: %s Úsortcó$—t|d« |fS)Nr©Úsum)Úxs r#Úzchurn..ãs€¤# a¨¡d£) ¨Q¡r)rJc3ó8K—|]\}}t|«–—Œy­wr9rt©Ú.0ÚkÚvs r#Ú zchurn..æsèø€Ð1©D¡D A qœ˜QŸ©Dùó‚gð?c3ó8K—|]\}}t|«–—Œy­wr9)rFrys r#r}zchurn..çsèø€Ð*¡T™T˜Q ”#�a—&¡Tùr~sassuming %i character terminal éÚdiffstatéc 󜕗|\}}d‰|‰«d||fz‰jd‰|«zd«‰jd‰|«zd«fzS)Ns %s %15s %s%s s+%d/-%drsdiffstat.insertedrsdiffstat.deleted)Úlabel)Únamer�rr ÚcharnumÚmaxnamerors €€€€r#Úformatzchurn..formatðsfø€Ø%‰NˆE�7Ø$Ù�D˜'Ó"ؘe WÐ-Ñ-Ø—‘˜¡¨£Ñ.Ð0DÓEØ—‘˜¡¨Ó 0Ñ0Ð2EÓFð (ñð rr(c óX•—d‰|‰«t|«d‰t|««zfzS)Ns %s %6d %s ó*rt)r…Úcountr†r‡ros €€€r#rˆzchurn..formatüs7ø€Ø!Ù�D˜'Ó"Ü�E“ Ø‘wœs 5›zÓ*Ñ*ð%ñð rcó&•—t|‰z‰z«Sr9)Úint)r‹ÚmaxcountÚwidths €€r#r†zchurn..charnumsø€Ü�5˜5‘= HÑ,Ó-Ð-r)rDÚosÚpathÚexistsÚwjoinrÚrsplitrCÚ ValueErrorÚwarnrÚlistraÚitemsrrr-ÚmaxÚ termwidthÚdebugÚwrite)rrrSr4rMrpr"ÚaliasÚactualrOÚttywidthrˆr…r‹r†rŽr‡ror�s` @@@@@r#Úchurnr rsÝý€òp5ð €DØ�h‰h�yÓ!€GÙ ”r—w‘w—~‘~ d§j¡j°Ó&=Ô>Ø—*‘*˜[Ó)ˆÙÜ�g˜uÖ%ˆAð Ø !§¡¨°¨Ò);°tÒ)C¸tÀQÓ G‘ ��vØ&,§l¡l£n��U—[‘[“]Ò#ð&ô ” ˜"˜d DÐ8¨4Ò8°4Ñ8×>Ñ>Ó@Ó A€DÙ Øà ‡x�x�ÔØ � ‰ � à � ‰ Ñ/ˆ Ô0ô”SÑ1©DÓ1Ó1Ó2Ò9°c€HÜÑ*¡TÓ*Ó*€Gà�|‰|‹~€H؇H�HÐ 0°8Ñ ;Ô<Ø �wÑ  Ñ " QÑ &¨Ñ *€Eà ‡x�x� ÔØ �‰ ˆ÷ ð ð �‰ ˆö õ.ó‰ ˆˆeØ �‰‘˜˜eÓ$Õ%ñøôaò Ø—G‘G“I�ÙØ—G‘GœAÐ?Ó@À1ÑDÔEÚð  úsÁ0AG Ç 8HÈH)Ú__doc__r*r�r+Úmercurial.i18nrÚmercurial.pycompatrÚ mercurialrrrrr r r ÚcmdtableÚcommandÚ testedwithr$rarZÚCATEGORY_MAINTENANCEr ©rr#Úrªs—ðñ=óÛ Û åÝ#÷÷ñð €Ø ˆ)× Ñ ˜HÓ %€ð #€ ò ò :ñz Ø ð Ø Ø Ù Ð@Ó AÙ ˆf‹Ið  ð Ø Ø Ù Ð<Ó =Ù ˆg‹Jð  ð Ø Ø Ù Ð:Ó ;Ù ˆk‹Nð  ð Ø Ø Ù Ð-Ó .Ù ˆk‹Nð  ð Ø Ø Ù Ð@Ó AÙ ˆi‹Lð  ð ˆ}˜e¡QÐ'LÓ%MÐNØ ˆw˜™qÐ!HÓIÐJØ ˆk˜5¡!Ð$MÓ"NÐOØ ˆj˜#™qÐ!;Ó<¹aÀ»jÐIðO(ðR×ÑñS)ñTÐ<Ó=Ø×-Ñ-Øô]/ñ`e&óa/ñ`e&r