
    .Phc                        d Z ddlZddlZddlZddlZddlZddlmZ ddlmZm	Z	m
Z
 ddlmZ ddl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 ddlmZ erddlmZ ddlmZ ddZddZ  G d d          Z! G d de!          Z" G d de!          Z# G d de!          Z$ G d de!          Z% G d de!          Z& G d de!          Z' G d  d!e!          Z( G d" d#e!          Z) G d$ d%e!          Z* G d& d'e!          Z+ G d( d)e!          Z, G d* d+e!          Z- G d, d-e!          Z. G d. d/e!          Z/ G d0 d1e!          Z0 G d2 d3e!          Z1 G d4 d5e!          Z2 G d6 d7e!          Z3 G d8 d9e!          Z4 G d: d;e!          Z5 G d< d=e!          Z6 G d> d?e!          Z7 G d@ dAe!          Z8 G dB dCe!          Z9 G dD dEe!          Z: G dF dGe!          Z; G dH dIe!          Z< G dJ dKe!          Z= G dL dMe!          Z> G dN dOe!          Z? G dP dQe!          Z@ G dR dSe!          ZA G dT dUe!          ZB G dV dWe!          ZC G dX dYe!          ZD G dZ d[e!          ZE G d\ d]e!          ZF G d^ d_eF          ZG G d` dae!          ZH G db dce!          ZI G dd deeF          ZJ G df dge!          ZK G dh die!          ZL G dj dke!          ZM G dl dme!          ZN G dn doe!          ZO G dp dqeF          ZP G dr dse!          ZQ G dt due!          ZR G dv dwe!          ZSi dxe#dye"dzeKd{eLd|e.d}e/d~e0deRde:de*de5de+de,de%de&de'de(i deSde-de)deQde@deAdeBde3deCdeDde=deGde8de9de6de$de4ePe?e2eJe7e1e>e;e<d	ZTddZUddZVeWdk    r eV             dS dS )zSimple command-line interface to Dulwich>.

This is a very simple command-line wrapper for Dulwich. It is by
no means intended to be a full-blown Git command-line interface but just
a way to test Dulwich.
    N)getopt)TYPE_CHECKINGClassVarOptional)	porcelain   )GitProtocolErrorget_transport_and_path)ApplyDeltaError)Index)parse_commit)Pack
sha_to_hex)Repo)ObjectID)Refreturnc                 .    t          j        d           d S )Nr   )sysexit)signalframes     K/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/dulwich/cli.py
signal_intr   5   s    HQKKKKK    c                 6    dd l }|                                 d S )Nr   )pdb	set_trace)r   r   r   s      r   signal_quitr   9   s    JJJMMOOOOOr   c                   *    e Zd ZdZdee         fdZdS )CommandzA Dulwich subcommand.r   c                 *    t          | j                  )zRun the command.)NotImplementedErrorrunselfargss     r   r$   zCommand.runB   s    !$(+++r   N)__name__
__module____qualname____doc__r   intr$    r   r   r!   r!   ?   s9        ,8C= , , , , , ,r   r!   c                       e Zd ZddZdS )cmd_archiver   Nc                    t          j                    }|                    dt          d           |                    dt          d           |                    |          }|j        rUt          |j                  \  }}|                    ||j        t          j
        j        t          j        j                   d S t          j        d|j        t          j
        j        t          j        	           d S )
Nz--remotez+Retrieve archive from specified remote repo)typehelp
committish?r1   nargs)write_error.)	outstream	errstream)argparseArgumentParseradd_argumentstr
parse_argsremoter
   archiver3   r   stdoutwritestderrr   buffer)r&   r'   parserclientpaths        r   r$   zcmd_archive.runH   s    (**> 	 	
 	
 	

 	Ls#>>>  &&; 	1$+>>LFDNN
 J,	       T_
0ASZ     r   r   Nr(   r)   r*   r$   r-   r   r   r/   r/   G   s(             r   r/   c                       e Zd ZddZdS )cmd_addr   Nc                     t          j                    }|                    |          }t          j        d|           d S Nr8   )paths)r;   r<   r?   r   addr&   argvrF   r'   s       r   r$   zcmd_add.run`   s>    (**  &&c&&&&&&r   rI   rJ   r-   r   r   rL   rL   _   s(        ' ' ' ' ' 'r   rL   c                       e Zd ZddZdS )cmd_rmr   Nc                     t          j                    }|                    |          }t          j        d|           d S rN   )r;   r<   r?   r   rmrQ   s       r   r$   z
cmd_rm.runh   s>    (**  &&S%%%%%%r   rI   rJ   r-   r   r   rT   rT   g   s(        & & & & & &r   rT   c                       e Zd ZddZdS )cmd_fetch_packr   Nc                 *   t          j                    }|                    dd           |                    ddt                     |                    ddt                     |                    |          t          j                  \  }}t          d	          j        rj	        j
        }nF	 ddt          t          t          f         d
