
    dA[              
       L   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 d Zd 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 d- d.e          Z, G d/ d0e          Z- G d1 d2e          Z. G d3 d4e          Z/ G d5 d6e          Z0 G d7 d8e          Z1 G d9 d:e          Z2 G d; d<e          Z3 G d= d>e          Z4 G d? d@e          Z5 G dA dBe          Z6 G dC dDe          Z7 G dE dFe          Z8 G dG dHe          Z9 G dI dJe          Z: G dK dLe          Z; G dM dNe          Z< G dO dPe          Z= G dQ dRe          Z> G dS dTe          Z? G dU dVe          Z@ G dW dXe          ZA G dY dZeA          ZB G d[ d\e          ZC G d] d^e          ZD G d_ d`eA          ZE G da dbe          ZF G dc dde          ZG G de dfe          ZH G dg dhe          ZI G di dje          ZJ G dk dleA          ZK G dm dne          ZL G do dpe          ZM G dq dre          ZNi dsedtedueFdveGdwe)dxe*dye+dzeMd{e5d|e%d}e0d~e&de'de!de"de#deNi de(de$deLde;de<de=de.de>de?de8deBde3de4de1de de/deKe:e-eEe2e,e9e6e7dZOddZPd ZQeRdk    r eQ             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)DictOptionalType)	porcelain   )GitProtocolErrorget_transport_and_path)ApplyDeltaError)Index)parse_commit)Pack
sha_to_hex)Repoc                 .    t          j        d           d S )Nr   )sysexit)signalframes     O/home/feoh/.local/pipx/venvs/poetry/lib/python3.11/site-packages/dulwich/cli.py
signal_intr   1   s    HQKKKKK    c                 6    dd l }|                                 d S )Nr   )pdb	set_trace)r   r   r   s      r   signal_quitr   5   s    JJJMMOOOOOr   c                       e Zd ZdZd ZdS )CommandzA Dulwich subcommand.c                 *    t          | j                  )zRun the command.)NotImplementedErrorrunselfargss     r   r!   zCommand.run>   s    !$(+++r   N)__name__
__module____qualname____doc__r!    r   r   r   r   ;   s)        , , , , ,r   r   c                       e Zd Zd ZdS )cmd_archivec                    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?r-   nargs)write_error.)	outstream	errstream)argparseArgumentParseradd_argumentstr
parse_argsremoter
   archiver/   r   stdoutwritestderrr   buffer)r#   r$   parserclientpaths        r   r!   zcmd_archive.runD   s    (**> 	 	
 	
 	

 	Ls#>>>  &&; 	1$+>>LFDNN
 J,	       T_
0A*     r   Nr%   r&   r'   r!   r)   r   r   r+   r+   C   s#            r   r+   c                       e Zd Zd ZdS )cmd_addc                     t          j                    }|                    |          }t          j        d|           d S Nr4   )paths)r7   r8   r;   r   addr#   argvrB   r$   s       r   r!   zcmd_add.run]   s>    (**  &&c&&&&&&r   NrE   r)   r   r   rG   rG   \   s#        ' ' ' ' 'r   rG   c                       e Zd Zd ZdS )cmd_rmc                     t          j                    }|                    |          }t          j        d|           d S rI   )r7   r8   r;   r   rmrL   s       r   r!   z
cmd_rm.rune   s>    (**  &&S%%%%%%r   NrE   r)   r   r   rO   rO   d   s#        & & & & &r   rO   c                       e Zd Zd ZdS )cmd_fetch_packc                 p   t          j                    }|                    dd           |                    ddt                     |                    |          t          j                  \  }}t          d          j        rj	        j
        }nfd}|                    ||           d S )	N--all
store_trueactionlocationr0   )r2   r-   r4   c                      fdD             S )Nc                 &    g | ]}|j         v|S r)   )object_store).0yrs     r   
<listcomp>z?cmd_fetch_pack.run.<locals>.determine_wants.<locals>.<listcomp>y   s%    CCCa1AN+B+B+B+B+Br   r)   )xkwargsr$   r_   s     r   determine_wantsz+cmd_fetch_pack.run.<locals>.determine_wantsx   s    CCCC4CCCCr   )r7   r8   r9   r:   r;   r
   rY   r   allr\   determine_wants_allfetch)r#   rM   rB   rC   rD   rc   r$   r_   s         @@r   r!   zcmd_fetch_pack.runm   s    (**GL999Jc<<<  &&-dm<<II8 	Dn@OOD D D D D D 	T1o.....r   NrE   r)   r   r   rS   rS   l   s#        / / / / /r   rS   c                       e Zd Zd ZdS )	cmd_fetchc                 r   t          |dg           \  }}t          |          }t          |                    d                    \  }}t	          d          }|                    ||t          j        j                  }t          d           |
                                D ]}t          d|z             d S )N r   r4   )progresszRemote refs:z%s -> %s)r   dictr
   popr   rf   r   r>   r?   printitems)r#   r$   optsrC   rD   r_   refsitems           r   r!   zcmd_fetch.run   s    D"b))
dDzz-dhhqkk::II||D!cj.>|??nJJLL 	% 	%D*t#$$$$	% 	%r   NrE   r)   r   r   rh   rh   ~   s#        % % % % %r   rh   c                       e Zd Zd ZdS )cmd_fsckc                     t          |dg           \  }}t          |          }t          j        d          D ](\  }}t	          d                    ||                     )d S )Nrj   r4   z{}: {})r   rl   r   fsckrn   format)r#   r$   rp   objmsgs        r   r!   zcmd_fsck.run   sh    D"b))
dDzz#.-- 	- 	-JS#(//#s++,,,,	- 	-r   NrE   r)   r   r   rt   rt      s#        - - - - -r   rt   c                       e Zd Zd ZdS )cmd_logc                    t          j                    }|                    dddd           |                    dddd           |                    |          \  }}t	          j        d	||j        |j        t          j	        
           d S )Nz	--reversereverserV   z*Reverse order in which entries are printeddestrX   r.   z--name-statusname_statusz'Print name/status for each changed filer4   )rJ   r}   r   r5   )
optparseOptionParser
add_optionr;   r   logr}   r   r   r>   r#   r$   rB   optionss       r   r!   zcmd_log.run   s    &((=	 	 	
 	
 	
 	:	 	 	
 	
 	
 ))$//O+j	
 	
 	
 	
 	
 	
r   NrE   r)   r   r   r{   r{      s#        
 
 
 
 
r   r{   c                       e Zd Zd ZdS )cmd_diffc                    t          |dg           \  }}t          d          }|g k    rd}n|d         }t          ||          }||j        d                  }t	          j        ||j        |j        t          j        j	                   d S )Nrj   r4   s   HEADr   )r5   )
r   r   r   parentsr   	diff_treetreer   r>   rA   )r#   r$   rp   r_   	commit_idcommitparent_commits          r   r!   zcmd_diff.run   s    D"b))
dII2::IIQIa++&.+,}!6;#*:K	M 	M 	M 	M 	M 	Mr   NrE   r)   r   r   r   r      s(        M M M M Mr   r   c                       e Zd Zd ZdS )cmd_dump_packc                 6   t          |dg           \  }}|g k    r#t          d           t          j        d           t          j                            |d                   \  }}t          |          }t          d|                                z             t          dt          |
                                          z             |                                st          d           t          dt          |          z             |D ]}	 t          d	||         z             # t          $ r-}t          d
                    ||                     Y d }~Nd }~wt          $ r-}t          d                    ||                     Y d }~d }~ww xY wd S )Nrj   z!Usage: dulwich dump-pack FILENAMEr   r   zObject names checksum: %szChecksum: %szCHECKSUM DOES NOT MATCHz
Length: %dz	%sz	{}: Unable to resolve base {}z 	{}: Unable to apply delta: {!r})r   rn   r   r   osrD   splitextr   namer   get_stored_checksumchecklenKeyErrorrw   r   )	r#   r$   rp   basename_ra   r   kes	            r   r!   zcmd_dump_pack.run   s   D"b))
d2::5666HQKKKg&&tAw//!NN)AFFHH4555nz!*?*?*A*ABBBCCCwwyy 	-+,,,lSVV#$$$ 	K 	KDKfqw&'''' I I I7>>tQGGHHHHHHHH" K K K9@@qIIJJJJJJJJK	K 	Ks$   D**
F4#EF)#FFNrE   r)   r   r   r   r      s(        K K K K Kr   r   c                       e Zd Zd ZdS )cmd_dump_indexc                     t          |dg           \  }}|g k    r#t          d           t          j        d           |d         }t	          |          }|D ]}t          |||                    d S )Nrj   z"Usage: dulwich dump-index FILENAMEr   r   )r   rn   r   r   r   )r#   r$   rp   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   NrE   r)   r   r   r   r      s#            r   r   c                       e Zd Zd ZdS )cmd_initc                     t          |ddg          \  }}t          |          }|g k    rt          j                    }n|d         }t	          j        |d|v            d S )Nrj   barer   --bare)r   )r   rl   r   getcwdr   init)r#   r$   rp   rD   s       r   r!   zcmd_init.run   sc    D"vh//
dDzz2::9;;DD7Dt8t#3555555r   NrE   r)   r   r   r   r      s#        	6 	6 	6 	6 	6r   r   c                       e Zd Zd ZdS )	cmd_clonec                    t          j                    }|                    dddd           |                    ddt          d	           |                    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                   d S # t           $ r}t          d|z             Y d }~d S d }~ww xY w)Nr   r   z$Whether to create a bare repository.rV   )r   r.   rX   z--depthdepthzDepth at which to fetch)r   r-   r.   z-bz--branchbranchz<Check out branch instead of branch pointed to by remote HEADz%usage: dulwich clone host:path [PATH]r   r   )r   r   r   z%s)r   r   r   intr:   r;   rn   r   r   rm   r   r   cloner   r   r   r	   )r#   r$   rB   r   sourcetargetr   s          r   r!   zcmd_clone.run   st   &((7	 	 	
 	
 	
 	G#4M 	 	
 	
 	
 	*8# 	 	 	 	 ))$//2::9:::HQKKK!t99q==XXa[[FFF	OFFW]#*>3 3 3 3 3 3 	 	 	$(OOOOOOOOO	s   ,(D 
D= D88D=NrE   r)   r   r   r   r      s#            r   r   c                       e Zd Zd ZdS )
cmd_commitc                     t          |ddg          \  }}t          |          }t          j        d|d                    d S )Nrj   messager4   	--message)r   )r   rl   r   r   r#   r$   rp   s      r   r!   zcmd_commit.run  sE    D"yk22
dDzzd;&7888888r   NrE   r)   r   r   r   r     s#        9 9 9 9 9r   r   c                       e Zd Zd ZdS )cmd_commit_treec                     t          |ddg          \  }}|g k    r#t          d           t          j        d           t	          |          }t          j        d|d         |d                    d S )	Nrj   r   zusage: dulwich commit-tree treer   r4   r   r   )r   r   )r   rn   r   r   rl   r   commit_treer   s      r   r!   zcmd_commit_tree.run  sp    D"yk22
d2::3444HQKKKDzzcQk9JKKKKKKr   NrE   r)   r   r   r   r     s(        L L L L Lr   r   c                       e Zd Zd ZdS )cmd_update_server_infoc                 .    t          j        d           d S Nr4   )r   update_server_infor"   s     r   r!   zcmd_update_server_info.run$  s    $S)))))r   NrE   r)   r   r   r   r   #  s#        * * * * *r   r   c                       e Zd Zd ZdS )cmd_symbolic_refc                     t          |dddg          \  }}|s#t          d           t          j        d           |                    d          }t          j        d|d|v 	           d S )
Nrj   zref-nameforcez.Usage: dulwich symbolic-ref REF_NAME [--force]r   r   r4   --force)ref_namer   )r   rn   r   r   rm   r   symbolic_ref)r#   r$   rp   r   s       r   r!   zcmd_symbolic_ref.run)  sr    D"z7&;<<
d 	BCCCHQKKK88A;;sXY$=NOOOOOOr   NrE   r)   r   r   r   r   (  s(        P P P P Pr   r   c                       e Zd Zd ZdS )cmd_pack_refsc                     t          j                    }|                    dd           |                    dd           |                    |          }t	          j        d|j                   d S )NrU   rV   rW   z
--no-pruner4   )rd   )r7   r8   r9   r;   r   	pack_refsrd   rL   s       r   r!   zcmd_pack_refs.run4  ss    (**GL999L>>>  &&CTX......r   NrE   r)   r   r   r   r   3  s#        / / / / /r   r   c                       e Zd Zd ZdS )cmd_showc                     t          j                    }|                    dt          d           |                    |          }t          j        d|j        pd            d S )N	objectish*r1   r4   )r7   r8   r9   r:   r;   r   showr   rL   s       r   r!   zcmd_show.run@  s]    (**Kc===  &&sDN2d33333r   NrE   r)   r   r   r   r   ?  s#        4 4 4 4 4r   r   c                       e Zd Zd ZdS )cmd_diff_treec                     t          |dg           \  }}t          |          dk     r#t          d           t          j        d           t          j        d|d         |d                    d S )Nrj      z*Usage: dulwich diff-tree OLD-TREE NEW-TREEr   r4   r   )r   r   rn   r   r   r   r   r   s      r   r!   zcmd_diff_tree.runH  se    D"b))
dt99q==>???HQKKKCa$q'22222r   NrE   r)   r   r   r   r   G  s#        3 3 3 3 3r   r   c                       e Zd Zd ZdS )cmd_rev_listc                     t          |dg           \  }}t          |          dk     r#t          d           t          j        d           t          j        d|           d S )Nrj   r   z#Usage: dulwich rev-list COMMITID...r4   )r   r   rn   r   r   r   rev_listr   s      r   r!   zcmd_rev_list.runQ  s[    D"b))
dt99q==7888HQKKK3%%%%%r   NrE   r)   r   r   r   r   P  #        & & & & &r   r   c                       e Zd Zd ZdS )cmd_tagc                    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.rV   )r.   rX   z-sz--signzSign the annotated tag.r4   r   )	annotatedsign)r   r   r   r;   r   
tag_creater   r   r   s       r   r!   zcmd_tag.runZ  s    &((+	 	 	
 	
 	
 	(!:< 	 	
 	
 	
 ))$//aG$5GL	
 	
 	
 	
 	
 	
r   NrE   r)   r   r   r   r   Y  s#        
 
 
 
 
r   r   c                       e Zd Zd ZdS )
cmd_repackc                 t    t          |dg           \  }}t          |          }t          j        d           d S )Nrj   r4   )r   rl   r   repackr   s      r   r!   zcmd_repack.runl  s9    D"b))
dDzzr   NrE   r)   r   r   r   r   k  s#            r   r   c                       e Zd Zd ZdS )	cmd_resetc                     t          |dg d          \  }}t          |          }d}d|v rd}nd|v rd}nd|v rd}t          j        d	g|R d
|i d S )Nrj   )hardsoftmixedz--hardr   z--softr   z--mixedr   r4   mode)r   rl   r   reset)r#   r$   rp   r   s       r   r!   zcmd_reset.runs  s    D"&?&?&?@@
dDzztDDDD$D....$.....r   NrE   r)   r   r   r   r   r  s#        
/ 
/ 
/ 
/ 
/r   r   c                       e Zd Zd ZdS )
cmd_daemonc                    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   defaultr.   -p--portportBinding TCP port.r   r-   r   r.   r4   addressr   )dulwichr   protocolr   r   r   r   r   r;   default_logging_configr   r   daemonr   r   )r#   r$   r   r   rB   r   gitdirs          r   r!   zcmd_daemon.run  s    %%%%%%******&((!& 	 	
 	
 	
 	 $ 	 	
 	
 	
 ))$//((***t99>>!WFFF)?glSSSSSSr   NrE   r)   r   r   r   r     s(        T T T T Tr   r   c                       e Zd Zd ZdS )cmd_web_daemonc                    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   rj   r   r   r   r   r   i@  r   r  r   r4   r  )r  r   r   r   r   r   r;   r  r   r   
web_daemonr   r   )r#   r$   r   rB   r   r  s         r   r!   zcmd_web_daemon.run  s    %%%%%%&((!& 	 	
 	
 	
 	$ 	 	
 	
 	
 ))$//((***t99>>!WFFFVW-C',WWWWWWr   NrE   r)   r   r   r
  r
    s(        X X X X Xr   r
  c                       e Zd Zd ZdS )cmd_write_treec                     t          j                    }|                    |          \  }}t          j                            dt          j        d          z             d S )Nz%s
r4   )r   r   r;   r   r>   r?   r   
write_treer   s       r   r!   zcmd_write_tree.run  sS    &(())$//
)"6s";";;<<<<<r   NrE   r)   r   r   r  r    s#        = = = = =r   r  c                       e Zd Zd ZdS )cmd_receive_packc                     t          j                    }|                    |          \  }}t          |          dk    r	|d         }nd}t	          j        |           d S Nr   r   r4   )r   r   r;   r   r   receive_packr#   r$   rB   r   r  s        r   r!   zcmd_receive_pack.run  s]    &(())$//t99>>!WFFFv&&&&&r   NrE   r)   r   r   r  r    s#        ' ' ' ' 'r   r  c                       e Zd Zd ZdS )cmd_upload_packc                     t          j                    }|                    |          \  }}t          |          dk    r	|d         }nd}t	          j        |           d S r  )r   r   r;   r   r   upload_packr  s        r   r!   zcmd_upload_pack.run  s]    &(())$//t99>>!WFFFf%%%%%r   NrE   r)   r   r   r  r    s#        & & & & &r   r  c                       e Zd Zd ZdS )
cmd_statusc                    t          j                    }|                    |          \  }}t          |          dk    r	|d         }nd}t	          j        |          }t          d |j                                        D                       rt          j
                            d           |j                                        D ]a\  }}|D ]Y}t          j
                            d                    ||                    t          j                                                   Zbt          j
                            d           |j        rt          j
                            d           |j        D ]H}t          j
                            d	|                    t          j                              z             It          j
                            d           |j        rlt          j
                            d
           |j        D ]$}t          j
                            d	|z             %t          j
                            d           d S d S )Nr   r   r4   c              3       K   | ]	\  }}|V  
d S Nr)   )r]   kindnamess      r   	<genexpr>z!cmd_status.run.<locals>.<genexpr>  s&      @@$u@@@@@@r   zChanges to be committed:

z	{}: {}

z Changes not staged for commit:

z	%s
zUntracked files:

)r   r   r;   r   r   statusanystagedro   r   r>   r?   rw   decodegetfilesystemencodingunstaged	untracked)	r#   r$   rB   r   r  r$  r   r!  r   s	            r   r!   zcmd_status.run  s"   &(())$//t99>>!WFFF!&))@@&-*=*=*?*?@@@@@ 	#J;<<<%}2244  e!  DJ$$$++D$++c>W>Y>Y2Z2Z[[    JT"""? 	#JABBB V V
  DKK8Q8S8S,T,T!TUUUUJT""" 	#J3444( 2 2
  D1111JT"""""		# 	#r   NrE   r)   r   r   r  r    s#        # # # # #r   r  c                       e Zd Zd ZdS )cmd_ls_remotec                 d   t          |dg           \  }}t          |          dk     r#t          d           t          j        d           t          j        |d                   }t          |          D ];}t          j        	                    d
                    |||                              <d S )Nrj   r   zUsage: dulwich ls-remote URLr   z{}	{}
)r   r   rn   r   r   r   	ls_remotesortedr>   r?   rw   )r#   r$   rp   rq   refs        r   r!   zcmd_ls_remote.run  s    D"b))
dt99q==0111HQKKK"47++$<< 	@ 	@CJZ..sDI>>????	@ 	@r   NrE   r)   r   r   r,  r,    s(        @ @ @ @ @r   r,  c                       e Zd Zd ZdS )cmd_ls_treec                 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--recursiverV   zRecursively list tree contents.rX   r.   z--name-onlyzOnly display name.r   r4   )r5   	recursive	name_only)r   r   r   r;   rm   
IndexErrorr   ls_treer   r>   r5  r6  )r#   r$   rB   r   treeishs        r   r!   zcmd_ls_tree.run  s    &((2	 	 	
 	
 	
 	-CWXXX))$//	hhqkkGG 	 	 	GGG	j''	
 	
 	
 	
 	
 	
s   A4 4BBNrE   r)   r   r   r2  r2    s#        
 
 
 
 
r   r2  c                       e Zd Zd ZdS )cmd_pack_objectsc                    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 )NFTrj   )r>   deltifyzno-reuse-deltasr   z--stdoutz$Usage: dulwich pack-objects basenamec                 6    g | ]}|                                 S r)   )strip)r]   lines     r   r`   z(cmd_pack_objects.run.<locals>.<listcomp>&  s     EEEtdjjllEEEr   z	--deltifyz--no-reuse-deltasrA   r   z.packwbz.idxr4   )r=  reuse_deltas)r   rl   r   keysrn   r   r   stdin	readlinesgetattrr>   openr   pack_objectsclose)r#   r$   r=  rB  rp   
object_idspackfidxfrI  r   fs              r   r!   zcmd_pack_objects.run  s   D"&N&N&NOO
dDzzt99q==Ztyy{{::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%	' 	' 	' 	'  	 	AGGIIII	 	r   NrE   r)   r   r   r;  r;    s#            r   r;  c                       e Zd Zd ZdS )cmd_pullc                     t          j                    }|                    |          \  }}	 |d         }n# t          $ r d }Y nw xY wt	          j        d|           d S )Nr   r4   )r   r   r;   r7  r   pull)r#   r$   rB   r   from_locations        r   r!   zcmd_pull.run@  ss    &(())$//	! GMM 	! 	! 	! MMM	!sM*****s   6 AANrE   r)   r   r   rO  rO  ?  s#        + + + + +r   rO  c                       e Zd Zd ZdS )cmd_pushc                    t          j                    }|                    dddd           |                    dt                     |                    dt          d	
           |                    |          }	 t          j        d|j        |j        pd |j	                   d S # t
          j
        $ r# t          j                            d           Y dS w xY w)Nz-fr   rV   Forcer4  to_location)r-   refspecr   r1   r4   )r   z.Diverged branches; specify --force to overrider   )r7   r8   r9   r:   r;   r   pushrW  rX  r   DivergedBranchesr   r@   r?   rL   s       r   r!   zcmd_push.runL  s    (**D)LwOOOM444ICs;;;  &&	N3 0$,2F$djYYYYYY) 	 	 	JMNNN11	s   <)B' '.CCNrE   r)   r   r   rT  rT  J  s#        
 
 
 
 
