ó
    6°h².  ã                  ó2  • S r SSKJr  SSKrSSKJr  SSKJrJrJ	r	J
r
JrJrJrJrJrJr  SSKJrJrJrJr  Sr0 r\R2                  " \5      r\" S	S
SS9  \R4                  r " S S5      rS r " S S5      rS rS r Sr! " S S5      r"SS jr#S r$S r%S r&g)zµgrant Mercurial the ability to operate on Git repositories. (EXPERIMENTAL)

This is currently super experimental. It probably will consume your
firstborn a la Rumpelstiltskin, etc.
é    )ÚannotationsN)Ú_)
ÚcommandsÚerrorÚ
extensionsÚ	localrepoÚpycompatÚ	registrarÚrequirementsÚscmutilÚstoreÚutilé   )ÚdirstateÚgitlogÚgitutilÚindexs   ships-with-hg-coreó   gitó   log-index-cache-missF)Údefaultc                  ó`   • \ rS rSrS r\R                  S 5       rS rS r	S r
S rSS	 jrS
rg)Úgitstoreé4   c           	     óª  • U" U5      U l         U R                   U l        U R                   R                  U l        [        R
                  " U R                   5      U l        [        R                  " 5       R                  [        R                  R                  [        R                  R                  USS5      5      5      U l        S U l        S U l        g )Nó   ..ó   .gitc                 ó   • g ©N© )ÚargsÚkwargss     Ú4/usr/lib/python3/dist-packages/hgext/git/__init__.pyÚ<lambda>Ú#gitstore.__init__.<locals>.<lambda>@   s   € ¸ó    c                ó   • g r   r   )Úxs    r"   r#   r$   A   s   €  r%   )ÚvfsÚopenerÚbaseÚpathr   Ú	_calcmodeÚ
createmoder   Ú
get_pygit2Ú
RepositoryÚosÚnormpathÚjoinÚgitÚ_progress_factoryÚ_logfn)Úselfr+   Úvfstypes      r"   Ú__init__Úgitstore.__init__5   sŒ   € Ù˜4“=ˆŒØ—h‘hˆŒØ—H‘H—M‘MˆŒ	ÜŸ/š/¨$¯(©(Ó3ˆŒô ×%Ò%Ó'×2Ñ2Ü�G‰G×ÑœRŸW™WŸ\™\¨$°°wÓ?Ó@ó
ˆŒñ ">ˆÔÙ$ˆ�r%   c                ón   • [         R                  " U R                  U R                  U R                  5      $ r   )r   Ú	get_indexr3   r5   r4   ©r6   s    r"   Ú_dbÚgitstore._dbC   s%   € ô
 �Š˜tŸx™x¨¯©°d×6LÑ6LÓMÐMr%   c                óB  • US;   a*  [         R                  R                  U R                  S5      $ US:X  a*  [         R                  R                  U R                  S5      $ US;   a,  [         R                  R                  U R                  SSU5      $ [        SU-  5      e)	zÖFake store.join method for git repositories.

For the most part, store.join is used for @storecache
decorators to invalidate caches when various files
change. We'll map the ones we care about, and ignore the rest.
)s   00changelog.is   00manifest.is   HEADs   locks   hgit-bogus-lock)s   obsstores
   phaserootss
   narrowspecs	   bookmarksr   ó   .hgs   Need to pick file for %s.)r0   r+   r2   ÚNotImplementedError)r6   Úfs     r"   r2   Úgitstore.joinJ   s‚   € ð Ð3Ó3ô —7‘7—<‘< §	¡	¨7Ó3Ð3Ø�'‹\ô
 —7‘7—<‘< §	¡	Ð+=Ó>Ð>ØÐKÓKÜ—7‘7—<‘< §	¡	¨5°&¸!Ó<Ð<Ü!Ð">ÀÑ"BÓCÐCr%   c                óX   • [         R                  " U R                  U R                  5      $ r   )r   Ú	changelogr3   r=   )r6   Ú
trypendingÚconcurrencycheckers      r"   rE   Úgitstore.changelog_   s   € ä×Ò §¡¨$¯(©(Ó3Ð3r%   c                óX   • [         R                  " U R                  U R                  5      $ r   )r   Úmanifestlogr3   r=   )r6   ÚrepoÚstorenarrowmatchs      r"   rJ   Úgitstore.manifestlogc   s   € ä×!Ò! $§(¡(¨D¯H©HÓ5Ð5r%   c                ó   • g r   r   r<   s    r"   ÚinvalidatecachesÚgitstore.invalidatecachesg   s   € Ør%   Nc                ó   • g r   r   )r6   Útrs     r"   ÚwriteÚgitstore.writej   s   € àr%   )r5   r4   r-   r3   r)   r+   r(   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r8   r   Úpropertycacher=   r2   rE   rJ   rO   rS   Ú__static_attributes__r   r%   r"   r   r   4   s=   † ò%ð 
×ÑñNó ðNòDò*4ò6ò÷r%   r   c                ód  • SU;   a¢  [         R                  R                  [         R                  R                  USS5      5      (       d  [        R
                  " [        S5      5      e[        R                  " 5       c  [        R
                  " [        S5      5      e[        X#5      $ U " XU5      $ )Nr   r   r   sI   repository specified git format in .hg/requires but has no .git directorysD   the git extension requires the Python pygit2 library to be installed)
r0   r+   Úexistsr2   r   ÚAbortr   r   r.   r   )Úorigr   Ústorebasepathr7   s       r"   Ú
_makestorer`   o   s•   € Ø�ÓÜ�w‰w�~‰~œbŸg™gŸl™l¨=¸%ÀÓI×JÑJÜ—+’+Üð>óóð ô ×ÒÓÑ'Ü—+’+Üð6óóð ô ˜Ó/Ð/Ù�¨WÓ5Ð5r%   c                  ó   • \ rS rSrS rSrg)Úgitfilestorageé†   c                óž   • USS S:X  a  USS  n[         R                  " U R                  R                  U R                  R                  U5      $ )Nr   r   ó   /)r   Úfilelogr   r3   r=   )r6   r+   s     r"   ÚfileÚgitfilestorage.file‡   s>   € Ø��!ˆ9˜ÓØ˜˜�8ˆDÜ�~Š~˜dŸj™jŸn™n¨d¯j©j¯n©n¸dÓCÐCr%   r   N)rU   rV   rW   rX   rg   rZ   r   r%   r"   rb   rb   †   s   † õDr%   rb   c                óT   • US   n[        U[        5      (       a  [        $ U " X40 UD6$ )Nr   )Ú
isinstancer   rb   )r^   r   Úfeaturesr!   r   s        r"   Ú_makefilestoragerl   �   s.   € Ø�7‰O€EÜ�%œ×"Ñ"ÜÐÙ�Ñ1¨&Ñ1Ð1r%   c                ó‚  • [         R                  R                  US5      n[         R                  R                  U5      (       a  U R	                  [        S5      5        Oz[         R                  " [         R                  R                  US5      5        [        [         R                  R                  USSS5      S5       nUR                  S5        S S S 5        [        [         R                  R                  US5      S	5       nUR                  S
5        S S S 5        g ! , (       d  f       NS= f! , (       d  f       g = f)Nr@   s$   git repo already initialized for hg
r   s   infos   excludeÚabs   
.hg
s   requiresÚwbs   git
)	r0   r+   r2   r\   Úwarnr   ÚmkdirÚopenrS   )Úuir+   ÚdothgÚexcluderB   s        r"   Ú_setupdothgrv   ”   sÏ   € Ü�G‰G�L‰L˜˜vÓ&€EÜ	‡w�w‡~�~�e×ÑØ
�‰”Ð:Ó;Õ<ä
�Š”—‘—‘˜d FÓ+Ô,äÜ�G‰G�L‰L˜˜w¨°Ó<¸dô
àØ�M‰M˜*Ô%÷
ô 
Œb�g‰g�l‰l˜5 +Ó.°Ô	5¸Ø	�‰�Ô÷ 
6Ð	5÷	
õ 
ú÷ 
6Õ	5ús   Ã DÄD0Ä
D-Ä0
D>zrefs/heads/c                  óŒ   • \ rS rSrS rS rS rS rSS jr\	S 5       r
\
R                  S	 5       r
S
 rS rS rS rSS jrSrg)Ú
gitbmstoreé¦   c                óF   • Xl         SU l        UR                  S   U l        g )NTÚHEAD)ÚgitrepoÚ_acleanÚ
referencesÚ_active)r6   r|   s     r"   r8   Úgitbmstore.__init__§   s    € ØŒØˆŒØ×)Ñ)¨&Ñ1ˆ�r%   c                ój   • [         [        R                  " U5      -   U R                  R                  ;   $ r   )Ú_BMS_PREFIXr	   Úfsdecoder|   r~   )r6   Únames     r"   Ú__contains__Úgitbmstore.__contains__¬   s,   € äœ(×+Ò+¨DÓ1Ñ1Ø�\‰\×$Ñ$ñ%ð 	%r%   c              #  óÖ   #   • U R                   R                  5        HG  nUR                  [        5      (       d  M  [        R
                  " U[        [        5      S  5      v •  MI     g 7fr   )r|   Úlistall_referencesÚ