t          t                   dt           t                   ffd}|                    ||           d S )N--all
store_trueactionlocationr4   )r6   r1   refs*r8   depthr   c                 *    fdj         D             S )Nc                 L    g | ] }|j         v|                    d           !S )zutf-8)object_storeencode).0yrs     r   
<listcomp>z?cmd_fetch_pack.run.<locals>.determine_wants.<locals>.<listcomp>   s1    XXXa@W@W))@W@W@Wr   )r_   )r_   ra   r'   rh   s     r   determine_wantsz+cmd_fetch_pack.run.<locals>.determine_wants|   s"     YXXX49XXXXr   N)r;   r<   r=   r>   r?   r
   r^   r   allrd   determine_wants_alldictr   r   r   r,   listfetch)r&   rR   rF   rG   rH   rj   r'   rh   s         @@r   r$   zcmd_fetch_pack.runp   s*   (**GL999Jc<<<F#C888  &&-dm<<II8 	Yn@OO CGY Y3=)Y2:3-YhY Y Y Y Y Y Y
 	T1o.....r   rI   rJ   r-   r   r   rX   rX   o   s(        / / / / / /r   rX   c                       e Zd ZddZdS )	cmd_fetchr   Nc                 x   t          |dg           \  }}t          |           t          |                    d                    \  }}t	          d          }dt
          dd fd}|                    |||          }t          d           |                                D ]}t           d	j	        |            d S )
N r   r8   msgr   c                 N    t           j        j                            |            d S rk   )r   rB   rE   rC   )ru   s    r   progresszcmd_fetch.run.<locals>.progress   s!    J##C(((((r   )rw   zRemote refs:z{} -> {})
r   rn   r
   popr   bytesrp   printitemsformat)	r&   r'   optsrG   rH   rh   rw   r_   items	            r   r$   zcmd_fetch.run   s    D"b))
dT


-dhhqkk::II	)% 	)D 	) 	) 	) 	) ||D!h|77nJJLL 	, 	,D#*#T*++++	, 	,r   rI   rJ   r-   r   r   rr   rr      s(        , , , , , ,r   rr   c                       e Zd ZddZdS )cmd_for_each_refr   Nc           	      l   t          j                    }|                    dt          d           |                    |          }t          j        d|j                  D ]S\  }}}t          |	                                 d|	                                 d|	                                            Td S )Npatternr4   r5   r8    	)
r;   r<   r=   r>   r?   r   for_each_refr   rz   decode)r&   r'   rF   shaobject_typerefs         r   r$   zcmd_for_each_ref.run   s    (**ICs;;;  &&%.%;C%N%N 	L 	L!CcSZZ\\JJK$6$6$8$8JJCJJLLJJKKKK	L 	Lr   rI   rJ   r-   r   r   r   r      s.        L L L L L Lr   r   c                       e Zd ZddZdS )cmd_fsckr   Nc                     t          |dg           \  }}t          |           t          j        d          D ]\  }}t	          | d|            d S )Nrt   r8   : )r   rn   r   fsckrz   )r&   r'   r}   objru   s        r   r$   zcmd_fsck.run   sd    D"b))
dT


!s++ 	# 	#HCS//C//""""	# 	#r   rI   rJ   r-   r   r   r   r      s(        # # # # # #r   r   c                       e Zd ZddZdS )cmd_logr   Nc                    t          j                    }|                    dddd           |                    dddd           |                    |          \  }}t	          j        d	||j        |j        t          j	        
           d S )Nz	--reversereverser[   z*Reverse order in which entries are printeddestr]   r2   z--name-statusname_statusz'Print name/status for each changed filer8   )rO   r   r   r9   )
optparseOptionParser
add_optionr?   r   logr   r   r   rB   r&   r'   rF   optionss       r   r$   zcmd_log.run   s    &((=	 	 	
 	
 	
 	:	 	 	
 	
 	
 ))$//O+j	
 	
 	
 	
 	
 	
r   rI   rJ   r-   r   r   r   r      s(        
 
 
 
 
 
r   r   c                       e Zd ZddZdS )cmd_diffr   Nc                    t          |dg           \  }}t          d          }|g k    rd}n|d         }t          ||          }||j        d                  }t	          j        ||j        |j        t          j        j	                   d S )Nrt   r8   s   HEADr   )r9   )
r   r   r   parentsr   	diff_treetreer   rB   rE   )r&   r'   r}   rh   	commit_idcommitparent_commits          r   r$   zcmd_diff.run   s    D"b))
dII2::IIQIa++&.+,}!6;#*:K	
 	
 	
 	
 	
 	
r   rI   rJ   r-   r   r   r   r      s(        
 
 
 
 
 
r   r   c                       e Zd ZddZdS )cmd_dump_packr   Nc                    t          |dg           \  }}|g k    r#t          d           t          j        d           t          j                            |d                   \  }}t          |          }t          d|                                            t          dt          |
                                                      |                                 t          dt          |                      |D ]n}	 t          d||                     # t          $ r}t          d| d	|            Y d }~@d }~wt          $ r}t          d| d
