ó
    6°h’Q  ã                  ó6  • S SK Jr  S SKJrJr  S SKJr  S SKJrJ	r	J
r
Jr  S SKJrJrJrJrJrJrJr  S SKJr  S SKJr  SS	KJrJrJr  \R:                  " 5       r " S
 S5      r " S S5      r  " S S\5      r " S S\5      r! " S S\\RD                  5      r#g)é    )Úannotations)ÚIterableÚIterator)Ú_)ÚbinÚhexÚnullrevÚsha1nodeconstants)ÚancestorÚ	changelogÚdagopÚencodingÚerrorÚmanifestÚpycompat)Ú
repository)Ú
stringutilé   )ÚgitutilÚindexr   c                  óì   • \ rS rSrSrS rSS jrS r     SS jrS S jr	S!S	 jr
  S"S
 jrS rS rS"S jrS r   S#S jrS rS rS rS rS rS rS r   S$S jrS%S jrS rS rS rS rSrg)&Úbaselogé&   z9Common implementations between changelog and manifestlog.c                ó   • Xl         X l        g ©N)ÚgitrepoÚ_db)ÚselfÚgrÚdbs      Ú2/usr/lib/python3/dist-packages/hgext/git/gitlog.pyÚ__init__Úbaselog.__init__)   s   € ØŒØ�ó    c                ól   • [        U R                  R                  S5      R                  5       S   5      $ )NzSELECT ncommits FROM cacher   )Úintr   ÚexecuteÚfetchone©r   s    r!   Ú__len__Úbaselog.__len__-   s+   € Ü�4—8‘8×#Ñ#Ð$@ÓA×JÑJÓLÈQÑOÓPÐPr$   c                ó   • [         er   ©ÚNotImplementedErrorr)   s    r!   ÚfilesÚbaselog.files0   ó   € Ü!Ð!r$   c                ó   • [         er   r-   )r   ÚexclusivefilesÚsharedfilesÚrevisionscountÚtrackedsizeÚ
storedsizes         r!   ÚstorageinfoÚbaselog.storageinfo3   ó
   € ô "Ð!r$   c                ó   • [         er   r-   )r   Ústates     r!   ÚverifyintegrityÚbaselog.verifyintegrity=   r1   r$   Nc                ó   • [         er   r-   ©r   ÚstartÚstops      r!   ÚrevsÚbaselog.revs@   r1   r$   c                ó   • [         er   r-   )r   ÚdeltasÚ
