
    .Phq#                         d Z ddlZddlmZmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZmZmZmZ d	 Z G d
 d          Z G d dej                  ZdS )z!Fast export/import functionality.    N)commandsparser	processor)errors   )commit_tree)iter_tree_contents)ZERO_SHABlobCommitTagc                 b    |                      dd          \  }}||                    d          fS )N    <r      >)rsplitrstrip)textnameemails      R/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/dulwich/fastexport.pysplit_emailr   #   s0    KKq))MT5%,,t$$%%    c                   J    e Zd ZdZddZddZd Zd Zd Zd	 Z	dd
Z
ddZdS )GitFastExporterz5Generate a fast-export output stream for Git objects.returnNc                 >    || _         || _        i | _        d| _        d S )Nr   )outfstoremarkers_marker_idx)selfr   r   s      r   __init__zGitFastExporter.__init__+   s%    	
+-r   c                 x    | j                              t          |d|j                              dz              d S )N	__bytes__   
)r   writegetattr__repr__r!   cmds     r   	print_cmdzGitFastExporter.print_cmd1   s8    	?[#,??AAEIJJJJJr   c                 p    | xj         dz  c_         t          | j                                       d          S )Nr   ascii)r    strencode)r!   s    r   _allocate_markerz GitFastExporter._allocate_marker4   s5    A4#$$++G444r   c                     |                                  }|j        | j        |<   t          j        ||j                  |fS N)r0   idr   r   BlobCommanddata)r!   blobmarkers      r   _export_blobzGitFastExporter._export_blob8   s;    &&((#wV$VTY77@@r   c                 `    |                      |          \  }}|                     |           |S r2   )r8   r+   )r!   r6   r*   r7   s       r   	emit_blobzGitFastExporter.emit_blob=   s0    ))$//fsr   c              #     K   | j                             ||          D ]\  \  }}\  }}\  }}|t          j        |          V  (t	          j        |          s"| j         |         }	|                     |	          }
||k    r|t          j        ||          V  ||k    s||k    rd|
z   }t          j        |||d           V  d S )N   :)	r   tree_changesr   FileDeleteCommandstatS_ISDIRr:   FileRenameCommandFileModifyCommand)r!   	base_treenew_treeold_pathnew_pathold_modenew_mode
old_hexsha
new_hexshar6   r7   prefixed_markers               r   _iter_fileszGitFastExporter._iter_filesB   s
     
 Z$$Y99		 	 
 Xx Xx$Z0:::::<)) .z*---8##(<08DDDDD8##zZ'?'?"&-0h    	 	r   c           
         t          |                     ||j                            }|                                 }|j        r|j        d         }|j        dd          }nd }g }t          |j                  \  }}	t          |j                  \  }
}t          j	        ||||	|j
        |j        f|
||j        |j        f|j        |||          }||fS )Nr   r   )listrL   treer0   parentsr   author	committerr   CommitCommandauthor_timeauthor_timezonecommit_timecommit_timezonemessage)r!   commitrefrC   	file_cmdsr7   from_mergesrQ   author_emailrR   committer_emailr*   s                r   _export_commitzGitFastExporter._export_commitV   s    )))V[AABB	&&((> 	N1%E^ABB'FFEF*6=99%01A%B%B"	?$\6#5v7MN"&	 N
 
 V}r   c                 d    |                      |||          \  }}|                     |           |S r2   )r`   r+   )r!   rY   rZ   rC   r*   r7   s         r   emit_commitzGitFastExporter.emit_commitr   s4    ))&#yAAVsr   r   Nr2   )__name__
__module____qualname____doc__r"   r+   r0   r8   r:   rL   r`   rb    r   r   r   r   (   s        ??   K K K K5 5 5A A A
  
  (   8     r   r   c                   f    e Zd ZdZdddZd Zd ZddZdd	Zdd
Z	ddZ
ddZddZddZd ZdS )GitImportProcessorzEAn import processor that imports into a Git repository using Dulwich.NFr   c                     t           j                            | ||           || _        t          | _        i | _        i | _        d S r2   )r   ImportProcessorr"   repor
   last_commitr   	_contents)r!   rm   paramsverboser   s        r   r"   zGitImportProcessor.__init__}   s>    !**4AAA	#+-9;r   c                 Z    |                     d          r| j        |dd                   S |S )Nr<   r   )