|           Y d }~gd }~ww xY wd S )Nrt   z!Usage: dulwich dump-pack FILENAMEr   r   zObject names checksum: z
Checksum: zLength: r   z: Unable to resolve base z: Unable to apply delta: )r   rz   r   r   osrH   splitextr   namer   get_stored_checksumchecklenKeyErrorr   )	r&   r'   r}   basename_xr   kes	            r   r$   zcmd_dump_pack.run   s   D"b))
d2::5666HQKKKg&&tAw//!NN222333@:a&;&;&=&=>>@@AAA				!Q!!""" 	A 	ADAn1T7nn%%%% ? ? ?=4==!==>>>>>>>>" A A A?4??!??@@@@@@@@A	A 	As$   D
E+%D??E+E&&E+rI   rJ   r-   r   r   r   r      s.        A A A A A Ar   r   c                       e Zd ZddZdS )cmd_dump_indexr   Nc                     t          |dg           \  }}|g k    r#t          d           t          j        d           |d         }t	          |          }|D ]}t          |||                    d S )Nrt   z"Usage: dulwich dump-index FILENAMEr   r   )r   rz   r   r   r   )r&   r'   r}   filenameidxos         r   r$   zcmd_dump_index.run   s    D"b))
d2::6777HQKKK7Hoo 	 	A!SV	 	r   rI   rJ   r-   r   r   r   r      s(             r   r   c                       e Zd ZddZdS )cmd_initr   Nc                     t          |ddg          \  }}t          |          }|g k    rt          j                    }n|d         }t	          j        |d|v            d S )Nrt   barer   --bare)r   )r   rn   r   getcwdr   init)r&   r'   r}   kwoptsrH   s        r   r$   zcmd_init.run   sc    D"vh//
dd2::9;;DD7Dt8v#5777777r   rI   rJ   r-   r   r   r   r      s(        	8 	8 	8 	8 	8 	8r   r   c                       e Zd ZddZdS )	cmd_cloner   Nc           
      V   t          j                    }|                    dddd           |                    ddt          d	           |                    d
ddt          d	           |                    ddt          dd           |                    ddt          d	           |                    ddt          d	           |                    |          \  }}|g k    r#t          d           t          j        d           |	                    d          }t          |          dk    r|	                    d          }nd }	 t          j        |||j        |j        |j        |j        |j        |j                   d S # t&          $ r}t          |            Y d }~d S d }~ww xY w)Nr   r   z$Whether to create a bare repository.r[   )r   r2   r]   z--depthra   zDepth at which to fetch)r   r1   r2   z-bz--branchbranchz<Check out branch instead of branch pointed to by remote HEADz	--refspecrefspeczReferences to fetchappend)r   r1   r2   r]   --filterfilter_specz git-rev-list-style object filter
--protocolprotocolzGit protocol version to usez%usage: dulwich clone host:path [PATH]r   r   )r   ra   r   r   r   protocol_version)r   r   r   r,   r>   r?   rz   r   r   rx   r   r   cloner   ra   r   r   r   r   r	   )r&   r'   rF   r   sourcetargetr   s          r   r$   zcmd_clone.run  s   &((7	 	 	
 	
 	
 	G#4M 	 	
 	
 	
 	P 	 	
 	
 	
 	& 	 	
 	
 	
 	3	 	 	
 	
 	
 	z:W 	 	
 	
 	
 ))$//2::9:::HQKKK!t99q==XXa[[FFF	O\m~#/!(!1	 	 	 	 	 	   	 	 	Q&MMMMMMMMM	s   :F 