startswithr‚   r	   ÚfsencodeÚlen)r6   Úrs     r"   Ú__iter__Úgitbmstore.__iter__±   sI   é € Ø—‘×0Ñ0Ö2ˆAØ�|‰|œK×(Ó(Ü×'Ò'¨¬#¬kÓ*:Ð*<Ð(=Ó>Ô>ò 3ùs
   ‚6A)¼-A)c                ó®   • U R                   R                  [        [        R                  " U5      -      R                  5       R                  R                  $ r   )r|   r~   r‚   r	   rƒ   ÚpeelÚidÚraw)r6   Úks     r"   Ú__getitem__Úgitbmstore.__getitem__¶   s9   € à�L‰L×#Ñ#¤K´(×2CÒ2CÀAÓ2FÑ$FÑGß‰T‹Vß‰R—‘ð	
r%   Nc                óp   •  X;   a  X   $ U$ ! [         R                  " 5       R                   a    Us $ f = fr   )r   r.   ÚInvalidSpecError)r6   r“   r   s      r"   ÚgetÚgitbmstore.get½   s;   € ð	Ø‹yØ‘w�ØˆNøÜ×!Ò!Ó#×4Ñ4ó 	ØŠNð	ús   ‚ ‹ �%5´5c                ó  • U R                   R                  S   n[        UR                  [        5      (       a$  UR                  R                  [        5      (       d  g [        R                  " UR                  [        [        5      S  5      $ )Nr{   )
r|   r~   rj   ÚtargetÚstrr‰   r‚   r	   rŠ   r‹   )r6   Úhs     r"   ÚactiveÚgitbmstore.activeÅ   sg   € à�L‰L×#Ñ# FÑ+ˆÜ˜!Ÿ(™(¤C×(Ñ(°·±×0CÑ0CÜ÷1
ñ 1
ð Ü× Ò  §¡¬#¬kÓ*:Ð*<Ð!=Ó>Ð>r%   c                ó¶   • S nUb  [         [        R                  " U5      -   nUb'  X R                  R                  ;  a  [        SU-  5      eX l        SU l        g )Ns   bookmark %s does not exist!F)r‚   r	   rƒ   r|   r~   ÚAssertionErrorr   r}   )r6   ÚmarkÚgitheads      r"   rž   rŸ   Î   sT   € àˆØÑÜ!¤H×$5Ò$5°dÓ$;Ñ;ˆGØÑ 7·,±,×2IÑ2IÓ#IÜ Ð!?À$Ñ!FÓGÐGàŒØˆ�r%   c                ó˜   • U R                   (       a  g U R                  R                  R                  SU R                  S5        SU l         g )Nr{   T)r}   r|   r~   Úcreater   r<   s    r"   Ú_writeactiveÚgitbmstore._writeactiveÙ   s3   € Ø�<�<ØØ�‰×Ñ×&Ñ& v¨t¯|©|¸TÔBØˆ�r%   c           	     óp  • / nU R                   R                  5        H•  nUR                  [        5      (       d  M  U R                   R                  U   R                  5       R                  R                  U:w  a  M`  UR                  [        R                  " U[        [        5      S  5      5        M—     U$ r   )r|   rˆ   r‰   r‚   r~   r�   r‘   r’   Úappendr	   rŠ   r‹   )r6   ÚnoderŒ   Úrefs       r"   ÚnamesÚgitbmstore.namesß   sŠ   € ØˆØ—<‘<×2Ñ2Ö4ˆCØ—>‘>¤+×.Ñ.ÙØ�|‰|×&Ñ& sÑ+×0Ñ0Ó2×5Ñ5×9Ñ9¸TÓAÙØ�H‰H”X×&Ò& s¬3¬{Ó+;Ð+=Ð'>Ó?Ö@ñ 5ð ˆr%   c                óŠ   • US:X  a<  U R                   (       a  U R                   $ [        R                  " [        S5      5      eU$ )Nó   .s   no active bookmark)rž   r   ÚRepoLookupErrorr   )r6   Úbnames     r"   Ú
expandnameÚgitbmstore.expandnameê   s6   € Ø�D‹=Ø�{�{Ø—{‘{Ð"Ü×'Ò'¬Ð*?Ó(@ÓAÐAØˆr%   c                óL  • U Hž  u  pEUcB  U R                   R                  R                  [        [        R
                  " U5      -   5        MJ  U R                   R                  R                  [        [        R
                  " U5      -   [        R                  " U5      SS9  M      g)z$Apply a list of changes to bookmarksNT)Úforce)	r|   r~   Údeleter‚   r	   rƒ   r¥   r   Ú	togitnode)r6   rK   rR   Úchangesr„   rª   s         r"   ÚapplychangesÚgitbmstore.applychangesñ   sƒ   € ó "‰JˆDØ‰|Ø—‘×'Ñ'×.Ñ.Ü¤(×"3Ò"3°DÓ"9Ñ9öð —‘×'Ñ'×.Ñ.Ü¤(×"3Ò"3°DÓ"9Ñ9Ü×%Ò% dÓ+Øð /ó ò "r%   c                óp  • [         [        R                  " U5      -   nU R                  R                  S   nX@R                  R                  ;   aZ  U(       dS  U(       a*  U R                  R                  U   U:X  a  X5:X  a  / $ [
        e[        R                  " [        S5      U-  5      e[        U5      S:”  aa  U(       dZ   [        R                  " U R                  U5      nU(       a1  U R                  R                  R                  [        S5      U-  5        / $ ! [        R                   a    Sn NRf = f)Nr{   s.   bookmark '%s' already exists (use -f to force)é   Fs[   bookmark %s matches a changeset hash
(did you leave a -r out of an 'hg bookmark' command?)
)r‚   r	   rƒ   r|   r~   rA   r   r]   r   r‹   r   ÚisrevsymbolÚ_repoÚLookupErrorrs   rp   )r6   r¢   rµ   r›   r£   ÚcurÚ
shadowhashs          r"   ÚcheckconflictÚgitbmstore.checkconflict  s  € Ü¤× 1Ò 1°$Ó 7Ñ7ˆØ�l‰l×%Ñ% fÑ-ˆØ—l‘l×-Ñ-Ó-¶eÞØ—<‘<×*Ñ*¨7Ñ3°vÓ=À&Ã-à�Iä)Ð)Ü—+’+ÜÐCÓDÀtÑKóð ô ˆt‹9�q‹=¦ð#Ü$×0Ò0°·±¸TÓB�
ö Ø—
‘
—‘×"Ñ"Üð'óð
 ñôð ˆ	øô ×$Ñ$ó #Ø"’
ð#ús   Ã!D ÄD5Ä4D5)r}   r   r|   r   )FN)rU   rV   rW   rX   r8   r…   r�   r”   r˜   Úpropertyrž   Úsetterr¦   r¬   r²   r¹   rÂ   rZ   r   r%   r"   rx   rx   ¦   s`   † ò2ò
%ò
?ò

ôð ñ?ó ð?ð ‡]�]ñó ðòòòò÷$r%   rx   c                óŠ   • UR                  SS5      (       a"  [        R                  " U5      n[        X5        gU " U4SU0UD6$ )Nr3   Fr   Údest)r˜   r   Úabspathrv   )r^   rs   rÇ   Úoptsr+   s        r"   ÚinitrÊ   !  sA   € Ø‡x�x��u×ÑÜ�|Š|˜DÓ!ˆä�BÔØÙ�Ñ&˜Ð& Ñ&Ð&r%   c                ór  ^• UR                  5       (       a   [        UR                  [        5      (       a�  UR                  mUR
                  R                  UR                  l        U R                  SS5      (       a%  UR
                  R                  UR                  l
         " U4S jST5      nX!l        U$ )Nr   r   c                  ó8   >• \ rS rSrS rU 4S jr\S 5       rSrg)Úreposetup.<locals>.gitlocalrepoi1  c                óÀ   • [         R                  nXR                  ;   n[        R                  " U R
                  U R                  U R                  R                  U5      $ r   )	ÚrequirementsmodÚDIRSTATE_V2_REQUIREMENTr   r   Úgitdirstaters   r(   r   r3   )r6   Úv2_reqÚuse_dirstate_v2s      r"   Ú_makedirstateÚ-reposetup.<locals>.gitlocalrepo._makedirstate2  sL   € Ü(×@Ñ@�Ø"(×,=Ñ,=Ñ"=�ô  ×+Ò+Ø—G‘GØ—H‘HØ—J‘J—N‘NØ#ó	ð r%   c                óx  >• TR                   " U /UQ70 UD6nUc  g U R                  R                  [        R                  " U5         R
                  R                  nU R                  R                  R                  R                  U5        U R                  R                  R                  R                  5         U$ r   )
Úcommitr   r3   r   r·   Útreer‘   r   Ú	read_treerS   )r6   r    r!   ÚretÚtidr^   s        €r"   r×   Ú&reposetup.<locals>.gitlocalrepo.commit>  s‹   ø€ Ø—k’k $Ð8¨Ò8°Ñ8�Ø‘;ð  Ø—j‘j—n‘n¤W×%6Ò%6°sÓ%;Ñ<×AÑA×DÑD�ð —
‘
—‘×$Ñ$×.Ñ.¨sÔ3Ø—
‘
—‘×$Ñ$×*Ñ*Ô,Ø�
r%   c                ó@   • [        U R                  R                  5      $ r   )rx   r   r3   r<   s    r"   Ú
_bookmarksÚ*reposetup.<locals>.gitlocalrepo._bookmarksL  s   € ä! $§*¡*§.¡.Ó1Ð1r%   r   N)	rU   rV   rW   rX   rÔ   r×   rÄ   rÞ   rZ   )r^   s   €r"   ÚgitlocalreporÍ   1  s!   ø† ò
õð ñ2ó ó2r%   rà   )Úlocalrj   r   r   Ú	__class__rs   Úmakeprogressr4   Ú
configboolrp   r5   )rs   rK   rà   r^   s      @r"   Ú	reposetuprå   *  s{   ø€ Ø‡z�z‡|�|œ
 4§:¡:¬x×8Ñ8Ø�~‰~ˆØ'+§w¡w×';Ñ';ˆ�
‰
Ô$Ø�=‰=˜Ð!8×9Ñ9Ø $§¡§¡ˆD�J‰JÔ÷	2˜4ô 	2ð> &ŒØ€Kr%   c                ó   • US1-  ng )Nr   r   )rs   Ú	supporteds     r"   Ú_featuresetuprè   T  s   € à�&�Ñ�Ir%   c                óH  • [         R                  " [        S[        5        [         R                  " [        S[        5        [         R
                  " [        R                  S[        5      nUS   R                  S/5        [        R                  R                  [        5        g )NÚ	makestoreÚmakefilestorages   initr   )r%   r   Ns'   setup up a git repository instead of hg)r   Úwrapfunctionr   r`   rl   Úwrapcommandr   ÚtablerÊ   ÚextendÚfeaturesetupfuncsÚaddrè   )rs   Úentrys     r"   Úextsetupró   Y  sl   € Ü×ÒœI {´JÔ?Ü×ÒœIÐ'8Ô:JÔKä×"Ò"¤8§>¡>°7¼DÓA€EØ	ˆ!�H‡O�OØ	HÐIôô ×Ñ×#Ñ#¤MÕ2r%   )r¯   )'Ú__doc__Ú
__future__r   r0   Úmercurial.i18nr   Ú	mercurialr   r   r   r   r	   r
   r   rÏ   r   r   r   Ú r   r   r   r   Ú
testedwithÚconfigtableÚ
configitemÚpygit2_versionÚ
getversionr   r`   rb   rl   rv   r‚   rx   rÊ   rå   rè   ró   r   r%   r"   Ú<module>rþ      s·   ðñõ #ã 	å ÷÷ ÷ ÷ó ð #€
à€Ø×!Ò! +Ó.€
á 
Ø
ØØòð ×#Ñ#€
÷8ñ 8òv6÷.Dñ Dò2òð €÷xñ xôv'ò'òTó
3r%   