r   rT  c                       e Zd Zd ZdS )cmd_remote_addc                     t          j                    }|                    |          \  }}t          j        d|d         |d                    d S )Nr4   r   r   )r   r   r;   r   
remote_addr   s       r   r!   zcmd_remote_add.runZ  sJ    &(())$//S$q'4733333r   NrE   r)   r   r   r\  r\  Y  s#        4 4 4 4 4r   r\  c                   f    e Zd ZU i Zeeee         f         ed<   dZ	e
ee                  ed<   d ZdS )SuperCommandsubcommandsNdefault_commandc                 Z   |sE| j         s>t          dd                    | j                                                  z             dS |d         }	 | j        |         }n)# t
          $ r t          d|d         z             Y dS w xY w |                                |dd                    S )NzSupported subcommands: %sz, Fr   No such subcommand: %sr   )rb  rn   joinra  rC  r   r!   )r#   r$   cmdcmd_klss       r   r!   zSuperCommand.rune  s     	D0 	-		$:J:O:O:Q:Q0R0RRSSS51g	&s+GG 	 	 	*T!W455555	 wyy}}T!""X&&&s   A "BB)r%   r&   r'   ra  r   r:   r   r   __annotations__rb  r   r!   r)   r   r   r`  r`  `  s\         ,.Kc4=().../3OXd7m,333