F(F##F(rI   rJ   r-   r   r   r   r     s(        : : : : : :r   r   c                       e Zd ZddZdS )
cmd_commitr   Nc                     t          |ddg          \  }}t          |          }t          j        d|d                    d S )Nrt   messager8   	--message)r   )r   rn   r   r   r&   r'   r}   r   s       r   r$   zcmd_commit.runA  sE    D"yk22
ddf[&9::::::r   rI   rJ   r-   r   r   r   r   @  s(        ; ; ; ; ; ;r   r   c                       e Zd ZddZdS )cmd_commit_treer   Nc                     t          |ddg          \  }}|g k    r#t          d           t          j        d           t	          |          }t          j        d|d         |d                    d S )	Nrt   r   zusage: dulwich commit-tree treer   r8   r   r   )r   r   )r   rz   r   r   rn   r   commit_treer   s       r   r$   zcmd_commit_tree.runH  sp    D"yk22
d2::3444HQKKKdcQ9LMMMMMMr   rI   rJ   r-   r   r   r   r   G  s.        N N N N N Nr   r   c                       e Zd ZddZdS )cmd_update_server_infor   Nc                 .    t          j        d           d S Nr8   )r   update_server_infor%   s     r   r$   zcmd_update_server_info.runR  s    $S)))))r   rI   rJ   r-   r   r   r   r   Q  s(        * * * * * *r   r   c                       e Zd ZddZdS )cmd_symbolic_refr   Nc                     t          |dddg          \  }}|s#t          d           t          j        d           |                    d          }t          j        d|d|v 	           d S )
Nrt   zref-nameforcez.Usage: dulwich symbolic-ref REF_NAME [--force]r   r   r8   --force)ref_namer   )r   rz   r   r   rx   r   symbolic_ref)r&   r'   r}   r   s       r   r$   zcmd_symbolic_ref.runW  sr    D"z7&;<<
d 	BCCCHQKKK88A;;sXY$=NOOOOOOr   rI   rJ   r-   r   r   r   r   V  s.        P P P P P Pr   r   c                       e Zd ZddZdS )cmd_pack_refsr   Nc                     t          j                    }|                    dd           |                    dd           |                    |          }t	          j        d|j                   d S )NrZ   r[   r\   z
--no-pruner8   )rl   )r;   r<   r=   r?   r   	pack_refsrl   rQ   s       r   r$   zcmd_pack_refs.runb  ss    (**GL999L>>>  &&CTX......r   rI   rJ   r-   r   r   r   r   a  s(        / / / / / /r   r   c                       e Zd ZddZdS )cmd_showr   Nc                     t          j                    }|                    dt          d           |                    |          }t          j        d|j        pd            d S )N	objectishr`   r5   r8   )r;   r<   r=   r>   r?   r   showr   rQ   s       r   r$   zcmd_show.runn  s]    (**Kc===  &&sDN2d33333r   rI   rJ   r-   r   r   r   r   m  s(        4 4 4 4 4 4r   r   c                       e Zd ZddZdS )cmd_diff_treer   Nc                     t          |dg           \  }}t          |          dk     r#t          d           t          j        d           t          j        d|d         |d                    d S )Nrt      z*Usage: dulwich diff-tree OLD-TREE NEW-TREEr   r8   r   )r   r   rz   r   r   r   r   r&   r'   r}   s      r   r$   zcmd_diff_tree.runv  se    D"b))
dt99q==>???HQKKKCa$q'22222r   rI   rJ   r-   r   r   r   r   u  s(        3 3 3 3 3 3r   r   c                       e Zd ZddZdS )cmd_rev_listr   Nc                     t          |dg           \  }}t          |          dk     r#t          d           t          j        d           t          j        d|           d S )Nrt   r   z#Usage: dulwich rev-list COMMITID...r8   )r   r   rz   r   r   r   rev_listr   s      r   r$   zcmd_rev_list.run  s[    D"b))
dt99q==7888HQKKK3%%%%%r   rI   rJ   r-   r   r   r   r   ~  (        & & & & & &r   r   c                       e Zd ZddZdS )cmd_tagr   Nc                    t          j                    }|                    dddd           |                    dddd           |                    |          \  }}t	          j        d	|d
         |j        |j                   d S )N-az--annotatedzCreate an annotated tag.r[   )r2   r]   z-sz--signzSign the annotated tag.r8   r   )	annotatedsign)r   r   r   r?   r   
tag_creater   r   r   s       r   r$   zcmd_tag.run  s    &((+	 	 	
 	
 	
 	(!:< 	 	
 	
 	
 ))$//aG$5GL	
 	
 	
 	
 	
 	
r   rI   rJ   r-   r   r   r   r     s(        
 
 
 
 
 
r   r   c                       e Zd ZddZdS )
cmd_repackr   Nc                 t    t          |dg           \  }}t          |           t          j        d           d S )Nrt   r8   )r   rn   r   repackr   s      r   r$   zcmd_repack.run  s9    D"b))
dT


r   rI   rJ   r-   r   r   r  r    s(             r   r  c                       e Zd ZddZdS )	cmd_resetr   Nc                     t          |dg d          \  }}t          |          }d}d|v rd}nd|v rd}nd|v rd}t          j        d	|
           d S )Nrt   )hardsoftmixedz--hardr  z--softr	  z--mixedr
  r8   )mode)r   rn   r   reset)r&   r'   r}   r   r  s        r   r$   zcmd_reset.run  s}    D"&?&?&?@@
ddvDDDD&  D$''''''r   rI   rJ   r-   r   r   r  r    s(        
( 
( 
( 
( 
( 
(r   r  c                       e Zd ZddZdS )
cmd_daemonr   Nc                    ddl m} ddlm} t	          j                    }|                    ddddd	
           |                    dddt          |d           |                    |          \  }}|	                                 t          |          dk    r	|d         }nd}t          j        ||j        |j                   d S )Nr   	log_utilsr   )TCP_GIT_PORT-l--listen_addresslisten_address	localhostBinding IP address.r   defaultr2   -p--portportBinding TCP port.r   r1   r  r2   r8   addressr  )dulwichr  r   r  r   r   r   r,   r?   default_logging_configr   r   daemonr  r  )r&   r'   r  r  rF   r   gitdirs          r   r$   zcmd_daemon.run  s    %%%%%%******&((!& 	 	
 	
 	
 	 $ 	 	
 	
 	
 ))$//((***t99>>!WFFF)?glSSSSSSr   rI   rJ   r-   r   r   r  r    s.        T T T T T Tr   r  c                       e Zd ZddZdS )cmd_web_daemonr   Nc                    ddl m} t          j                    }|                    ddddd           |                    d	d
dt
          dd           |                    |          \  }}|                                 t          |          dk    r	|d         }nd}t          j
        ||j        |j                   d S )Nr   r  r  r  r  rt   r  r  r  r  r  i@  r  r  r   r8   r  )r!  r  r   r   r   r,   r?   r"  r   r   
web_daemonr  r  )r&   r'   r  rF   r   r$  s         r   r$   zcmd_web_daemon.run  s    %%%%%%&((!& 	 	
 	
 	
 	$ 	 	
 	
 	
 ))$//((***t99>>!WFFFVW-C',WWWWWWr   rI   rJ   r-   r   r   r&  r&    s.        X X X X X Xr   r&  c                       e Zd ZddZdS )cmd_write_treer   Nc                     t          j                    }|                    |          \  }}t          j                            d                    t          j        d                               d S )Nz{}
r8   )	r   r   r?   r   rB   rC   r|   r   
write_treer   s       r   r$   zcmd_write_tree.run  sZ    &(())$//
y';C'@'@AABBBBBr   rI   rJ   r-   r   r   r*  r*    s.        C C C C C Cr   r*  c                       e Zd ZddZdS )cmd_receive_packr   Nc                     t          j                    }|                    |          \  }}t          |          dk    r	|d         }nd}t	          j        |           d S Nr   r   r8   )r   r   r?   r   r   receive_packr&   r'   rF   r   r$  s        r   r$   zcmd_receive_pack.run  s]    &(())$//t99>>!WFFFv&&&&&r   rI   rJ   r-   r   r   r.  r.    s(        ' ' ' ' ' 'r   r.  c                       e Zd ZddZdS )cmd_upload_packr   Nc                     t          j                    }|                    |          \  }}t          |          dk    r	|d         }nd}t	          j        |           d S r0  )r   r   r?   r   r   upload_packr2  s        r   r$   zcmd_upload_pack.run  s]    &(())$//t99>>!WFFFf%%%%%r   rI   rJ   r-   r   r   r4  r4     s(        & & & & & &r   r4  c                       e Zd ZddZdS )
cmd_statusr   Nc                    t          j                    }|                    |          \  }}t          |          dk    r	|d         }nd}t	          j        |          }t          d |j                                        D                       rt          j
                            d           |j                                        D ]T\  }}|D ]L}t          j
                            d| d|                    t          j                               d           MUt          j
                            d           |j        rt          j
                            d	           |j        D ]I}t          j
                            d|                    t          j                               d           Jt          j
                            d           |j        rmt          j
                            d
           |j        D ]%}t          j
                            d| d           &t          j
                            d           d S d S )Nr   r   r8   c              3       K   | ]	\  }}|V  
d S rk   r-   )rf   kindnamess      r   	<genexpr>z!cmd_status.run.<locals>.<genexpr>  s&      @@$u@@@@@@r   zChanges to be committed:

r   r   
z Changes not staged for commit:

zUntracked files:

)r   r   r?   r   r   statusanystagedr{   r   rB   rC   r   getfilesystemencodingunstaged	untracked)	r&   r'   rF   r   r$  r?  r;  r<  r   s	            r   r$   zcmd_status.run  s0   &(())$//t99>>!WFFF!&))@@&-*=*=*?*?@@@@@ 	#J;<<<%}2244  e!  DJ$$QTQQT[[1J1L1L%M%MQQQ    JT"""? 	#JABBB T T
  !Rdkk#2K2M2M&N&N!R!R!RSSSSJT""" 	#J3444( 0 0
  d////JT"""""		# 	#r   rI   rJ   r-   r   r   r8  r8    s(        # # # # # #r   r8  c                       e Zd ZddZdS )cmd_ls_remoter   Nc                 H   t          |dg           \  }}t          |          dk     r#t          d           t          j        d           t          j        |d                   }t          |          D ]-}t          j        	                    | d||          d           .d S )Nrt   r   zUsage: dulwich ls-remote URLr   r   r>  )
r   r   rz   r   r   r   	ls_remotesortedrB   rC   )r&   r'   r}   r_   r   s        r   r$   zcmd_ls_remote.run)  s    D"b))
dt99q==0111HQKKK"47++$<< 	6 	6CJ44tCy4445555	6 	6r   rI   rJ   r-   r   r   rF  rF  (  s(        6 6 6 6 6 6r   rF  c                       e Zd ZddZdS )cmd_ls_treer   Nc                 j   t          j                    }|                    dddd           |                    ddd           |                    |          \  }}	 |                    d          }n# t
          $ r d }Y nw xY wt          j        d	|t          j	        |j
        |j        
           d S )Nz-rz--recursiver[   zRecursively list tree contents.r]   r2   z--name-onlyzOnly display name.r   r8   )r9   	recursive	name_only)r   r   r   r?   rx   
IndexErrorr   ls_treer   rB   rN  rO  )r&   r'   rF   r   treeishs        r   r$   zcmd_ls_tree.run4  s    &((2	 	 	
 	
 	
 	-CWXXX))$//	hhqkkGG 	 	 	GGG	j''	
 	
 	
 	
 	
 	
s   A4 4BBrI   rJ   r-   r   r   rK  rK  3  s(        
 
 
 
 
 
r   rK  c                       e Zd ZddZdS )cmd_pack_objectsr   Nc                    d}d}t          |dg d          \  }}t          |          }t          |          dk     r9d|                                vr#t	          d           t          j        d           d t
          j                                        D             }d	|                                v rd}d
|                                v rd}d|                                v r*t          t
          j
        dt
          j
                  }d }g }	n2|d         }
t          |
dz   d          }t          |
dz   d          }||g}	t          j        d|||||           |	D ]}|                                 d S )NFTrt   )rB   deltifyzno-reuse-deltasr   z--stdoutz$Usage: dulwich pack-objects basenamec                 6    g | ]}|                                 S r-   )strip)rf   lines     r   ri   z(cmd_pack_objects.run.<locals>.<listcomp>T  s     EEEtdjjllEEEr   z	--deltifyz--no-reuse-deltasrE   r   z.packwbz.idxr8   )rV  reuse_deltas)r   rn   r   keysrz   r   r   stdin	readlinesgetattrrB   openr   pack_objectsclose)r&   r'   rV  r[  r}   r   
object_idspackfidxfrb  r   fs               r   r$   zcmd_pack_objects.runL  s   D"&N&N&NOO
ddt99q==Zv{{}}<<8999HQKKKEEsy/B/B/D/DEEE
&++--''G&++--// L&&CJ#*==EDEEAwHG+T22E6)400DDMEUD'	
 	
 	
 	
  	 	AGGIIII	 	r   rI   rJ   r-   r   r   rT  rT  K  s(             r   rT  c                       e Zd ZddZdS )cmd_pullr   Nc                    t          j                    }|                    dt                     |                    dt          d           |                    dt          d           |                    dt          d           |                    |          }t          j        d	|j        pd |j	        pd |j
        |j        pd 
           d S )Nfrom_locationr1   r   r`   r5   r   r   r   r8   )r   r   )r;   r<   r=   r>   r,   r?   r   pullrj  r   filterr   )r&   r'   rF   s      r   r$   zcmd_pull.runj  s    (**O#666ICs;;;JS:::Ls!<<<  &&&$L D!2:d	
 	
 	
 	
 	
 	
