
    	^cF                        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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 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j        #          d$             ZdS )%z-export repositories as git fast-import stream    N)_)hexnullrev)
stringutil)error
logcmdutilpycompat	registrarscmutil   )convcmds   ships-with-hg-cores   [<>
"]s   [<> 
]c                 ^   |                      ||          }t          j        |          }t          j        |          }t                              |          st                              |          r$t          j        t          d          |z            |rd|z   dz   |z   dz   S d|z   dz   S )Ns:   Unable to parse user into person and email for revision %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00K!+..J!!*-- 
1F1L1L2 2 
 kKLL
 
 	
  (k!F*Z7$>>j 4''    c                     | \  }}|dk    rdnd}|dz  dk    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.   6   s    Ivq[[TTdF{akEFF$P
 
 	
 [[BF
B,CRKEC	NN"V+kS%L.HHHr!   c                     d| z   S )Ns   refs/heads/ )branchs    r   convert_to_git_refr2   C   s    F""r!   c                     |                      dt          |          z             |                      |           |r|dd          dk    r|                      d           d S d S )Ns   data %d
   
)appendlen)bufdataskip_newlines      r   
write_datar;   H   sk    JJ|c$ii'(((JJt 49--

5 .-r!   c                 ~   ||         }|                                 }||v r|                     d|z             d S d |                                D             }|D ]B}|                                 |vr*|                     t	          d          ||fz              d S C|                                D ]}	|	|vr|                    |	          }
t          |
                                          }||vrQt          |          dz   }|||<   |
	                                }dd|z  g}t          ||d            | j        |dd	i ~t          |          dz   }|||<   t          |                                          }d
|z  d|z  dt          ||                                |          t!          |                                          fz  g}t          ||                                d	           |r6|                    d||d                                                   z             t          |          dk    r~|                    d||d                                                   z             ||d                  }|                                                    |                                          }n|                                }g }|D ]}	|	|vr|                    |	d|	z  f           !|                    |	          }
|
                                }|
                                rdnd}d||t          |                   |	fz  }|                    |	|f           |                                 |                    d |D                        ~|                    d            | j        |dd	i ~d S )Ns/   warning: revision %s already exported, skipped
c                 L    g | ]!}|                                 t          k    |"S r0   )r   r   ).0ps     r   
<listcomp>z!export_commit.<locals>.<listcomp>U   s*    >>>Q15577g+=+=q+=+=+=r!   s8   warning: parent %s of %s has not been exported, skipped
r   s   blob
s	   mark :%d
FkeepprogressbarTs
   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   | ]	\  }}|V  
d S )Nr0   )r>   fnamechangeds      r   	<genexpr>z export_commit.<locals>.<genexpr>   s'      77+E7w777777r!   r5   )r   debugparentswarnr   filesfilectxfilenoder7   r9   r;   writer2   r1   r    r   r.   r(   descriptionr6   manifestdiffisexecsortextend)uirepor   marksr   ctxrevidrH   r?   rD   rK   filerevmarkr9   r8   refp0ctxrJ   filebuffilepermrE   s                        r   export_commitr_   O   s   
s)CGGIIE~~
DuLMMM>>#++-->>>G  5577%GGNOOe*   FF     ++e$$g&&(())%u::>D!E'N<<>>Dmd23CsD%(((BHc04000 u::>DE%L
SZZ\\
*
*C	388::u==

++
	
C sCOO%%t,,, <

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

>E'!*..*:*:$;;<<<WQZ ##ENN$4$455		G - -NNE9u#456666kk%((G&&((G!(!1!1=vvvH&(E#g,,4G)OOGNNE7+,,,,LLNNNJJ77w777777JJuBHc(4(((r!   s   ^[0-9a-f]{40}$s
   fastexport   r   revs   revisions to exports   REV   is   import-marksr!   s   old marks file to reads   FILE   es   export-markss   new marks file to write   A	   authormaps   remap usernames using this files   [OPTION]... [REV]...)helpcategoryc           	      2   t          j        |          }|t          |                    dg                     z  }|st	          j        |dg          }nt          j        ||          }|s!t          j        t          d                    |                    d          }|rt          j        | |          }ni }|                    d          }i }|rt          |d          5 }|D ]j}	|	                                }	t                              |	          r|	|v r!t          j        t          d                    t!          |          dz   ||	<   k	 d	d	d	           n# 1 swxY w Y   |                                 |                     t          d
          t          d          t!          |                    5 }
|D ])}t'          | ||||           |
                                 *	 d	d	d	           n# 1 swxY w Y   |                    d          }|r~t          |d          5 }d	gt!          |          z  }|                                D ]\  }}|||dz
  <   |D ]}|                    |dz              	 d	d	d	           d	S # 1 swxY w Y   d	S d	S )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.
    ra      :s   no revisions matchedre   s   import_marksrbs   Corrupted marks filer   Ns	   exportings	   revisions)unittotals   export_markswbr5   )r	   byteskwargstupler   r   revranger   r   r   r   r   readauthormapopenstripisrevr   r7   rR   makeprogressr_   	incrementitemsrM   )rT   rU   revsopts
authorfiler   import_marksrV   import_marks_filelineprogressr   export_marksexport_marks_fileoutput_markskvs                    r   
fastexportr      s{   0 %%DE$((62&&'''D /tf--"4.. 6k!344555,''J )"j99			88O,,LE -,%% 	-):) - -zz||{{4(( BDEMM+a(?&@&@AAA!%jj1nd	-	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	IIKKK		,aooSYY 
 
 
 !	 	! 	!C"dC	:::    	!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 88O,,L 3,%% 	3): 6CJJ.L ( (1&'QU##! 3 3!''E	22223		3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	33 3s8   $A.EE#&E#=-G77G;>G;)AJ

JJ)__doc__remercurial.i18nr   mercurial.noder   r   mercurial.utilsr   	mercurialr   r   r	   r
   r   convertr   
testedwithcmdtablecommandcompiler   r   r    r.   r2   r;   r_   rs   CATEGORY_IMPORT_EXPORTr   r0   r!   r   <module>r      s7  
 4 3
 
			       ' ' ' ' ' ' ' ' & & & & & &                    #

)
H
%
%"
:.. !rz*-- ( ( ("
I 
I 
I# # #
  F F FR 	
$%% 		vr11344aaii@	QQ'@%A%A11W::N	QQ'A%B%BAAgJJOA011AgJJ	
	 A/  "/3 /3# "/3 /3 /3r!   