' 
' 
' 
' 
'r   r`  c                       e Zd ZdeiZdS )
cmd_remoterK   N)r%   r&   r'   r\  ra  r)   r   r   rj  rj  r  s         	~KKKr   rj  c                       e Zd Zd ZdS )cmd_submodule_listc                     t          j                    }|                    |           t          j        d          D ]8\  }}t
          j                            d                    ||                     9d S )Nr4   z {} {}
)	r7   r8   r;   r   submodule_listr   r>   r?   rw   )r#   rM   rB   rD   shas        r   r!   zcmd_submodule_list.runz  su    (**$"1#66 	; 	;ID#JZ..sD99::::	; 	;r   NrE   r)   r   r   rl  rl  y  s#        ; ; ; ; ;r   rl  c                       e Zd Zd ZdS )cmd_submodule_initc                 ~    t          j                    }|                    |           t          j        d           d S r   )r7   r8   r;   r   submodule_init)r#   rM   rB   s      r   r!   zcmd_submodule_init.run  s;    (**$ %%%%%r   NrE   r)   r   r   rq  rq    s#        & & & & &r   rq  c                       e Zd ZdeiZeZdS )cmd_submoduler   N)r%   r&   r'   rq  ra  rb  r)   r   r   ru  ru    s$         	"K )OOOr   ru  c                       e Zd Zd ZdS )cmd_check_ignorec                     t          j                    }|                    |          \  }}d}t          j        d|          D ]}t          |           d}|S )Nr   r4   r   )r   r   r;   r   check_ignorern   )r#   r$   rB   r   retrD   s         r   r!   zcmd_check_ignore.run  s_    &(())$//*355 	 	D$KKKCC
r   NrE   r)   r   r   rw  rw    s#            r   rw  c                       e Zd Zd ZdS )cmd_check_mailmapc                     t          j                    }|                    |          \  }}|D ]&}t          j        d|          }t          |           'd S r   )r   r   r;   r   check_mailmaprn   )r#   r$   rB   r   argcanonical_identitys         r   r!   zcmd_check_mailmap.run  se    &(())$// 	& 	&C!*!8c!B!B$%%%%	& 	&r   NrE   r)   r   r   r|  r|    r   r   r|  c                       e Zd Zd ZdS )cmd_stash_listc                     t          j                    }|                    |          \  }}t          j        d          D ]1\  }}t          d||j                            d          fz             2d S )Nr4   zstash@{%d}: %sr#  )r   r   r;   r   
stash_listrn   r   rstrip)r#   r$   rB   r   ientrys         r   r!   zcmd_stash_list.run  s    &(())$//!,S11 	F 	FHAu"a)=)=d)C)C%DDEEEE	F 	Fr   NrE   r)   r   r   r  r    s(        F F F F Fr   r  c                       e Zd Zd ZdS )cmd_stash_pushc                     t          j                    }|                    |          \  }}t          j        d           t          d           d S )Nr4   z'Saved working directory and index state)r   r   r;   r   
stash_pushrn   r   s       r   r!   zcmd_stash_push.run  sM    &(())$//S!!!788888r   NrE   r)   r   r   r  r    s#        9 9 9 9 9r   r  c                       e Zd Zd ZdS )cmd_stash_popc                     t          j                    }|                    |          \  }}t          j        d           t          d           d S )Nr4   z+Restrored working directory and index state)r   r   r;   r   	stash_poprn   r   s       r   r!   zcmd_stash_pop.run  sM    &(())$//C   ;<<<<<r   NrE   r)   r   r   r  r    s#        = = = = =r   r  c                       e Zd ZeeedZdS )	cmd_stash)listrm   rY  N)r%   r&   r'   r  r  r  ra  r)   r   r   r  r    s%          KKKr   r  c                       e Zd Zd ZdS )cmd_ls_filesc                     t          j                    }|                    |          \  }}t          j        d          D ]}t          |           d S r   )r   r   r;   r   ls_filesrn   )r#   r$   rB   r   r   s        r   r!   zcmd_ls_files.run  sX    &(())$//&s++ 	 	D$KKKK	 	r   NrE   r)   r   r   r  r    s#            r   r  c                       e Zd Zd ZdS )cmd_describec                     t          j                    }|                    |          \  }}t          t	          j        d                     d S r   )r   r   r;   rn   r   describer   s       r   r!   zcmd_describe.run  sF    &(())$//i %%&&&&&r   NrE   r)   r   r   r  r    s#        ' ' ' ' 'r   r  c                       e Zd Zd ZdS )cmd_helpc                 0   t          j                    }|                    ddddd           |                    |          \  }}|j        r:t          d           t          t                    D ]}t          d|z             d S t          d	           d S )
Nr   rU   rd   rV   zList all commands.r~   zAvailable commands:z  %szThe 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;   rd   rn   r/  commands)r#   r$   rB   r   rf  s        r   r!   zcmd_help.run  s    &((% 	 	
 	
 	
 ))$//; 	'(((h'' $ $fsl####$ $     r   NrE   r)   r   r   r  r    s#            r   r  rK   r=   zcheck-ignorezcheck-mailmapr   r   zcommit-treer  r  diffz	diff-treez	dump-packz