r   rI   rJ   r-   r   r   rh  rh  i  s(        
 
 
 
 
 
r   rh  c                   &    e Zd Zdee         fdZdS )cmd_pushr   c                    t          j                    }|                    dddd           |                    dt                     |                    dt          d	
           |                    |          }	 t          j        d|j        |j        pd |j	                   n5# t
          j
        $ r# t          j                            d           Y dS w xY wd S )Nz-fr   r[   ForcerM  to_locationrk  r   r`   r5   r8   )r   z.Diverged branches; specify --force to overrider   )r;   r<   r=   r>   r?   r   pushrr  r   r   DivergedBranchesr   rD   rC   rQ   s       r   r$   zcmd_push.run{  s    (**D)LwOOOM444ICs;;;  &&	NT%t|';t4:     ) 	 	 	JMNNN11	 ts   <)B& &.CCN)r(   r)   r*   r   r,   r$   r-   r   r   ro  ro  z  s3        8C=      r   ro  c                       e Zd ZddZdS )cmd_remote_addr   Nc                     t          j                    }|                    |          \  }}t          j        d|d         |d                    d S )Nr8   r   r   )r   r   r?   r   
remote_addr   s       r   r$   zcmd_remote_add.run  sJ    &(())$//S$q'4733333r   rI   rJ   r-   r   r   rv  rv    s(        4 4 4 4 4 4r   rv  c                   ~    e Zd ZU i Zeeeee         f                  e	d<   dZ
eeee                           e	d<   d ZdS )SuperCommandsubcommandsNdefault_commandc                 z   |sU| j         sNt          d                    d                    | j                                                                       dS |d         }	 | j        |         }n)# t          $ r t          d|d                     Y dS w xY w |                                |dd                    S )NzSupported subcommands: {}z, Fr   No such subcommand: r   )r|  rz   r|   joinr{  r\  r   r$   )r&   r'   cmdcmd_klss       r   r$   zSuperCommand.run  s     	D0 	+22499T=M=R=R=T=T3U3UVV   51g	&s+GG 	 	 	2a2233355	 wyy}}T!""X&&&s   !A/ /"BB)r(   r)   r*   r{  r   rn   r>   r1   r!   __annotations__r|  r   r$   r-   r   r   rz  rz    sf         68K$sDM1238889=OXhtG}56===' ' ' ' 'r   rz  c                   J    e Zd ZU deiZeeeee	         f                  e
d<   dS )
cmd_remoterP   r{  N)r(   r)   r*   rv  r{  r   rn   r>   r1   r!   r  r-   r   r   r  r    sF         ~7K$sDM123     r   r  c                       e Zd ZddZdS )cmd_submodule_listr   Nc                     t          j                    }|                    |           t          j        d          D ]+\  }}t
          j                            d| d| d           ,d S )Nr8   r   r>  )r;   r<   r?   r   submodule_listr   rB   rC   )r&   rR   rF   rH   r   s        r   r$   zcmd_submodule_list.run  sy    (**$"1#66 	1 	1ID#J///t///0000	1 	1r   rI   rJ   r-   r   r   r  r    s(        1 1 1 1 1 1r   r  c                       e Zd ZddZdS )cmd_submodule_initr   Nc                 ~    t          j                    }|                    |           t          j        d           d S r   )r;   r<   r?   r   submodule_init)r&   rR   rF   s      r   r$   zcmd_submodule_init.run  s;    (**$ %%%%%r   rI   rJ   r-   r   r   r  r    s(        & & & & & &r   r  c                   N    e Zd ZU deiZeeeee	         f                  e
d<   eZdS )cmd_submoduler   r{  N)r(   r)   r*   r  r{  r   rn   r>   r1   r!   r  r|  r-   r   r   r  r    sH         "7K$sDM123    )OOOr   r  c                       e Zd Zd ZdS )cmd_check_ignorec                     t          j                    }|                    |          \  }}d}t          j        d|          D ]}t          |           d}|S )Nr   r8   r   )r   r   r?   r   check_ignorerz   )r&   r'   rF   r   retrH   s         r   r$   zcmd_check_ignore.run  s_    &(())$//*355 	 	D$KKKCC
r   NrJ   r-   r   r   r  r    s#            r   r  c                       e Zd ZddZdS )cmd_check_mailmapr   Nc                     t          j                    }|                    |          \  }}|D ]&}t          j        d|          }t          |           'd S r   )r   r   r?   r   check_mailmaprz   )r&   r'   rF   r   argcanonical_identitys         r   r$   zcmd_check_mailmap.run  se    &(())$// 	& 	&C!*!8c!B!B$%%%%	& 	&r   rI   rJ   r-   r   r   r  r    r   r   r  c                       e Zd ZddZdS )cmd_stash_listr   Nc           	         t          j                    }|                    |          \  }}t          j        d          D ]@\  }}t          d                    ||j                            d                               Ad S )Nr8   zstash@{{{}}}: {}r>  )	r   r   r?   r   
stash_listrz   r|   r   rstrip)r&   r'   rF   r   ientrys         r   r$   zcmd_stash_list.run  s    &(())$//!,S11 	L 	LHAu$++Au}/C/CD/I/IJJKKKK	L 	Lr   rI   rJ   r-   r   r   r  r    s.        L L L L L Lr   r  c                       e Zd ZddZdS )cmd_stash_pushr   Nc                     t          j                    }|                    |          \  }}t          j        d           t          d           d S )Nr8   z'Saved working directory and index state)r   r   r?   r   
stash_pushrz   r   s       r   r$   zcmd_stash_push.run  sM    &(())$//S!!!788888r   rI   rJ   r-   r   r   r  r    s(        9 9 9 9 9 9r   r  c                       e Zd ZddZdS )cmd_stash_popr   Nc                     t          j                    }|                    |          \  }}t          j        d           t          d           d S )Nr8   z*Restored working directory and index state)r   r   r?   r   	stash_poprz   r   s       r   r$   zcmd_stash_pop.run  sM    &(())$//C   :;;;;;r   rI   rJ   r-   r   r   r  r    s(        < < < < < <r   r  c                   N    e Zd ZU eeedZeee	e
e         f                  ed<   dS )	cmd_stash)ro   rx   rs  r{  N)r(   r)   r*   r  r  r  r{  r   rn   r>   r1   r!   r  r-   r   r   r  r    sO         7 7K$sDM123     r   r  c                       e Zd ZddZdS )cmd_ls_filesr   Nc                     t          j                    }|                    |          \  }}t          j        d          D ]}t          |           d S r   )r   r   r?   r   ls_filesrz   )r&   r'   rF   r   r   s        r   r$   zcmd_ls_files.run  sX    &(())$//&s++ 	 	D$KKKK	 	r   rI   rJ   r-   r   r   r  r    s(             r   r  c                       e Zd ZddZdS )cmd_describer   Nc                     t          j                    }|                    |          \  }}t          t	          j        d                     d S r   )r   r   r?   rz   r   describer   s       r   r$   zcmd_describe.run   sF    &(())$//i %%&&&&&r   rI   rJ   r-   r   r   r  r    s(        ' ' ' ' ' 'r   r  c                       e Zd ZddZdS )cmd_helpr   Nc                 0   t          j                    }|                    ddddd           |                    |          \  }}|j        r:t          d           t          t                    D ]}t          d|            d S t          d	           d S )
Nr   rZ   rl   r[   zList all commands.r   zAvailable commands:z  zThe dulwich command line tool is currently a very basic frontend for the
Dulwich python module. For full functionality, please see the API reference.

For a list of supported commands, see 'dulwich help -a'.
)r   r   r   r?   rl   rz   rI  commands)r&   r'   rF   r   r  s        r   r$   zcmd_help.run  s    &((% 	 	
 	
 	
 ))$//; 	'(((h'' " "j3jj!!!!" "     r   rI   rJ   r-   r   r   r  r    s(             r   r  rP   rA   zcheck-ignorezcheck-mailmapr   r   zcommit-treer  r#  diffz	diff-treez	dump-packz