linkmapperÚtransactionÚaddrevisioncbÚduplicaterevisioncbs         r!   ÚaddgroupÚbaselog.addgroupC   r:   r$   c                ó   • [         er   r-   )r   Únode1Únode2s      r!   ÚcommonancestorsheadsÚbaselog.commonancestorsheadsM   r1   r$   c                ó   • [         er   r-   ©r   rC   s     r!   ÚdescendantsÚbaselog.descendantsP   r1   r$   c                ó   • [         er   r-   r@   s      r!   ÚheadsÚbaselog.headsS   r1   r$   c                ó   • [         er   r-   ©r   Únodes     r!   ÚchildrenÚbaselog.childrenV   r1   r$   c                ó   • [         er   r-   )r   ÚnodesÚ
nodesorderÚrevisiondataÚassumehaveparentrevisionss        r!   ÚemitrevisionsÚbaselog.emitrevisionsY   s
   € ô "Ð!r$   c                ó   • [         er   r-   )r   Úminlinks     r!   ÚgetstrippointÚbaselog.getstrippointb   r1   r$   c                ó   • [         er   r-   ©r   Úrevs     r!   Ú
iscensoredÚbaselog.iscensorede   r1   r$   c                ó   • [         er   r-   rj   s     r!   Ú
parentrevsÚbaselog.parentrevsh   r1   r$   c                ó   • [         er   r-   rZ   s     r!   ÚrawdataÚbaselog.rawdatak   r1   r$   c                ó   • [         er   r-   rZ   s     r!   ÚrevisionÚbaselog.revisionn   r1   r$   c                ó   • [         er   r-   rj   s     r!   ÚsizeÚbaselog.sizeq   r1   r$   c                ó   • [         er   r-   )r   rf   rH   s      r!   ÚstripÚbaselog.stript   r1   r$   c	                ó   • [         er   r-   )	r   ra   rH   ÚlinkrevÚp1Úp2r[   ÚflagsÚ
cachedeltas	            r!   ÚaddrevisionÚbaselog.addrevisionw   s
   € ô "Ð!r$   c                ó   • [         er   r-   )r   Útrr[   Ú	tombstones       r!   ÚcensorrevisionÚbaselog.censorrevision„   r1   r$   c                óü   • U[         R                  :X  a  gU R                  R                  S[        R
                  " U5      45      R                  5       nUc!  [        R                  " US[        S5      5      eUS   $ )Néÿÿÿÿz(SELECT rev FROM changelog WHERE node = ?ó   00changelog.ió   no noder   )
r
   Únullidr   r'   r   Ú	togitnoder(   r   ÚLookupErrorr   ©r   ÚnÚts      r!   rk   Úbaselog.rev‡   so   € ØÔ!×(Ñ(Ó(ØØ�H‰H×ÑØ6¼×9JÒ9JÈ1Ó9MÐ8Oó
ç
‰(‹*ð 	
ð ‰9Ü×#Ò# AÐ'7¼¸:»ÓGÐGØ�‰tˆr$   c                óö   • U[         :X  a  [        R                  $ U R                  R	                  SU45      R                  5       nUc$  [        R                  " SU-  S[        S5      5      e[        US   5      $ )Nz(SELECT node FROM changelog WHERE rev = ?ó   %drŒ   ó   no revr   )
r	   r
   rŽ   r   r'   r(   r   r�   r   r   )r   Úrr“   s      r!   r[   Úbaselog.node‘   sm   € Ø”‹<Ü$×+Ñ+Ð+Ø�H‰H×ÑØ6¸¸ó
ç
‰(‹*ð 	
ð ‰9Ü×#Ò# E¨A¡IÐ/?ÄÀ9ÃÓNÐNÜ�1�Q‘4‹yÐr$   c                ó²   • U R                   R                  S[        R                  " U5      45      R	                  5       nUb  US   c  U$ [        US   5      $ )aZ  Map any node to a non-synthetic node.

Indexing may have created synthetic nodes to handle octopus merges.
Certain operations on these made up nodes need to actually happen on
the real octopus merge commit.  Given any node, this function
returns the real commit hash.  One can think of this as hg-to-git
commit hash translation that always works.z.SELECT synthetic FROM changelog WHERE node = ?r   )r   r'   r   r�   r(   r   r‘   s      r!   Ú	syntheticÚbaselog.synthetic›   sZ   € ð �H‰H×ÑØ<Ü×Ò˜qÓ!Ð#ó
÷ ‰(‹*ð 	
ð ‰9˜˜!™™ØˆHÜ�1�Q‘4‹yÐr$   c                óˆ   • U R                   R                  S[        R                  " U5      45      R	                  5       nUS L$ )Nz)SELECT node FROM changelog WHERE node = ?)r   r'   r   r�   r(   r‘   s      r!   ÚhasnodeÚbaselog.hasnode«   sB   € Ø�H‰H×ÑØ7Ü×Ò˜qÓ!Ð#ó
÷ ‰(‹*ð 	
ð ˜ˆ}Ðr$   )r   r   )Úreturnr&   )FFFFF)r    z#Iterable[repository.iverifyproblem]©r   N©NN)NFF)Nr   N)r$   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r"   r*   r/   r8   r=   rC   rK   rP   rT   rW   r\   rc   rg   rl   ro   rr   ru   rx   r{   rƒ   rˆ   rk   r[   r›   rž   Ú__static_attributes__© r$   r!   r   r   &   s²   † ÙCòôQò"ð
 ØØØØô"ô"ô"ð Ø ô"ò"ò"ô"ò"ð ØØ"'ô"ò"ò"ò"ò"ò"ò"ò"ð ØØô"ô"òòòõ r$   r   c                  ó8   • \ rS rSrS rS rS rS rS rS r	Sr
g	)
Úbaselogindexé³   c                ó   • Xl         g r   ©Ú_log)r   Úlogs     r!   r"   Úbaselogindex.__init__´   s   € Ø�	r$   c                ó>   • U R                   R                  U5      S:g  $ ©Nr‹   ©r¯   rk   )r   r’   s     r!   Úhas_nodeÚbaselogindex.has_node·   s   € Ø�y‰y�}‰}˜QÓ 2Ñ%Ð%r$   c                ó,   • [        U R                  5      $ r   )Úlenr¯   r)   s    r!   r*   Úbaselogindex.__len__º   s   € Ü�4—9‘9‹~Ðr$   c           
     ó‚   • U R                   R                  U5      u  p#UUUSUUUU R                   R                  U5      4$ r³   )r¯   ro   r[   )r   ÚidxÚp1revÚp2revs       r!   Ú__getitem__Úbaselogindex.__getitem__½   sI   € Ø—y‘y×+Ñ+¨CÓ0‰ˆð àØØØØØØ�I‰I�N‰N˜3Óð
ð 	
r$   c                ó8   • U R                   R                  U5      $ r   r´   rZ   s     r!   rk   Úbaselogindex.revÏ   s   € Ø�y‰y�}‰}˜TÓ"Ð"r$   c                ó8   • U R                   R                  U5      $ r   )r¯   Úget_revrZ   s     r!   rÃ   Úbaselogindex.get_revÒ   s   € Ø�y‰y× Ñ  Ó&Ð&r$   r®   N)r£   r¤   r¥   r¦   r"   rµ   r*   r¾   rk   rÃ   r¨   r©   r$   r!   r«   r«   ³   s    † òò&òò
ò$#õ'r$   r«   c                  ó  • \ rS rSrSrS rS r\S 5       r\S 5       r	\S 5       r
S rS S
 jrS rS rS rS!S jrS"S jrS rS#S jrS rS"S jrS$S jrS$S jrS rS%S jrS rS rS r\rS rS rS r       S&S jr!Sr"g	)'r   é×   s   extrac                ó\   •  U R                  U5        g! [        R                   a     gf = f)NTF)r[   r   r�   rj   s     r!   Ú__contains__Úchangelog.__contains__Ü   s-   € ð	Ø�I‰I�cŒNØøÜ× Ñ ó 	Ùð	ús   ‚ ”+ª+c                ó<   • [        [        [        U 5      5      5      $ r   )ÚiterÚranger¸   r)   s    r!   Ú__iter__Úchangelog.__iter__ã   s   € Ü”Eœ#˜d›)Ó$Ó%Ð%r$   c                ó   • [        5       $ r   )Úsetr)   s    r!   ÚfilteredrevsÚchangelog.filteredrevsæ   s   € ô ‹uˆr$   c                ó   • [        U 5      $ r   )r«   r)   s    r!   r   Úchangelog.indexì   s   € ä˜DÓ!Ð!r$   c                ó´   • U R                   R                  S5       Vs0 s H  n[        US   5      US   _M     nn[        U[        R
                  '   U$ s  snf )NzSELECT node, rev FROM changelogr   r   )r   r'   r   r	   r
   rŽ   )r   Úvr˜   s      r!   ÚnodemapÚchangelog.nodemapð   sa   € ð —X‘X×%Ñ%Ð&GÔHó