startswithr   )r!   	objectishs     r   lookup_objectz GitImportProcessor.lookup_object   s3    %% 	/<	!""..r   c                 l    t          j        |          }|                     |j                   | j        S r2   )r   ImportParserprocessiter_commandsr   )r!   streamps      r   import_streamz GitImportProcessor.import_stream   s.    ''Q_%%%|r   c                     t          j        |j                  }| j        j                            |           |j        r|j        | j        |j        <   dS dS )zProcess a BlobCommand.N)	r   from_stringr5   rm   object_store
add_objectmarkr3   r   )r!   r*   r6   s      r   blob_handlerzGitImportProcessor.blob_handler   sW    ))	))$///8 	-%)WDL"""	- 	-r   c                     dS )zProcess a CheckpointCommand.Nrh   r)   s     r   checkpoint_handlerz%GitImportProcessor.checkpoint_handler         r   c                 P   t                      }|j        |j        }n|j        }|\  }}}}|j        \  }}	}
}|dz   |z   dz   |_        ||_        t	          |          |_        |dz   |	z   dz   |_        ||_        t	          |
          |_        |j        |_        g |_	        |j
        r9|                     |j
                  |_
        |                     |j
                   |                                D ]-}|j        dk    rx|j        @t!          j        |j                  }| j        j                            |           |j        }n|                     |j                  }|j        |f| j        |j        <   |j        dk    r| j        |j        = |j        dk    r | j        |j                 | j        |j        <   |j        dk    r.| j        |j                 | j        |j        <   | j        |j        = |j        dk    r	i | _        t=          d	|j         d
          t?          | j        j        d | j                                         D                       |_!        | j"        tF          k    r|j	        $                    | j"                   |j%        D ]/}|j	        $                    |                     |                     0| j        j        &                    |           |j        | j        |j'        <   |j        | _"        |j(        r|j        | j)        |j(        <   dS dS )zProcess a CommitCommand.Nr   r   s
   filemodifys
   filedeletes   filecopys
   filerenames   filedeleteallzCommand z not supportedc              3   ,   K   | ]\  }\  }}|||fV  d S r2   rh   ).0pathmodehexshas       r   	<genexpr>z4GitImportProcessor.commit_handler.<locals>.<genexpr>   s2      WW&<t^dFdFD!WWWWWWr   )*r   rQ   rR   rU   intrT   rW   rV   rX   rP   r\   ru   _reset_base
iter_filesr   r5   r   r~   rm   r   addr3   datarefr   ro   r   src_path	dest_pathrE   rF   	Exceptionr   itemsrO   rn   r
   appendr]   r   rZ   r   r   )r!   r*   rY   rQ   author_namer^   author_timestamprU   committer_namer_   commit_timestamprW   filecmdr6   blob_idmerges                   r   commit_handlerz!GitImportProcessor.commit_handler   s%   :!ZFF]FIOFl$4o M	
#e+l:TA!0 !122)E1OCdJ!0 !1229 	(**3955CISY'''~~'' 	I 	IG|},,<++GL99DI*..t444"gGG"00AAG07g/Fw|,,..N7<00,,48N7CS4Tw011..37>'BR3Sw/0N7#344!111!# G7< G G GHHH!I"WW@T@T@V@VWWW
 
 x''N!!$"2333Z 	= 	=EN!!$"4"4U";";<<<<	))&111#Y	#'!98 	/%+YDL"""	/ 	/r   c                     dS )zProcess a ProgressCommand.Nrh   r)   s     r   progress_handlerz#GitImportProcessor.progress_handler   r   r   c                     | j         |k    rd S i | _        || _         |t          k    r?| j        |         j        }t          | j        j        |          D ]\  }}}||f| j        |<   d S d S r2   )rn   ro   r
   rm   rO   r	   r   )r!   	commit_idtree_idr   r   r   s         r   r   zGitImportProcessor._reset_base   s    y((F$  i	*/G
 $DI$:GDD	6 6 (,f~t$$ ! 6 6r   c                     |j         t          }n|                     |j                   }|                     |           || j        j        |j        <   dS )zProcess a ResetCommand.N)r\   r
   ru   r   rm   refsrZ   )r!   r*   r\   s      r   reset_handlerz GitImportProcessor.reset_handler   sP    9EE&&sy11E"'	swr   c                     t                      }|j        |_        |j        |_        |j        |_        | j                            |           |j        | j        j        d|j        z   <   dS )zProcess a TagCommand.z
refs/tags/N)	r   taggerrX   tagr   rm   r   r3   r   )r!   r*   r   s      r   tag_handlerzGitImportProcessor.tag_handler   sY    eeZ
k7	S!!!25&	|ch.///r   c                 4    t          j        |j                  )zProcess a FeatureCommand.)fastimport_errorsUnknownFeaturefeature_namer)   s     r   feature_handlerz"GitImportProcessor.feature_handler   s    .s/?@@@r   )NFNrc   )rd   re   rf   rg   r"   ru   r|   r   r   r   r   r   r   r   r   rh   r   r   rj   rj   x   s        OO< < < < <  
  
- - - -+ + + +9/ 9/ 9/ 9/v) ) ) )6 6 6 6( ( ( (9 9 9 9A A A A Ar   rj   )rg   r?   
fastimportr   r   r   r   r   indexr   r   r	   objectsr
   r   r   r   r   r   rl   rj   rh   r   r   <module>r      s  . ( '  2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2       , , , , , , 0 0 0 0 0 0 0 0 0 0 0 0& & &
M M M M M M M M`@A @A @A @A @A2 @A @A @A @A @Ar   