dump-indexz
fetch-packrp   zfor-each-refr   r2   r   r   zls-filesz	ls-remotezls-treezpack-objectsz	pack-refsrl  rs  zreceive-packr@   r  r  zrev-listrV   r   )	stashr?  zsymbolic-ref	submoduletagzupdate-server-infozupload-packz
web-daemonz
write-treec                    | t           j        dd          } t          |           dk     rNt          d                    d                    t                                                                         dS | d         }	 t          |         }n## t          $ r t          d|            Y dS w xY w |            	                    | dd                    S )Nr   z Usage: dulwich <{}> [OPTIONS...]|r   r~  )
r   rR   r   rz   r|   r  r  r\  r   r$   )rR   r  r  s      r   mainr  P  s    |x|
4yy1}}0778Q8QRRSSSq
q'C3-   *S**+++qq 799==abb"""s   B B/.B/c                     dt           j        v r:t          t          dd           r$t          j        t          j        t
                     t          j        t          j        t                     t          j	        t                                 d S )NDULWICH_PDBSIGQUIT)r   environr_  r   r  r   SIGINTr   r   r   r  r-   r   r   _mainr  b  sb    
""wvy$'G'G"fnk222
M&-,,,HTVVr   __main__rI   rk   )Xr+   r;   r   r   r   r   r   typingr   r   r   r!  r   rG   r	   r
   errorsr   indexr   
