
    q&f                        d Z ddlZddlmZ ddlmZmZ ddlmZ ddl	m
Z
mZmZmZ ddlmZ d	Zi Z ej$                  e      Z ej&                  d
      Z ej&                  d      Zd Zd Zd Zd%dZd Z ej&                  d      Z edddg  ed       ed      fddd ed       ed      fddd ed       ed      fdd d ed!       ed      fg ed"      ej8                  #      d$        Zy)&z-export repositories as git fast-import stream    N)_)hexnullrev)
stringutil)error
logcmdutil	registrarscmutil   )convcmds   ships-with-hg-cores   [<>
"]s   [<> 
]c                 ,   | j                  ||      }t        j                  |      }t        j                  |      }t        j                  |      st        j                  |      r!t        j                  t        d      |z        |rd||fz  S d|z  S )Ns:   Unable to parse user into person and email for revision %ss	   "%s" <%s>s   <%s>)
getr   personemailGIT_EMAIL_PROHIBITEDmatchGIT_PERSON_PROHIBITEDr   Abortr   )	authormapuserrevmapped_useruser_person
user_emails         2/usr/lib/python3/dist-packages/hgext/fastexport.pyconvert_to_git_userr   $   s    --d+K##K0K!!+.J!!*-1F1L1L2 kkKL
 	
 {J777##    c                     | \  }}|dk  rdnd}|dz  dk7  r"t        j                  t        d      | fz        t        |      dz  }|dz  }|dz  }dt	        |      z  |z   d||fz  z   S )Nr      +   -<   s4   UTC offset in %b is not an integer number of secondss   %d s   %02d%02d)r   r   r   absint)date	timestamputcofftzsigntzhtzmins         r   convert_to_git_dater*   5   s    Ivq[TdF{akkEF$P
 	
 [BF
B,CRKEC	N"V+kS%L.HHHr   c                     d| z   S )Ns   refs/heads/ )branchs    r   convert_to_git_refr.   B   s    F""r   c                     | j                  dt        |      z         | j                  |       |s|dd  dk7  r| j                  d       y y )Ns   data %d
   
)appendlen)bufdataadd_newlines      r   
write_datar7   G   sD    JJ|c$i'(JJtd23i5(

5 )r   c                 `   ||   }|j                         }||v r| j                  d|z         y |j                         D cg c]  }|j                         t        k7  s| }}|D ]5  }|j                         |vs| j                  t        d      ||fz          y  |j                         D ]  }	|	|vr|j                  |	      }
t        |
j                               }||vs7t        |      dz   }|||<   |
j                         }dd|z  g}t        ||d        | j                  |ddi ~ t        |      dz   }|||<   t        |j                               }d|z  d|z  d	t!        ||j#                         |      t%        |j'                               fz  g}t        ||j)                                |r(|j+                  d
||d   j                            z         t        |      dk(  r^|j+                  d||d   j                            z         ||d      }|j-                         j/                  |j-                               }n|j                         }g }|D ]y  }	|	|vr|j+                  |	d|	z  f       |j                  |	      }
|
j                         }|
j1                         rdnd}d||t        |         |	fz  }|j+                  |	|f       { |j3                          |j5                  d |D               ~|j+                  d        | j                  |ddi ~y c c}w )Ns/   warning: revision %s already exported, skipped
s8   warning: parent %s of %s has not been exported, skipped
r   s   blob
s	   mark :%d
Tkeepprogressbars
   commit %s
s   committer %s %s
s	   from :%d
r      s
   merge :%d
s   D %s
s   755s   644s   M %s :%d %s
c              3   &   K   | ]	  \  }}|  y w)Nr,   ).0fnamechangeds      r   	<genexpr>z export_commit.<locals>.<genexpr>   s     7+E7w7s   r1   )r   debugparentsr   r   warnr   filesfilectxfilenoder3   r5   r7   writer.   r-   r   r   r*   r$   descriptionr2   manifestdiffisexecsortextend)uirepor   marksr   ctxrevidprA   r=   rD   filerevmarkr5   r4   refp0ctxrC   filebuffilepermr>   s                        r   export_commitrY   N   s   
s)CGGIE~
DuLM++->Q1557g+=q>G> 557%GGNOe*   ++e$g&&()%u:>D!E'N<<>Dmd23CsD$'BHHc040  u:>DE%L
SZZ\
*C	388:u=
+
	
C sCOO%&

=5)9#::;
7|q

>E'!*..*:$;;<WQZ ##ENN$45		G -NNE9u#456kk%(G&&(G!(!1vvH&(E#g,4G)OOGNNE7+,- LLNJJ7w77JJuBHHc(4(A ?s   L+L+s   ^[0-9a-f]{40}$s
   fastexport   rs   revs   revisions to exports   REV   is   import-marksr   s   old marks file to reads   FILE   es   export-markss   new marks file to write   As	   authormaps   remap usernames using this files   [OPTION]... [REV]...)helpcategoryc           	      Z   |t        |j                  dg             z  }|st        j                  |dg      }nt	        j                  ||      }|st        j                  t        d            |j                  d      }|rt        j                  | |      }ni }|j                  d      }i }|rut        |d      5 }|D ]Z  }	|	j                         }	t        j                  |	      r|	|v rt        j                  t        d            t        |      dz   ||	<   \ 	 d	d	d	       |j                          | j!                  t        d
      t        d      t        |            5 }
|D ]!  }t#        | ||||       |
j%                          # 	 d	d	d	       |j                  d      }|rat        |d      5 }d	gt        |      z  }|j'                         D ]  \  }}|||dz
  <    |D ]  }|j)                  |dz           	 d	d	d	       y	y	# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y	xY w)a  export repository as git fast-import stream

    This command lets you dump a repository as a human-readable text stream.
    It can be piped into corresponding import routines like "git fast-import".
    Incremental dumps can be created by using marks files.
    r      :s   no revisions matchedr   import_marksrbs   Corrupted marks filer   Ns	   exportings	   revisions)unittotalexport_markswbr1   )tupler   r
   revranger   r   r   r   r   readauthormapopenstripisrevr   r3   rK   makeprogressrY   	incrementitemsrF   )rM   rN   revsopts
authorfiler   ra   rO   import_marks_filelineprogressr   re   export_marks_fileoutput_markskvs                    r   
fastexportrz      s   0 	E$((5"%&&Dtf-""4.kk!3455+&J))"j9		88N+LE,% 	-):) -zz|{{4(DEM++a(?&@AA!%j1nd	-	- 	IIK		,aoSY 
 
 !	 	!C"dC	: 	!! 88N+L,% 	3): 6CJ.L (1&'QU#(! 3!''E	23		3 	3 !	- 	-! !	3 	3s&   <A H	$'H3AH!	HH!H*)F)__doc__remercurial.i18nr   mercurial.noder   r   mercurial.utilsr   	mercurialr   r   r	   r
   convertr   
testedwithcmdtablecommandcompiler   r   r   r*   r.   r7   rY   rl   CATEGORY_IMPORT_EXPORTrz   r,   r   r   <module>r      s1  
 4
 
  ' &   #

)

H
%"

:. !rzz*- $"
I#
FR 	

$% 		vr134ai@	Q'@%A1W:N	Q'A%BAgJO01gJ	
	 //"-3#"-3r   