
    6hDE                        S SK Jr  S SKrS SKJr  S SKJr  S SKJrJ	r	J
r
Jr  SSKJr   " S S	5      r1 S
kr " S S\R                   \R"                  5      rg)    )annotationsN)_)sha1nodeconstants)configerrorpycompatutil   )commonc                  &    \ rS rSrS rS rS rSrg)	submodule   c                (    Xl         X l        X0l        g N)pathnodeurl)selfr   r   r   s       3/usr/lib/python3/dist-packages/hgext/convert/git.py__init__submodule.__init__   s    		    c                8    SU R                   U R                  4-  $ )Ns   %s = [git]%s)r   r   r   s    r   hgsubsubmodule.hgsub   s    $))TXX!666r   c                8    SU R                   U R                  4-  $ )Ns   %s %s)r   r   r   s    r   
hgsubstatesubmodule.hgsubstate!   s    499dii000r   )r   r   r   N)__name__
__module____qualname____firstlineno__r   r   r   __static_attributes__ r   r   r   r      s    
71r   r   >      tree   close   author   branch   parent	   committerc                     ^  \ rS rSrS rS rS rS rS rS r	SU 4S jjr
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rSS jrSrU =r$ )convert_git2   c                4    U" SU R                   -  /UQ70 UD6$ )Ns   --git-dir=%sr   )r   cmdargskwargss       r   _gitcmdconvert_git._gitcmd7   s     ?TYY.@@@@r   c                B    U R                   " U R                  /UQ70 UD6$ r   )r4   run0r   r2   r3   s      r   gitrun0convert_git.gitrun0:   s    ||DII7777r   c                B    U R                   " U R                  /UQ70 UD6$ r   )r4   runr8   s      r   gitrunconvert_git.gitrun=   s    ||DHH6t6v66r   c                B    U R                   " U R                  /UQ70 UD6$ r   )r4   	runlines0r8   s      r   gitrunlines0convert_git.gitrunlines0@   s    ||DNN<T<V<<r   c                B    U R                   " U R                  /UQ70 UD6$ r   )r4   runlinesr8   s      r   gitrunlinesconvert_git.gitrunlinesC   s    ||DMM;D;F;;r   c                B    U R                   " U R                  /UQ70 UD6$ r   )r4   _run3r8   s      r   gitpipeconvert_git.gitpipeF   s    ||DJJ8888r   c                  > [         TU ]  XX4S9  [        R                  R                  XS5        [        R
                  " U5      n[        R                  R                  US-   5      (       a  US-  n[        R                  R                  US-   5      (       d"  [        R                  " [        S5      U-  5      eUR                  SS5      nUS:  d  US	:  a  [        R                  " [        S
5      5      eUS:  ap  SU-  /U l        UR!                  SS5      nU(       a  U R                  R#                  S5        UR                  SS5      nU R                  R#                  SU-  5        O/ U l        [        R$                  " SSSS9  X0l        / U l        U R)                  SS5      U l        U R,                  R/                  SS5      U l        [3        U R0                  5      [4        -  nU(       aC  [        R                  " [        S5      [        S5      R7                  [9        U5      5      -  5      eU R,                  R/                  SS5      n	S n
S nU	 H_  nUR;                  S5      (       d  M  UnS nSU;   a  UR=                  SS5      u  pUS:X  a  U=(       d    Sn
ML  US:X  d  MT  U=(       d    SnMa     U
(       a&  U(       a  [        R                  " [        S5      5      eSU	;   nSU	;   nU(       a&  U(       a  [        R                  " [        S 5      5      eU(       a&  U(       a  [        R                  " [        S!5      5      eU
(       d	  U(       d  Sn
UUU
US".U l        g )#N)revss   gits   /.gits   /objectss&   %s does not look like a Git repository   converts   git.similarityr   d   s$   similarity must be between 0 and 100s   -C%d%%s   git.findcopiesharders   --find-copies-harders   git.renamelimits   -l%d)debnames   cat-files   --batchs   git.extrakeyss%   copying of extra key is forbidden: %ss   , s   git.committeractions)   messagedifferent   messagealways   =r
   rP   s
   committer:rQ   sF   committeractions cannot define both messagedifferent and messagealways   dropcommitter   replaceauthorsC   committeractions cannot define both dropcommitter and replaceauthorsC   committeractions cannot define both dropcommitter and messagealways)rS   rT   rP   rQ   ) superr   r   commandliner	   abspathosr   isdirexistsNoRepor   	configintr   Abortsimopt
configboolappend	checktool
submodulesrI   catfilepipeui
configlistcopyextrakeyssetbannedextrakeysjoinsorted
startswithsplitcommitteractions)r   rd   repotyper   rL   
similarityfindcopiesharderrenamelimitbannedrm   messagedifferentmessagealwaysakvdropcommitterreplaceauthor	__class__s                    r   r   convert_git.__init__I   s	   t7##Df5 ||D!77==))HDww~~d[011--;<tC 
 \\*.?@
>Z#-++a GHII>$z12DK!}}3   ""#:;,,z3EFKKKw45DK8	<<Z@!WW//
<LMT''(?:++:;E(--v/0 
  77--/
  !A||CDD19774+DA++'('9M$**$%$6M " ++:  ),<<(,<<]++7  ]++7   , ,+!1+	!
r   c                J    U R                    H  nUR                  5         M     g r   )rc   close)r   fs     r   afterconvert_git.after   s    !!AGGI "r   c                   U R                   (       dN  U R                  SSS5      u  pUR                  5       nU(       a  [        R                  " [        S5      5      e U$ / nU R                    HU  nU R                  SSU5      u  pVUR                  US S 5        U(       d  M5  [        R                  " [        S5      U-  5      e   U$ )N	   rev-parses
   --branchess	   --remotess   cannot retrieve git headss   --verifys   cannot retrieve git head "%s")rL   r=   
splitlinesr   r]   r   r`   )r   outputstatusheadsrevrawheadrets          r   getheadsconvert_git.getheads   s    yy![[m\NF %%'Ekk!$@"ABB   Eyy#{{<cJWSb\*3++a(H&IC&OPP	 !
 r   c                   U[         R                  :X  a  [        eU R                  S   R	                  US-   5        U R                  S   R                  5         U R                  S   R                  5       R                  5       nUS   U:w  a8  [        R                  " [        S5      [        R                  " U5      U4-  5      e[        US   5      nU R                  S   R                  U5      n[        U5      U:  a#  [        R                  " [        S5      X!4-  5      eU R                  S   R                  S5        U$ )Nr      
r
   s   cannot read %r object at %s   s,   cannot read %r object at %s: unexpected size)r   nullhexOSErrorrc   writeflushreadlinerl   r   r]   r   r   bytestrintreadlen)r   r   ftypeinfosizedatas         r   catfileconvert_git.catfile   s$   #+++M!!#+.!!#"++-3357e++01##E*C01  47|"''-t9t++AB, 
 	  #r   c                   U[         R                  :X  a  gUS:X  aB  SR                  U R                  5        Vs/ s H  o3R	                  5       PM     sn5      nSnXE4$ US:X  aB  SR                  U R                  5        Vs/ s H  o3R                  5       PM     sn5      nSnXE4$ U R                  US5      nU R                  X4   nXE4$ s  snf s  snf )N)NN   .hgsubr   r      .hgsubstates   blob)r   r   ri   
submoditerr   r   r   	modecache)r   namer   mr   modes         r   getfileconvert_git.getfile   s    #+++9::$//2CD2CQwwy2CDEDD z ^#::t7HI7H!||~7HIJDD z <<W-D>>4+.Dz E Js   CCc              #     #    [         R                  n[        U R                  S S9 H  nUR                  U:w  d  M  Uv   M     g 7f)Nc                    U R                   $ r   r0   )ps    r   <lambda>(convert_git.submoditer.<locals>.<lambda>   s    qvvr   )key)r   r   rj   rb   r   )r   nullr   s      r   r   convert_git.submoditer   s6      ((-=>Avv~ ?s
   7A	Ac           	        / U l         [        R                  " 5       nUR                  SSR                  S UR	                  S5       5       5      5        UR                  5        HY  n[        UR                  U5      5      nSU;   d  M%  SU;   d  M-  U R                   R                  [        US   SUS   5      5        M[     g)z~Parse the formatted .gitmodules file, example file format:
[submodule "sub"]

        path = sub

        url = git://giturl

   .gitmodulesr   c              3  @   #    U  H  oR                  5       v   M     g 7fr   )strip).0lines     r   	<genexpr>.convert_git.parsegitmodules.<locals>.<genexpr>   s     E0Dzz||0Ds   s   urls   pathr   N)
rb   r   parseri   rl   sectionsdictitemsr`   r   )r   contentcsecss        r   parsegitmodulesconvert_git.parsegitmodules   s     MMO	JJEe0DEE	
 ::<CQWWS\"A{w!|&&y7S!F)'LM	  r   c                   U R                  SSUS4-  5      u  p#U(       a(  U R                  R                  [        S5      U-  5        g  U R	                  U5        U R                   HC  nU R                  SSXR                  4-  5      u  pSU(       a  M.  UR                  5       Ul
        ME     g ! [
        R                   a*    U R                  R                  [        S5      U-  5         g f = f)Ns   shows   %s:%sr   s2   warning: cannot read submodules config file in %s
s+   warning: unable to parse .gitmodules in %s
r   )r=   rd   warnr   r   r   
ParseErrorrb   r   r   r   )r   versionmodulesr   r   r   s         r   retrievegitmodulesconvert_git.retrievegitmodules  s    {{X. 99
  GGLLHI 	  ) AL(gvv=N2NOIDZZ\AF	 !  	GGLLABWL 		s   
B/ /;C-,C-c                  ^ ^^^^^ U(       a  [         R                  " [        S5      5      e0 T l        / SQT R                  -   U/-   nT R
                  " U6 u  pEU(       a"  [         R                  " [        S5      U-  5      e/ m0 n[        5       mS nS/mS/mUR                  S5      n[        U5      n	Sn
T R                  R                  SS5      mUUU UUU4S	 jnX:  a  X   nU
S
-  n
U(       d:  UR                  S5      (       d  M-  [        S UR                  5        5       5      nMO  UnUS   S   S:X  a  UnX   nU
S
-  n
UnXU'   UT;  a	  U" X}S5        US   S   S:X  a)  X   nU
S
-  n
UT;  a  U" UUS5        US:w  a
  US:w  a  XU'   S nX:  a  M  TS   (       aN  TS   (       a"  TR                  S[        R                  45        O"T R!                  U5        TR                  S5        TU[        5       4$ )Ns(   convert from git does not support --full)	   diff-trees   -z   --root   -m   -r   cannot read changes in %sF    r   rM   s   git.skipsubmodulesc                6  > TR                  U5        U S   nU S   S:H  nU S   S:H  nU(       + =(       a    U S   S   S:H  nUS:X  aV  T
(       a  g S	TS'   U S   S
:X  d  U(       a'  S	TS'   TR                  S[        R                  45        g TR                  S5        g U S   S:X  d	  U S   S:X  a  T
(       d  S	TS'   g g U(       a  [        R                  nU=(       a    S=(       d    U=(       a    S=(       d    ST	R                  X4'   TR                  X45        g )N   r
   s   100755s   120000   r      Rr   T   Dr   )r   r   s   160000s   :160000   x   lr   )addr`   r   r   r   )entryr~   isdesthr   r   renamesourcechangesseenr   skipsubmodules
subdeleted	subexistss          r   r   #convert_git.getchanges.<locals>.add4  s   HHQKaAaI%AaI%A%:=%(1+*=LN"!#	!8t#|$(JqMNNI/@/H/H#IJNN#34qY&%(j*@%#'IaL &  )11A*+*)L!*)Lv&v&r   r
      :c              3  N   #    U  H  n[         R                  " U5      v   M     g 7fr   )r   r   )r   r   s     r   r   )convert_git.getchanges.<locals>.<genexpr>T  s     E9ah..q119s   #%r      Cr   Tr   r   )r   r   )r   r]   r   r   r^   r=   rg   rl   r   rd   r_   rk   tupler`   r   r   r   )r   r   fullr1   r   r   copiesr   difftreelcountir   lr~   copysrccopydestfdestr   r   r   r   r   s   `                @@@@@r   
getchangesconvert_git.getchanges  s	   ++a KLMM:kki 	
 c*++a <=GHHuG	W
<<(X++J8MN	' 	'4 jAFA||D))E1779EEAQx{d"#;Q#*x }Ee$ Qx{d" Q$ud+ N*u/F()uE; j> Q<!}0A0I0IJK''045''r   c           
     p   U R                  US5      nUR                  S5      nX#S-   S  nU R                  U5      nUS U R                  5       n/ nS =px0 n	USS   H  n
U
R	                  SS5      u  pUS:X  aJ  UR	                  5       nUSS  u  pSR                  US S 5      nUS   S	:X  a  USS
 nU R                  U5      nUS:X  aJ  UR	                  5       nUSS  u  pSR                  US S 5      nUS   S	:X  a  USS
 nU R                  U5      nUS:X  a  UR                  U5        XR                  ;   d  M  XU'   M     U R                  S   (       a  S nOU R                  S   (       a  UnU(       aF  U R                  S   nU R                  S   nU(       a  USUU4-  -  nOU(       a  Xx:w  a
  USUU4-  -  nWSS S-   USS USS  nnn[        U5      * [        U5      S-  [        U5      -   -  nWS-   SU-  -   nU R                  R                  SS5      n[        R                  " UUUUUU	US9nU$ )Ns   commits   

r   r
       r(   r      <r   r+   r*   rS   rT   rQ   rP   s   
%s %s
   1i  s   %drM   s   git.saverev)parentsdateauthordescr   extrasaverev)r   findrecoder   rl   ri   r`   rf   rm   r   rd   r_   r   commit)r   r   r   endmessager   r   r   	committerr   enrw   r   tmtzrt   rs   tzstzhtzmr   r   s                          r   	getcommitconvert_git.getcommitu  st   LL),ffWo!GI,++g&dsG !!12A774#DAI~GGI231Sb6*!9$#Ab\FV,L GGI23 IIaf-	Q<4' )!BI KK	2	I~q!&&&a' *   !12I""#34F 112BCM#445HI<=)*DDD!f&9<+;Y*GGG2b	D("R)RW#S#hY#c(T/CH45DyEBJ'''$$Z@MM
 r   c                    U R                  SS5      u  pU(       a,  [        R                  " [        S5      U R                  -  5      e[        U5      $ )Ns   rev-lists   --alls'   cannot retrieve number of commits in %s)rE   r   r]   r   r   r   )r   r   r   s      r   
numcommitsconvert_git.numcommits  sH    &&{H=++<=		I  6{r   c                   0 n0 nU R                  SSU R                  5      u  p4U(       a,  [        R                  " [	        S5      U R                  -  5      eSnU H  nUR                  5       nUR                  S5      (       d  UR                  S5      (       a,  [        R                  " [	        S5      U R                  -  5      eUR                  S S5      u  pxUR                  U5      (       d  M  XrU[        U5      S  '   M     U H5  nUR                  S5      (       a  X(   XS S	 '   M$  US-   U;   a  M/  X(   X'   M7     U$ )
Ns	   ls-remotes   --tagss   cannot read tags from %ss
   refs/tags/s   error:s   fatal:r
   s   ^{})
rE   r   r   r]   r   r   rk   rl   r   endswith)	r   tagsalltagsr   r   prefixr   r   tags	            r   gettagsconvert_git.gettags  s   )),	499M++a ;<tyyHII D::<Dy))T__Y-G-Gkk!$?"@499"LMM

4+ID>>&))*.CF&'  C||F##!("X<7* 'DI  r   c                   / nUcz  U R                  SSSSU5      u  pEU(       a"  [        R                  " [        S5      U-  5      eU H2  nSU;  a  M  US S R	                  S5      u  pxUR                  U5        M4     U$ U R                  SSSSUS	XS
-   4-  S5      u  pEU(       a"  [        R                  " [        S5      U-  5      eU Vs/ s H  oR                  S5      PM     nnU$ s  snf )Nr   r   r   r   r      	r   s   --name-onlys   %s^%dr
   s   --r   )rE   r   r]   r   rl   r`   rstrip)	r   r   r   r   r   r   r   r   r~   s	            r   getchangedfilesconvert_git.getchangedfiles  s    9!--iwNF kk!$@"AG"KLL>"v||E*q!	 &  "--GU++NF kk!$@"AG"KLL0671xxG7 8s   C+c                z   0 nU R                   R                  SS5      nSUS-   4S/nS1n U R                  S5      u  pVU He  nUR                  5       nUR	                  S S5      u  pU H8  u  pU	R                  U
5      (       a  X;   a  M"  S	X[        U
5      S  4-  n	XU	'   M:     Mg     U$ ! [         a     U$ f = f)
NrM   s   git.remoteprefixs   refs/remotes/origin/   /)s   refs/heads/r   s   refs/remotes/origin/HEADs   show-refr
   s   %s%s)rd   r   rE   r   rl   rk   r   	Exception)r   	bookmarksremoteprefixreftypesexcluder   r   r   r   r   	gitprefixhgprefixs               r   getbookmarksconvert_git.getbookmarks  s    	 ww~~j2EF %lT&9:!
 (
	!--k:NFzz| JJtQ/	+3'I??955 "hS^5E0F%GGD&)dO	 ,4	    		s   A>B, ,
B:9B:c                &    U R                  X5        g)z$git revision string is a 40 byte hexN)checkhexformat)r   revstrmapnames      r   checkrevformatconvert_git.checkrevformat  s    F,r   )rc   rm   rf   r   r   r^   rb   r   )s	   splicemap)r    r!   r"   r#   r4   r9   r=   rA   rE   rI   r   r   r   r   r   r   r   r   r   r  r  r  r  r)  r/  r$   __classcell__)rz   s   @r   r-   r-   2   sx    
A87=<9d
L",N&"6W(r9v>:>- -r   r-   )
__future__r   rX   mercurial.i18nr   mercurial.noder   	mercurialr   r   r   r	    r   r   rh   converter_sourcerV   r-   r%   r   r   <module>r8     sO    # 	  ,  
1 
1	c-&))6+=+= c-r   