objectspecr   packr   r   repor   objectsr   r_   r   r   r   r!   r/   rL   rT   rX   rr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r&  r*  r.  r4  r8  rF  rK  rT  rh  ro  rv  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(   r-   r   r   <module>r     s  0    				  



       4 4 4 4 4 4 4 4 4 4       < < < < < < < < # # # # # #       $ $ $ $ $ $ " " " " " " " "       !!!!!!      , , , , , , , ,    '   0' ' ' ' 'g ' ' '& & & & &W & & &/ / / / /W / / /*, , , , , , , , L L L L Lw L L L# # # # #w # # #
 
 
 
 
g 
 
 
4
 
 
 
 
w 
 
 
 A A A A AG A A A.    W   
8 
8 
8 
8 
8w 
8 
8 
8; ; ; ; ; ; ; ;|; ; ; ; ; ; ; ;N N N N Ng N N N* * * * *W * * *
P P P P Pw P P P	/ 	/ 	/ 	/ 	/G 	/ 	/ 	/4 4 4 4 4w 4 4 43 3 3 3 3G 3 3 3& & & & &7 & & &
 
 
 
 
g 
 
 
$       ( ( ( ( ( ( ( (T T T T T T T TBX X X X XW X X X>C C C C CW C C C' ' ' ' 'w ' ' '& & & & &g & & &# # # # # # # #:6 6 6 6 6G 6 6 6
 
 
 
 
' 
 
 
0    w   <
 
 
 
 
w 
 
 
"    w   $4 4 4 4 4W 4 4 4' ' ' ' '7 ' ' '&       1 1 1 1 1 1 1 1& & & & & & & &) ) ) ) )L ) ) )    w   & & & & & & & &L L L L LW L L L9 9 9 9 9W 9 9 9< < < < <G < < <           7   ' ' ' ' '7 ' ' '    w   6,	7,{, $, &	,
 Y, j, ?, , j, H, , , ., ., Y,  $!," H#, ,$ H%,& H',( 
7),* +,, -,. {/,0 $1,2 3,4 H5,6 H7,8 $9,: j;,< j=,> Y?,@ A,B 	&C,D HE, ,F $0"  W, , ,^# # # #$    z	EGGGGG r   