âH�ô ��!‘‹I�q˜‘tŠOÙHð 	
ð 
ô '.ˆÔ
×
"Ñ
"Ñ#Øˆùò
s   žAc                óž   • U R                   R                  S5      R                  5       nU(       a  [        US   5      $ [        R
                  $ )Nz4SELECT node FROM changelog ORDER BY rev DESC LIMIT 1r   )r   r'   r(   r   r
   rŽ   ©r   r“   s     r!   ÚtipÚchangelog.tipù   sB   € Ø�H‰H×ÑØBó
ç
‰(‹*ð 	
ö Ü�q˜‘t“9ÐÜ ×'Ñ'Ð'r$   Nc                ót   • Uc  U R                  5       nU R                  R                  SX45      nS U 5       $ )NzFSELECT rev FROM changelog WHERE rev >= ? AND rev <= ? ORDER BY REV ASCc              3  ó>   #   • U  H  n[        US    5      v •  M     g7fr¡   )r&   )Ú.0r˜   s     r!   Ú	<genexpr>Ú!changelog.revs.<locals>.<genexpr>
  s   é € Ð%¢1˜a”�A�a‘D—	�	¢1ùs   ‚)Útiprevr   r'   )r   rA   rB   r“   s       r!   rC   Úchangelog.revs  s?   € Ø‰<Ø—;‘;“=ˆDØ�H‰H×Ñðð ˆMó	
ˆñ &¡1Ó%Ð%r$   c                óf   • U R                   R                  S5      R                  5       nUb  US   $ g)Nz3SELECT rev FROM changelog ORDER BY REV DESC LIMIT 1r   r‹   )r   r'   r(   rÚ   s     r!   râ   Úchangelog.tiprev  s6   € Ø�H‰H×ÑØGó
ç
‰(‹*ð 	
ð ‰=Ø�Q‘4ˆKØr$   c                ó  • [         R                  R                  U5      (       a  [        R                  eU R
                  R                  S[        R                  " US-   5      45       Vs/ s H  n[        US   5      PM     nn[         R                  R                  U5      (       a  UR                  [         R                  5        [        U5      S:”  a!  [        R                  " US[        S5      5      eU(       a  US   $ g s  snf )Nz,SELECT node FROM changelog WHERE node LIKE ?ó   %r   r   rŒ   s   ambiguous identifier)r
   ÚwdirhexÚ
startswithr   ÚWdirUnsupportedr   r'   r   Úsysstrr   ÚnullhexÚappendrŽ   r¸   ÚAmbiguousPrefixLookupErrorr   )r   ÚidÚxÚ
candidatess       r!   Ú_partialmatchÚchangelog._partialmatch  sê   € Ü×$Ñ$×/Ñ/°×3Ñ3Ü×'Ñ'Ð'ð —X‘X×%Ñ%Ø>Ü—’  d¡Ó+Ð-ôó
ò�ô ��!‘ŽIñð 	ð 
ô ×$Ñ$×/Ñ/°×3Ñ3Ø×ÑÔ/×6Ñ6Ô7Üˆz‹?˜QÓÜ×2Ò2ØÐ$¤aÐ(?Ó&@óð ö Ø˜a‘=Ð Øùò
s   Á+Dc                ó   • g)Nr   r©   rj   s     r!   r�   Úchangelog.flags)  s   € Ør$   c           
     ó  • [        U5      n[        U[        U5      S-   5       H`  nUS U n[        U R                  R                  S[        R                  " US-   5      45      R                  5       S   5      nUS:X  d  M^  Us  $    U$ )Nr   z0SELECT COUNT(*) FROM changelog WHERE node GLOB ?ó   *r   )	r   rÌ   r¸   r&   r   r'   r   rë   r(   )r   r[   Ú	minlengthÚnodehexÚattemptÚ	candidateÚmatchess          r!   ÚshortestÚchangelog.shortest,  sŠ   € Ü�d“)ˆÜ˜Y¬¨G«°qÑ(8Ö9ˆGØ  Ð)ˆIÜØ—‘× Ñ ØFÜ—_’_ Y°Ñ%5Ó6Ð8ó÷ ‘(“*˜Qñ óˆGð ˜!�|Ø Ò ñ :ð ˆr$   c                óî   • U R                   R                  S5       Vs/ s H  n[        US   5      PM     nnU(       a#  [        U Vs/ s H  oDU;   d  M
  UPM     sn5      $ [        U5      $ s  snf s  snf )NzISELECT rev FROM changelog INNER JOIN heads ON changelog.node = heads.noder   )r   r'   r&   Úsorted)r   rC   rð   Ú	realheadsr˜   s        r!   ÚheadrevsÚchangelog.headrevs:  s}   € ð —X‘X×%Ñ%ðBôó
ò�ô ��!‘ŽIñð 	ð 
ö Ü¡dÓ=¢d °9©nŸ1¡dÑ=Ó>Ð>Ü�iÓ Ð ùò
ùò >s   žA-Á	A2ÁA2c           
     óô  • [        U[        5      (       a  U R                  U5      nOUnSS0nU[        R                  :X  a#  [
        R                  " U[        R                  S9$ U R                  U5      n[        R                  " U5      n[        R                  " U R                  U R                  USS9  U R                  R                  SU[        R                  45       Vs/ s H  nUS   PM
     nnU R                  R                  SU[        R                  45       Vs/ s H  nUS   PM
     nnU R                  U   n[
        R                  " US	UR                   R"                  R%                  S
5      UR                   R&                  R%                  S
5      4-  UR                   R(                  UR                   R*                  * S-  4UUUR,                  R%                  S
5      US9$ s  snf s  snf )Ns   branchó   default)Úextrar   T)ÚcommitzBSELECT filename FROM changedfiles WHERE node = ? and filenode != ?r   zASELECT filename FROM changedfiles WHERE node = ? and filenode = ?s   %s <%s>Úutf8é<   )r   ÚuserÚdater/   ÚfilesremovedÚdescriptionr  )Ú
isinstancer&   r[   r
   rŽ   ÚhgchangelogÚ_changelogrevisionr›   r   r�   r   Ú_index_repo_commitr   r   r'   ÚnullgitÚauthorÚnameÚencodeÚemailÚtimeÚoffsetÚmessage)	r   Ú	nodeorrevr’   r  Úhnr˜   r/   r  Úcs	            r!   ÚchangelogrevisionÚchangelog.changelogrevisionF  sÌ  € ä�i¤×%Ñ%Ø—	‘	˜)Ó$‰AàˆAØ˜JÐ'ˆàÔ!×(Ñ(Ó(Ü×1Ò1ØÔ&7×&>Ñ&>ñð ð �N‰N˜1ÓˆÜ×Ò˜qÓ!ˆä× Ò  §¡¨t¯x©x¸ÀDÒIð —X‘X×%Ñ%ð3à”W—_‘_Ð%ôó
ò�ð ˆaŒDñð 	ð 
ð —X‘X×%Ñ%ð2à”W—_‘_Ð%ôó
ò�ð ˆaŒDñð 	ð 
ð �L‰L˜ÑˆÜ×-Ò-ØØØ�x‰x�}‰}×#Ñ# FÓ+¨Q¯X©X¯^©^×-BÑ-BÀ6Ó-JÐKñLà—(‘(—-‘- !§(¡(§/¡/Ð!1°BÑ!6Ð7Øà%ØŸ	™	×(Ñ(¨Ó0àñ
ð 	
ùò#
ùò
s   Ã%G0Ä$G5c                óÎ   • [        U5      nU R                  U R                  5       5      nU H  nXT:”  d  M
  [        SU-  5      e   [        R
                  " U R                  XUS9$ )Ns   Invalid rev %r)ÚstoprevÚ	inclusive)Úlistrk   rÛ   Ú
IndexErrorr   Úlazyancestorsro   )r   rC   r   r!  rÛ   r˜   s         r!   Ú	ancestorsÚchangelog.ancestorst  s_   € Ü�D‹zˆØ�h‰h�t—x‘x“zÓ"ˆÛˆAØ�wÜ Ð!2°QÑ!6Ó7Ð7ñ ô ×%Ò%Ø�O‰O˜T¸iñ
ð 	
r$   c                óX   • [         R                  " XR                  U R                  5      $ r   )r   ÚdescendantrevsrC   ro   rS   s     r!   rT   Úchangelog.descendants  s   € Ü×#Ò# D¯)©)°T·_±_ÓEÐEr$   c                óX   • Uc  [         /n[        R                  " U R                  U5      $ )a  Return an object that can be used to incrementally compute the
revision numbers of the ancestors of arbitrary sets that are not
ancestors of common. This is an ancestor.incrementalmissingancestors
object.

'common' is a list of revision numbers. If common is not supplied, uses
nullrev.
)r	   r   Úincrementalmissingancestorsro   )r   Úcommons     r!   ÚincrementalmissingrevsÚ changelog.incrementalmissingrevs‚  s'   € ð ‰>Ü�YˆFä×3Ò3°D·O±OÀVÓLÐLr$   c                ó|   • Uc  [         /nUc  U R                  5       nU R                  US9nUR                  U5      $ )a(  Return the revision numbers of the ancestors of heads that
are not ancestors of common.

More specifically, return a list of revision numbers corresponding to
nodes N such that every N satisfies the following constraints:

  1. N is an ancestor of some node in 'heads'
  2. N is not an ancestor of any node in 'common'

The list is sorted by revision number, meaning it is
topologically sorted.

'heads' and 'common' are both lists of revision numbers.  If heads is
not supplied, uses all of the revlog's heads.  If common is not
supplied, uses nullid.©r,  )r	   r  r-  Úmissingancestors)r   r,  rW   Úincs       r!   ÚfindmissingrevsÚchangelog.findmissingrevs�  sD   € ð  ‰>Ü�YˆFØ‰=Ø—M‘M“OˆEà×)Ñ)°Ð)Ð8ˆØ×#Ñ# EÓ*Ð*r$   c                ó²  • Uc  [         R                  /nUc.  U R                  5        Vs/ s H  o0R                  U5      PM     nnU Vs/ s H  o@R	                  U5      PM     nnU Vs/ s H  o@R	                  U5      PM     nnU R                  US9nUR                  U5       Vs/ s H  o0R                  U5      PM     sn$ s  snf s  snf s  snf s  snf )aæ  Return the ancestors of heads that are not ancestors of common.

More specifically, return a list of nodes N such that every N
satisfies the following constraints:

  1. N is an ancestor of some node in 'heads'
  2. N is not an ancestor of any node in 'common'

The list is sorted by revision number, meaning it is
topologically sorted.

'heads' and 'common' are both lists of node IDs.  If heads is
not supplied, uses all of the revlog's heads.  If common is not
supplied, uses nullid.r0  )r
   rŽ   r  r[   rk   r-  r1  )r   r,  rW   r˜   r’   r2  s         r!   ÚfindmissingÚchangelog.findmissing¨  s¼   € ð ‰>Ü'×.Ñ.Ð/ˆFØ‰=Ø+/¯=©=¬?Ó;ª? a—Y‘Y˜q–\©?ˆEÐ;á'-Ó.¢v !—(‘(˜1–+¡vˆÐ.Ù&+Ó,¢e —‘˜!–¡eˆÐ,à×)Ñ)°Ð)Ð8ˆØ&)×&:Ñ&:¸5Ô&AÓBÒ&A —	‘	˜!–Ñ&AÑBÐBùò <ùâ.ùÚ,ùò Cs   ªCÁ
C
Á*CÂ(Cc                óŠ  • / nU R                  U5      nU R                  US-   S9 H”  nU R                  U5       Vs/ s H  oU[        :w  d  M  UPM     nnU(       a2  U H*  nXS:X  d  M
  UR	                  U R                  U5      5        M,     Mh  U[        :X  d  Mt  UR	                  U R                  U5      5        M–     U$ s  snf )z!find the children of a given noder   )rA   )rk   rC   ro   r	   rí   r[   )r   r[   r  Úpr˜   ÚprÚprevss          r!   r\   Úchangelog.childrenÂ  s    € àˆØ�H‰H�T‹NˆØ—‘  Q¡�Ó'ˆAØ"&§/¡/°!Ô"4ÓFÒ"4˜B¼g¹—RÑ"4ˆEÐFÞÛ�BØ•wØŸ™ §¡¨1£Ö.ó  ð ”g•Ø—‘˜Ÿ™ 1›Ö&ñ (ð ˆùò Gs   ¼C ÁC c                óF   • [         R                  " U R                  XX$5      $ r   )r   Ú_reachablerootspurero   )r   ÚminrootrW   ÚrootsÚincludepaths        r!   ÚreachablerootsÚchangelog.reachablerootsÐ  s    € Ü×(Ò(Ø�O‰O˜W¨Uó
ð 	
r$   c                óf   • U R                  U5      U R                  U5      p!U R                  X5      $ r   )rk   Úisancestorrev©r   ÚaÚbs      r!   Ú
isancestorÚchangelog.isancestorÖ  s*   € Ø�x‰x˜‹{˜DŸH™H Q›Kˆ1Ø×!Ñ! !Ó'Ð'r$   c           	     óh   • U[         :X  a  gX:X  a  gX:”  a  g[        U R                  X/U/SS95      $ )NTF)rA  )r	   ÚboolrB  rF  s      r!   rE  Úchangelog.isancestorrevÛ  s=   € Ø”‹<ØØ‹VØØ‹UØÜ�D×'Ñ'¨¨3°°ÀÐ'ÐGÓHÐHr$   c                ó4  • US:¼  d   U5       eU R                   R                  SU45      R                  5       nUc$  [        R                  " SU-  S[        S5      5      eU R                  [        US   5      5      U R                  [        US   5      5      4$ )Nr   z*SELECT p1, p2 FROM changelog WHERE rev = ?r–   rŒ   r—   r   )r   r'   r(   r   r�   r   rk   r   )r   rk   r“   s      r!   ro   Úchangelog.parentrevsä  sŠ   € Ø�a‹xÐ˜ÓˆxØ�H‰H×ÑØ8¸3¸&ó
ç
‰(‹*ð 	
ð ‰9Ü×#Ò# E¨C¡KÐ1AÄ1ÀYÃ<ÓPÐPØ�x‰xœ˜A˜a™D›	Ó" D§H¡H¬S°°1±«YÓ$7Ð7Ð7r$   c                óÐ   • U R                  U5      U R                  U5      p![        R                  " U R                  X5       Vs/ s H  nU R	                  U5      PM     sn$ s  snf r   )rk   r   rP   ro   r[   )r   rG  rH  r’   s       r!   rP   Úchangelog.commonancestorsheadsð  s[   € ð �x‰x˜‹{˜DŸH™H Q›Kˆ1ô ×2Ò2°4·?±?ÀAÔIó
âI�ð �I‰I�aŽLÙIñ
ð 	
ùò 
s   ÁA#c                ó   • g)zAGit doesn't do named branches, so just put everything on default.)r  Fr©   rj   s     r!   Ú
branchinfoÚchangelog.branchinfoù  s   € à r$   c                ó   • g r   r©   )r   r†   s     r!   ÚdelayupdateÚchangelog.delayupdateý  s   € ð 	r$   c           	     ó0  • / n[         R                  " U5      [         R                  " U5      nnU[        R                  :w  a  UR	                  U5        U(       a%  U[        R                  :w  a  UR	                  U5        Uc   eUu  nn[
        R                  [        R                  " [        R                  " U5      5      [        R                  " [        R                  " U5      5      [        U5      [        US-  5      * 5      nU R                  R                  S UUU[         R                  " U5      U5      nU R                  R                  R!                  SUSS9  ["        R$                  " U R                  U R&                  5        UR(                  $ )Nr	  zrefs/hg/internal/latest-commitT)Úforce)r   r�   r
   rŽ   rí   Úpygit2Ú	Signaturer   Úunifromlocalr   Úpersonr  r&   r   Úcreate_commitÚ
referencesÚcreater   Ú_index_repor   Úraw)r   r   r/   ÚdescrH   r   r€   r
  r  r  Úp1copiesÚp2copiesÚ
filesaddedr  ÚparentsÚhp1Úhp2Ú	timestampÚtzÚsigÚoids                        r!   ÚaddÚchangelog.add  sB  € ð  ˆÜ×$Ò$ RÓ(¬'×*;Ò*;¸BÓ*?ˆSˆØÔ"×)Ñ)Ó)Ø�N‰N˜3ÔÞ�"Ô)×0Ñ0Ó0Ø�N‰N˜3ÔØÑÐÐØ‰ˆ	�2Ü×ÑÜ×!Ò!¤*×"3Ò"3°DÓ"9Ó:Ü×!Ò!¤*×"2Ò"2°4Ó"8Ó9Ü�	‹NÜ��r‘‹]ˆNó	
ˆð �l‰l×(Ñ(Ø�#�s˜D¤'×"3Ò"3°HÓ"=¸wó
ˆð 	�‰×Ñ×&Ñ&Ø,¨c¸ð 	'ñ 	
ô
 	×Ò˜$Ÿ,™,¨¯©Ô1Ø�w‰wˆr$   r©   r¡   )r   r   )r   Fr¢   )F)NNNNNN)#r£   r¤   r¥   r¦   Ú_copiesstoragerÈ   rÍ   ÚpropertyrÑ   r   r×   rÛ   rC   râ   rò   r�   rý   r  r  r%  rT   r-  r3  r6  r\   rB  rI  rE  ro   Ú_uncheckedparentrevsrP   rS  rV  rn  r¨   r©   r$   r!   r   r   ×   sÞ   † ð €Nòò&ð ñó ðð
 ñ"ó ð"ð ñó ðò(ô	&òòò(ôô
!ò,
ô\
òFôMô+ô0Cò4ô
ò(ò
Iò8ð &Ðò
ò!òð ØØØØØ÷+r$   r   c                  ó$   • \ rS rSr\rS rS rSrg)Úmanifestlogi0  c                ó&   • U R                  SU5      $ ©Nr$   )ÚgetrZ   s     r!   r¾   Úmanifestlog.__getitem__3  s   € Ø�x‰x˜˜TÓ"Ð"r$   c                ó”  • U[         R                  :X  a  [        R                  " X5      $ U R	                  U5      nU R
                  [        R                  " U5         nUR                  nU(       a7  UR                  S5      nU H   nXF   nU R
                  UR                     nM"     [        R                  " U R
                  U5      $ )Nó   /)r
   rŽ   r   Úmemtreemanifestctxr›   r   r   r�   ÚtreeÚsplitrï   ÚgitmanifestÚgittreemanifestctx)r   Úrelpathr[   r  r“   Úpartsr9  Útes           r!   rw  Úmanifestlog.get6  sŸ   € ØÔ$×+Ñ+Ó+ä×.Ò.¨tÓ=Ð=Ø�~‰~˜dÓ#ˆØ—‘œg×/Ò/°Ó5Ñ6ˆØ�K‰KˆÞØ—M‘M $Ó'ˆEÛ�Ø‘T�Ø—L‘L §¡Ñ'’ñ ô ×-Ò-¨d¯l©l¸AÓ>Ð>r$   r©   N)	r£   r¤   r¥   r¦   r
   Únodeconstantsr¾   rw  r¨   r©   r$   r!   rt  rt  0  s   † Ø%€Mò#õ?r$   rt  c                  ól   ^ • \ rS rSrU 4S jrS rS rS rSS jrSS jr	S r
S	 rS
 rS rS rSrU =r$ )ÚfilelogiE  c                óˆ   >• [         TU ]  X5        [        U[        5      (       d   eX0l        [
        R                  U l        g r   )Úsuperr"   r  ÚbytesÚpathr
   rŽ   )r   r   r    rŠ  Ú	__class__s       €r!   r"   Úfilelog.__init__F  s5   ø€ Ü‰Ñ˜Ô Ü˜$¤×&Ñ&Ð&Ð&ØŒ	Ü'×.Ñ.ˆ�r$   c                ó†   • U[         R                  :X  a  gU R                  [        R                  " U5         R
                  $ rv  )r
   rŽ   r   r   r�   ÚdatarZ   s     r!   ÚreadÚfilelog.readL  s4   € ØÔ$×+Ñ+Ó+ØØ�|‰|œG×-Ò-¨dÓ3Ñ4×9Ñ9Ð9r$   c                óF  • [        U5      S;  a  [        U5      n[        U[        5      (       a   S5       e[        U5      S:X  a  [        U5      n[        R
                  " U5      nX R                  ;   a  U$ [        R                  " U R                  U[        S5      5      e)N)é   é(   s   todo revnums for nodesr“  s   no match found)r¸   r&   r  r   r   r�   r   r   r�   rŠ  r   )r   r[   Úhnodes      r!   ÚlookupÚfilelog.lookupQ  s�   € Üˆt‹9˜HÓ$Ü�t“9ˆDÜ�dœC× Ñ Ø3Ð3Ó3�5Üˆt‹9˜‹?Ü�t“9ˆDÜ×!Ò! $Ó'ˆØ—L‘LÓ ØˆKÜ×Ò §	¡	¨4´Ð3DÓ1EÓFÐFr$   c                ó*   • U R                  U5      U:g  $ )z9Returns True if text is different than content at `node`.)r�  )r   r[   Útexts      r!   ÚcmpÚfilelog.cmp]  s   € à�y‰y˜‹ $Ñ&Ð&r$   c                ó^   • U(       a   eU R                   R                  U5      R                  $ r   )r   Úcreate_blobrb  )r   r˜  ÚmetarH   Úlinkr   r€   s          r!   rn  Úfilelog.adda  s$   € ÞˆˆxØ�|‰|×'Ñ'¨Ó-×1Ñ1Ð1r$   c              #  ó¼   #   • U R                   R                  S[        R                  " U R                  5      [
        R                  45       H
  nUS   v •  M     g 7f)Nz 
SELECT rev FROM changelog
INNER JOIN changedfiles ON changelog.node = changedfiles.node
WHERE changedfiles.filename = ? AND changedfiles.filenode != ?
        r   )r   r'   r   ÚfsdecoderŠ  r   r  )r   Úclrevs     r!   rÍ   Úfilelog.__iter__e  sK   é € Ø—X‘X×%Ñ%ðô
 ×Ò˜tŸy™yÓ)¬7¯?©?Ð;ö
ˆEð ˜‘(ŒNò
ùs   ‚AAc                ó   • U$ r   r©   )r   Úfrs     r!   r~   Úfilelog.linkrevp  s   € Øˆ	r$   c                ó6  • U R                   R                  S[        R                  " U R                  5      [
        R                  " U5      45      R                  5       nUc+  [        R                  " U R                  U[        S5      5      e[        US   5      $ )Nz–
SELECT rev FROM changelog
INNER JOIN changedfiles ON changelog.node = changedfiles.node
WHERE changedfiles.filename = ? AND changedfiles.filenode = ?r�   r   )r   r'   r   r¡  rŠ  r   r�   r(   r   r�   r   r&   )r   r[   Úrows      r!   rk   Úfilelog.revs  s~   € Ø�h‰h×ÑðAô ×Ò˜tŸy™yÓ)¬7×+<Ò+<¸TÓ+BÐCó
÷ ‰(‹*ð 	ð ‰;Ü×#Ò# D§I¡I¨t´Q°z³]ÓCÐCÜ�3�q‘6‹{Ðr$   c                óì   • U R                   R                  SU[        R                  " U R                  5      45      R                  5       nUc  [        SU R                  U4-  5      e[        US   5      $ )Nz†SELECT filenode FROM changedfiles
INNER JOIN changelog ON changelog.node = changedfiles.node
WHERE changelog.rev = ? AND filename = ?
zgitlog %r out of range %dr   )r   r'   r   r¡  rŠ  r(   r#  r   )r   rk   Úmaybes      r!   r[   Úfilelog.node  so   € Ø—‘× Ñ ðð ”(×#Ò# D§I¡IÓ.Ð/ó
÷ ‰(‹*ð 	ð ‰=ÜÐ8¸D¿I¹IÀsÐ;KÑKÓLÐLÜ�5˜‘8‹}Ðr$   c                ó  • [         R                  " U5      n[        R                  " U R                  5      n/ nU R
                  R                  SX#45      R                  5        HŸ  nUc  U R
                  R                  SX#45      R                  5       S   nUR                  S5      n[        R                  " U R                  U R
                  XcU5        U R                  U5      s  $ UR                  [        U5      5        M¡     U$ )NzTSELECT p1filenode, p2filenode FROM changedfiles
WHERE filenode = ? AND filename = ?
zASELECT node FROM changedfiles WHERE filenode = ? AND filename = ?r   Úascii)r   r�   r   r¡  rŠ  r   r'   r(   Údecoder   Úfill_in_filelogr   rg  rí   r   )r   r[   ÚgnÚgpÚpsr9  r  s          r!   rg  Úfilelog.parents‹  så   € Ü×Ò˜tÓ$ˆÜ×Ò˜tŸy™yÓ)ˆØˆØ—‘×!Ñ!ðð ˆHó	
÷
 ‰(‹*òˆAð ‰yØŸ™×)Ñ)ð:à�Hó÷ ‘(“*˜Qñ	 �ð  Ÿ™ wÓ/�Ü×%Ò% d§l¡l°D·H±H¸fÈ"ÔMØ—|‘| DÓ)Ò)à—	‘	œ#˜a›&Ö!ñ%ð& ˆ	r$   c                ó   • g)NFr©   rZ   s     r!   ÚrenamedÚfilelog.renamed¤  s   € àr$   )rŽ   rŠ  r¢   )r    zIterator[int])r£   r¤   r¥   r¦   r"   r�  r•  r™  rn  rÍ   r~   rk   r[   rg  r¶  r¨   Ú__classcell__)r‹  s   @r!   r†  r†  E  s@   ø† õ/ò:ò

Gò'ô2ô	òò
ò
ò÷2ð r$   r†  N)$Ú
__future__r   Útypingr   r   Úmercurial.i18nr   Úmercurial.noder   r   r	   r
   Ú	mercurialr   r   r  r   r   r   r   r   Úmercurial.interfacesr   Úmercurial.utilsr   Ú r   r   r~  Ú
get_pygit2rZ  r   r«   rt  Úifilestorager†  r©   r$   r!   Ú<module>rÃ     s˜   ðÝ "÷õ
 ÷ó ÷÷ ñ õõ '÷ñ ð 
×	Ò	Ó	€÷Jñ J÷Z 'ñ  'ôHV�ô Vôr
?�'ô ?ô*aˆg�z×.Ñ.õ ar$   