dump-indexz
fetch-packrf   rv   r.   r   r   zls-filesz	ls-remotezls-treezpack-objectsz	pack-refsrQ  rY  zreceive-packr<   r   r   zrev-listrQ   r   stash)r$  zsymbolic-ref	submoduletagzupdate-server-infozupload-packz
web-daemonz
write-treec                    | t           j        dd          } t          |           dk     r>t          dd                    t
                                                    z             dS | d         }	 t
          |         }n## t          $ r t          d|z             Y dS w xY w |                                | dd                    S )Nr   z Usage: dulwich <%s> [OPTIONS...]|r   rd  )	r   rM   r   rn   re  r  rC  r   r!   )rM   rf  rg  s      r   mainr    s    |x|
4yy1}}0CHHX]]__4M4MNOOOq
q'C3-   &,---qq 799==abb"""s   1A? ?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   environrF  r   r  r   SIGINTr   r   r   r  r)   r   r   _mainr  0  sb    
""wvy$'G'G"fnk222
M&-,,,HTVVr   __main__r  )Sr(   r7   r   r   r   r   r   typingr   r   r   r  r   rC   r	   r
   errorsr   indexr   
objectspecr   packr   r   repor   r   r   r   r+   rG   rO   rS   rh   rt   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
  r  r  r  r  r,  r2  r;  rO  rT  r\  r`  rj  rl  rq  ru  rw  r|  r  r  r  r  r  r  r  r  r  r  r%   r)   r   r   <module>r     s  0    				  



       ' ' ' ' ' ' ' ' ' '       < < < < < < < < # # # # # #       $ $ $ $ $ $ " " " " " " " "          , , , , , , , ,    '   2' ' ' ' 'g ' ' '& & & & &W & & &/ / / / /W / / /$	% 	% 	% 	% 	% 	% 	% 	%- - - - -w - - -
 
 
 
 
g 
 
 
4M M M M Mw M M MK K K K KG K K K0    W   
6 
6 
6 
6 
6w 
6 
6 
6               F9 9 9 9 9 9 9 9L L L L Lg L L L* * * * *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>= = = = =W = = =' ' ' ' 'w ' ' '& & & & &g & & &# # # # # # # #:@ @ @ @ @G @ @ @
 
 
 
 
' 
 
 
0    w   D+ + + + +w + + +    w   4 4 4 4 4W 4 4 4' ' ' ' '7 ' ' '$       ; ; ; ; ; ; ; ;& & & & & & & &) ) ) ) )L ) ) )    w   & & & & & & & &F F F F FW F F F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 H3+4 H5+6 $7+8 j9+: j;+< Y=+> ?+@ 	&A+B HC+D YE+ +F $0"  U+ + +\# # # #$   z	EGGGGG r   