
    	^ci                        d Z ddlZddlZddlmZ ddlmZmZmZm	Z	m
Z
mZ ddlmZ dZi Z e
j        e          Zd Z edg  ed	          ej        d
          d             Zd Z G d d          Z G d d          Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d  Z%d! Z&d" Z'd# Z(d$ Z)d% Z*d& Z+d' Z,d( Z-d) Z.d* Z/d+ Z0d, Z1d- Z2d. Z3d/ Z4d0 Z5d1 Z6d2 Z7d3 Z8d4 Z9d5 Z:d6 Z;d7 Z<d8 Z=d9 Z>d: Z?i d;ed<ed=ed>ed?ed@edAedBedCe dDe!dEe"dFe$dGe%dHe&dIe'dJe(dKe)i dLe*dMe+dNe,dOe-dPe.dQe/dRe0dSe1dTe2dUe3dVe4dWe5dXe6dYe7dZe8d[e9d\e:e?e#d]Z@e;e<e=e>d^ZAdS )_ztry mapping git commands to Mercurial commands

Tries to map a given git command to a Mercurial command:

  $ hg githelp -- git checkout master
  hg update master

If an unknown command or parameter combination is detected, an error is
produced.
    N)_)encodingerror	fancyoptspycompat	registrarscmutil)procutils   ships-with-hg-corec                     |                      d          r
| dd          S d| v r|                     dd          } t          j        dd|           } | S )Ns   origin/   s   HEAD   .s   ~$s   ~1)
startswithreplaceresub)ss    //usr/lib/python3/dist-packages/hgext/githelp.pyconvertr   +   sW    ||J u!||IIgt$$
ueQAH    s   githelp|gits
   hg githelpT)helpcategory	helpbasicc                    t          |          dk    st          |          dk    r-|d         dk    r!t          j        t          d                    |d         dk    r
|dd         }|d         }|t          vr$t          j        t          d          |z            |                     d           |dd         }t	          |         | |g|R i |S )zgsuggests the Mercurial equivalent of the given git command

    Usage: hg githelp -- <git command>
    r      s   gits8   missing git command - usage: hg githelp -- <git command>Ns   error: unknown git command %ss   githelp)lenr   Abortr   gitcommandspager)uirepoargskwargscmds        r   githelpr#   5   s     4yyA~~#d))q..T!W->->kIJJ
 
 	
 Aw&ABBx
q'C+k!<==CDDDHHZ8DsB6t666v666r   c           	         t          |          }i }t          |          }	 	 t          j        t          |          ||d          }nr# t          j        $ r]}d|j        v r d|j        z   |j        v rdt          j        |j                  z   }nid|j        z   |j        v rdt          j        |j                  z   }n;t          j	        t          d          t          j        |j                  z            	 |                    |           nv# t          $ ri t          d          }t          d	          }t          j	        |t          j        |j                  z  |t          j        |j                  z  
          w xY w|                     t          d          |z             Y d }~nd }~ww xY wt          d |D                       }t          d |                                D                       }||fS )NTzrequires argumentz--   ---   -s   unknown option %ss-   unknown option '%s' packed with other optionss2   please try passing the option as its own flag: -%s)hints   ignoring unknown option %s
c                 ,    g | ]}t          |          S  r   ).0xs     r   
<listcomp>z parseoptions.<locals>.<listcomp>r   s    ******r   c                 h    g | ]/\  }}t          |t                    r|t          |          fn||f0S r*   )
isinstancebytesr   )r,   kvs      r   r.   z parseoptions.<locals>.<listcomp>t   sM     	
 	
 	
1  *!U33?Q

OO!Q	
 	
 	
r   )listr   getoptGetoptErrormsgoptr   bytestrr   r   r   remove	Exceptionwarndictitems)r   
cmdoptionsr    optsexflagr7   r(   s           r   parseoptionsrC   S   s+   j!!JD::D?	?&tDzz:tTJJD! 	? 	? 	?"bf,,rv"&((x/777,26))h.rv666k*++h.>rv.F.FF  D!!!!   HIINOOk(*26222 0 8 88    GGA566=>>>>>>>>+	?	?6 **T***++D	
 	


	
 	
 	
 D :s1   $A	 	F6B!F1;DF1A3F(F11F6c                   R    e Zd Zd Zd Z ej        e          Zd Zd Z	d Z
d ZdS )Commandc                 0    || _         g | _        i | _        d S N)namer    r@   )selfrH   s     r   __init__zCommand.__init__~   s    					r   c                 <   d| j         z   }| j        rat          | j                                                  D ]:\  }}|D ]2}|r%t	          |t
                    rd}nd}||||fz  z  })|d|fz  z  }3;| j        r"|dz  }|d                    | j                  z  }|S )Ns   hg s    %s %ds    %s %ss    %s    )rH   r@   sortedr>   r0   intr    join)rI   r"   r2   valuesr3   fmts         r   	__bytes__zCommand.__bytes__   s    ty 9 	-#DIOO$5$566 
- 
-	6 	- 	-A -%a-- ,"+CC"+CsaV|+v},	- 9 	(4KC499TY'''C
r   c                 :    | j                             |           d S rG   )r    append)rI   values     r   rT   zCommand.append   s    	r   c                 :    | j                             |           d S rG   )r    extend)rI   rP   s     r   rW   zCommand.extend   s    	     r   c                 f    | j                             |g           }|                    |           d S rG   )r@   
setdefaultrT   )rI   keyrU   rP   s       r   __setitem__zCommand.__setitem__   s1    %%c2..er   c                 "    t          | |          S rG   
AndCommandrI   others     r   __and__zCommand.__and__       $&&&r   N)__name__
__module____qualname__rJ   rR   r   	strmethod__str__rT   rW   r[   ra   r*   r   r   rE   rE   }   s          
  & !h ++G     ! ! !  ' ' ' ' 'r   rE   c                        e Zd Zd Zd Zd ZdS )r^   c                 "    || _         || _        d S rG   leftright)rI   rk   rl   s      r   rJ   zAndCommand.__init__   s    	


r   c                 $    d| j         | j        fz  S )Ns   %s && %srj   )rI   s    r   rg   zAndCommand.__str__   s    di444r   c                 "    t          | |          S rG   r]   r_   s     r   ra   zAndCommand.__and__   rb   r   N)rc   rd   re   rJ   rg   ra   r*   r   r   r^   r^      sA          5 5 5' ' ' ' 'r   r^   c                    ddg}t          | ||          \  }}|                    d          r2|                     t          d                     t	          d          }n\t	          d          }|                    d          s|                    |           n"|                     t          d                     |                     t          |          d	           d S )
N)   A   allNr      p   patchNr   rt   sU   note: Mercurial will commit when complete, as there is no staging area in Mercurial

   commit --interactive   addrq   s?   note: use hg addremove to remove files that have been deleted

   
)rC   getstatusr   rE   rW   r1   r   r   r    r!   r?   r@   r"   s          r   addr{      s    !#J b*d33JD$xx 
		@ 	
 	
 	
 -..fooxx 	JJtII(    IIuSzzE"""""r   c                     g }t          | ||           t          d          }|                     t          |          d           d S )Ns   importrw   rC   rE   ry   r1   r   r   r    r!   r?   r"   s         r   amr      sF    JZ&&&
)

CIIeCjj%     r   c                    ddt           dfdg}t          | ||          \  }}t          d          }|                    d          r|                    d          |d<   |                    d          r|                    d          |d<   |                    |           |                     t          |          d           d S )	Nrs   r   )r   	   directoryr   r   s   import --no-commit   -pr   s   --prefixrw   )rN   rC   rE   rx   rW   ry   r1   rz   s          r   applyr      s    	tS#%J b*d33JD$
'
(
(Cxx~~ $XXd^^E
xx 288L11KJJtIIuSzzE"""""r   c                 J    |                      t          d                     d S )Ns,   see 'hg help bisect' for how to use bisect

ry   r   r   r   r    r!   s       r   bisectr      s#    IIaABBCCCCCr   c                     g }t          | ||          \  }}t          d          }|                    d |D                        |                     t	          |          d           d S )Ns   annotate -udlc                 ,    g | ]}t          |          S r*   r+   )r,   r3   s     r   r.   zblame.<locals>.<listcomp>   s    )))q

)))r   rw   rC   rE   rW   ry   r1   rz   s          r   blamer      sk    Jb*d33JD$
"
#
#CJJ))D)))***IIuSzzE"""""r   c                    g d}t          | ||          \  }}t          d          }|                    d          s|                    d          r$|                     t	          d                     d S |                    d          r t          d          }|D ]}||d<   d |d<   n |                    d	          rt          |          d
k    r,t          |          dk    r|                    d
          }n$d}n!t          j        t	          d                    |d
         }	||d<   |	                    |	           nht          |          dk    r'|d         |d<   |	                    |d
                    n.t          |          dk    r|	                    |d
                    |                     t          |          d           d S )N))r   s   set-upstreamNr   )r   s   set-upstream-tor   r      d   deleteNr   )   Dr   Nr   )   m   moveNr   )   Mr   Nr      bookmarks   set_upstreams   set_upstream_tos.   Mercurial has no concept of upstream branches
r   s   strip   -Br   r   r   s"   `hg log -T"{activebookmark}" -r .`s   missing newbranch argument   -m   -rrw   )rC   rE   rx   ry   r   r   popr   r   rT   r1   )
r   r   r    r!   r?   r@   r"   brancholdnews
             r   r   r      s     J b*d33JD$
+

Cxx    DHH-?$@$@  
		!FGGHHH	)		  h 	 	FCJJCJJ	'		  t99q==4yy1}}hhqkk <+a =>>???1gE


3t99q==aCJJJtAwYY!^^JJtAwIIuSzzE"""""r   c                     t          j        | |          rdS |                                 }|dk    r|}n|dz   |z   }| j                            |          }|rdS | d                                         }||v p|                    |          }|S )a  
    The first argument to git checkout can either be a revision or a path. Let's
    generally assume it's a revision, unless it's obviously a path. There are
    too many ways to spell revisions in git for us to reasonably catch all of
    them, so let's be conservative.
    Fr      /Tr   )r	   isrevsymbolgetcwdwvfsexistsmanifesthasdir)r   stringcwdrepopathr   r   didexists          r   ispathr   !  s     4((  u
++--C
czz:&Yh''F tDz""$$HH$B)B)BHOr   c                    g d}g }d|v r?|                     d          }|                    ||dz   d                     |d |         }t          | ||          \  }}d }|rt          ||d                   r||z   }n|r|d         }|dd          |z   }t	          d          }	|                    d          r	|s|rd |	d<   |                    d          rt	          d	          }	d |	d
<   |                    d          rt          |          dk    r9t	          d          }	|	                    |                    d                     nQ|	                    |d                    t	          d          }
|
                    |                    d                     |	|
z  }	nt          |          dk    rh|                     t          d                     t	          d	          }	|                    d          rd |	d
<   |r||	d<   |	                    |           n~|r1|                    d          r||	d<   na|	                    |           nK|                    d          rt	          d	          }	d |	d<   n!t          j        t          d                    |                     t          |	          d           d S )N)   b   branchr   r   )   Br   r   r      f   forceNr   rr   r%   r   r      updater   s   -Crt      revert   -ir   r   s5   note: use --no-backup to avoid creating .orig files

r      --alls   a commit must be specifiedrw   )indexrW   rC   r   rE   rx   r   rT   ry   r   r   r   r1   )r   r   r    r!   r?   pathssepindexr@   revr"   bookcmds              r   checkoutr   >  s     J E}}::e$$T(Q,..)***IXIb*d33JD$
C !tT!W%% !u	 !1gQRR5 
)

Cxx  	C 	CJxx i  E
xx	 <t99>>+&&CJJtxx	**++++JJtAwk**GNN488I..///-CC	Ua
		!NOOPPPi  88H 	CJ 	CJ

5	 	<88H 	CJJJJsOOOO	(		 <i  Hk!9::;;;IIuSzzE"""""r   c                    g d}t          | ||          \  }}t          d          }|                    d          rd |d<   |                    d          rd |d<   nN|                    d          r$|                     t	          d                     d S |                    |           |                     t          |          d	           d S )
N)r      continueNr   r      abortNr   )   e   editNr   s   graftr   s   --editr   
   --continuer   s&   note: hg graft does not have --abort

rw   rC   rE   rx   ry   r   rW   r1   rz   s          r   
cherrypickr   ~  s      J
 b*d33JD$
(

Cxx Ixx !M	(		 
		!?@@AAA

4IIuSzzE"""""r   c                     g d}t          | ||          \  }}t          d          }|                    d          rd |d<   |                    |           |                     t          |          d           d S )N))r   r   Nr   r   )   xr   Nr   s   purger   r   rw   )rC   rE   rx   rW   ry   r1   rz   s          r   cleanr     s      J
 b*d33JD$
(

Cxx~~ HJJtIIuSzzE"""""r   c                    g d}t          | ||          \  }}t          |          dk    r!t          j        t	          d                    t          d          }|                    |d                    t          |          dk    r|                    |d                    |                    d          r(d |d<   |                     t	          d                     n|                    d	          rd |d<   |                    d
          r<t          d          }|                    |                    d
                     ||z  }|                     t          |          d           d S )N))r      bareNr   )   ns   no-checkoutNr   r   r   s'   a repository to clone must be specified   cloner   r   s   -Usa   note: Mercurial does not have bare clones. -U will clone the repo without checking out a commit

s   no_checkoutr   r   rw   )
rC   r   r   r   r   rE   rT   rx   ry   r1   )r   r   r    r!   r?   r@   r"   cocmds           r   cloner     sl     J
 b*d33JD$
4yyA~~k!FGGHHH
(

CJJtAw
4yy1}}

47xx 	E

		L 	
 	
 	
 	
 
.	!	! E
xx	 	""TXXi(()))EkIIuSzzE"""""r   c                    g d}t          | ||          \  }}t          d          }|                    d          rt          d          }|                    d          r*|                    d          rt          d          }nd |d<   |                    d          r|                    d          |d	<   |                    d
          rd|                    d
          fz  |d<   |                    d          r"|                     t	          d                     |                    d          r|                    d          |d<   |                    d          r|                    d          |d<   |                    d          r|                    d          |d<   |                    |           |                     t          |          d           d S )N)	   arq   Nr   )r      messager   r   rr   )   Cs   reuse-messager   r   )   F   filer   r   )r      authorr   r   )r      dater   r   )r      amendNr   )r   s   no-editNr      commitrt   ru   r   s   no_edits   --amends   reuse_messages   -Mr   s   '%s'r   rq   sq   note: Mercurial doesn't have a staging area, so there is no --all. -A will add and remove files for you though.

r      -lr   s   -ur      -drw   r   rz   s          r   commitr     s   
 
 
J b*d33JD$
)

Cxx /-..xx #88J 	#(##CC"C
Oxx !! 0XX.//E
xx
 7 4 466E
xx 

		' 	
 	
 	
 xx 'XXg&&E
xx	 )XXi((E
xx 'XXg&&E
JJtIIuSzzE"""""r   c                 J    |                      t          d                     d S )NsX   this command has been deprecated in the git project, thus isn't supported by this tool

)r<   r   r   s       r   
deprecatedr     s4    GG	6	
 	
    r   c                 
   g d}t          | ||          \  }}t          d          }|                    d          r"|                     t	          d                     |                    d          rd |d<   t          |          D ]W}|                    |           	 |                    |           ||d<   3# t          $ r |	                    |           Y Tw xY w|                     t          |          d           d S )	N)r   )r      cachedNr   )   R   reverseNr      diffr   sL   note: Mercurial has no concept of a staging area, so --cached does nothing

r   s	   --reverser   rw   )rC   rE   rx   ry   r   r4   r:   revsr;   rT   r1   )r   r   r    r!   r?   r@   r"   as           r   diffr     s&     J
 b*d33JD$
'

Cxx	 

		0 	
 	
 	
 xx
 ! L$ZZ  A	IIaLLLCJJ 	 	 	JJqMMMMM	 IIuSzzE"""""s    B;;CCc                 J    |                      t          d                     d S )Ns  Mercurial does not enable external difftool by default. You need to enable the extdiff extension in your .hgrc file by adding
extdiff =
to the [extensions] section and then running

hg extdiff -p <program>

See 'hg help extdiff' and 'hg help -e extdiff' for more information.
r   r   s       r   difftoolr   &  s4    II		
 	

 
 
 
 
r   c                    ddg}t          | ||          \  }}t          d          }t          |          dk    rq|                    |d                    t          |          dk    rC|                     t          d                     |dd          D ]}||j        v r||d<   ||d<   |                     t          |          d	           d S )
Nr   rq   Nr   r      pullr   r      note: Mercurial doesn't have refspecs. -r can be used to specify which commits you want to pull. -B can be used to specify which bookmark you want to pull.

r   r   rw   rC   rE   r   rT   ry   r   
_bookmarksr1   r   r   r    r!   r?   r@   r"   r3   s           r   fetchr   4  s     #J b*d33JD$
'

C
4yy1}}

47t99q==II)    !""X # #''!"CJJ!"CJJIIuSzzE"""""r   c                     g }t          | ||          \  }}t          d          }|                    |           |                     t	          |          d           d S )N   greprw   r   rz   s          r   grepr   Q  s]    Jb*d33JD$
'

C JJtIIuSzzE"""""r   c                     g }t          | ||          \  }}t          d          }t          |          dk    r|                    |d                    |                     t          |          d           d S )N   initr   rw   rC   rE   r   rT   ry   r1   rz   s          r   initr   ^  sn    Jb*d33JD$
'

C
4yy1}}

47IIuSzzE"""""r   c                 .   g d}t          | ||          \  }}|                    d          p|                    d          }|r;t          d          }||d<   |                     dt	          |          z             d S |                     t          d                     |                     t          d                     t          d	          }d |d
<   |                    d          r|                    d          |d<   |                    d          rd|d<   |                    d          rd |d<   |                    d          rd |d<   |                    d          rd |d<   |                    d          s*|                    d          s|                    d          ri|                    dd          }d|v r(|                     t          d                     d|d<   n'|                     t          d                     d|d<   t          |          dk    rJd|d         v r+|d                             d          \  }	}
d |	|
fz  |d!<   |d= |                    |           |                     t	          |          d"           d S )#N))r   s   followNr   )r   s   decorateNr   )r      numberr   r   )   1r   Nr   r      prettyr   r   )r      formatr   r   )r      onelineNr   )r      statNr   )r      graphNr   rr   )   Gs	   grep-diffr   r   )   Ss   pickaxe-regexr   r   s	   grep_diffs   pickaxe_regexr   s   --diffs   %s
se   note: -v prints the entire commit message like Git does. To print just the first line, drop the -v.

sF   note: see hg help revset for information on how to filter log output

   logs   -vr   r   r   r      --statr   s   -Grt   r   r   r   r   r      format:sc   note: --format format:??? equates to Mercurial's --template. See hg help templates for more info.

s   ???s
   --templatesq   note: --pretty/format/oneline equate to Mercurial's --style or --template. See hg help templates for more info.

s   --styler   s   ..s   '%s::%s'r   rw   )	rC   rx   rE   ry   r1   r   r   splitrW   )r   r   r    r!   r?   r@   grep_patr"   formatsinceuntils              r   logr
  j  s     J b*d33JD$xx%%C2B)C)CH g!I
		'E#JJ&'''II	;	
 	
   II		
 	
   &//CCJxx	 )XXi((E
xx~~ E
xx Ixx E
xx E
xx	 %dhhy11 %TXXj5I5I %)S))IIL    "(CII&    %C
O
4yy1}}DG7==//LE5$u~5CJQ

4IIuSzzE"""""r   c                 6   g d}t          | ||          \  }}|                    d          s?|                    d          s*|                    d          s|                    d          rxt          d          }|                    d          rd |d<   |                    d          rd |d<   |                    d          rd |d	<   |                    d          rd |d
<   nt          d          }|                    d          r"|                     t	          d                     |                    d          rd |d<   |                    d           |D ]}t          j        |          |d<   |                     t          |          d           d S )N))   cr   Nr   )r      deletedNr   )r      modifiedNr   )   o   othersNr   )   i   ignoredNr   )   s   stageNr   )   z   _zeroNr   r  r  r  r     statusr   r   s   -or   s   filesr  s>   note: Mercurial doesn't have a staging area, ignoring --stage
r  s   -0r   s   -Irw   )	rC   rx   rE   ry   r   rT   r
   
shellquoter1   )r   r   r    r!   r?   r@   r"   includes           r   lsfilesr    s     J b*d33JD$ 	 88J  88I  88J	  i  88J 	CJ88K   	CJ88I 	CJ88J 	CJhxx 

		 	
 	
 	
 xx E
JJt 2 2(11E

IIuSzzE"""""r   c                    g }t          | ||          \  }}t          d          }t          |          dk    r+|                    |t          |          dz
                      |                     t          |          d           d S )N   merger   r   rw   r   rz   s          r   merger    sy    Jb*d33JD$
(

C
4yy1}}

4D		A&'''IIuSzzE"""""r   c                 F   g }t          | ||          \  }}t          |          dk    rddg}t          d|d         |d         fz            }|                     t	          d          t	          d                     |                     t          |          d	           d S )
N   rp   r   s&   log -T '{node}\n' -r 'ancestor(%s,%s)'r   r   s1   note: ancestors() is part of the revset language
s3   (learn more about revsets with 'hg help revsets')

rw   )rC   r   rE   ry   r   r1   rz   s          r   	mergebaser     s    Jb*d33JD$
4yyA~~d|
2d1gtAw5GG C II	
?@@	
BCC   IIuSzzE"""""r   c                     g }t          | ||          \  }}t          d          }t          |          dk    rd |d<   |                    |           |                     t          |          d           d S )Ns   resolver   r   rw   )rC   rE   r   rW   ry   r1   rz   s          r   	mergetoolr"    ss    Jb*d33JD$
*

C
4yyA~~HJJtIIuSzzE"""""r   c                 ,   ddg}t          | ||          \  }}t          d          }|                    |           |                    d          rd |d<   |                    d          rd |d<   |                     t          |          d           d S )	Nr   r   s   dry-runNr      mvr      -f   dry_run   -nrw   rC   rE   rW   rx   ry   r1   rz   s          r   mvr*        #%J b*d33JD$
%..CJJtxx E
xx
 E
IIuSzzE"""""r   c                    g d}t          | ||          \  }}t          d          }d |d<   t          |          dk    rq|                    |d                    t          |          dk    rC|                     t          d                     |dd          D ]}||j        v r||d<   ||d<   |                     t          |          d	           d S )
N)r   r   )   r   rebaseNr   r   s   --rebaser   r   r   r   r   rw   r   r   s           r   pullr/  #  s      J
 b*d33JD$
'

CC
4yy1}}

47t99q==II)    !""X # #''!"CJJ!"CJJIIuSzzE"""""r   c                    ddg}t          | ||          \  }}t          d          }t          |          dk    rq|                    |d                    t          |          dk    rC|                     t          d                     |dd          D ]}||j        v r||d<   ||d<   |                    d	          rd |d
<   |                     t          |          d           d S )Nr   r      pushr   r   s   note: Mercurial doesn't have refspecs. -r can be used to specify which commits you want to push. -B can be used to specify which bookmark you want to push.

r   r   r   r&  rw   )	rC   rE   r   rT   ry   r   r   rx   r1   r   s           r   pushr2  B  s    #J b*d33JD$
'

C
4yy1}}

47t99q==II-    !""X # #''!"CJJ!"CJJxx E
IIuSzzE"""""r   c                 Z   g d}t          | ||          \  }}|                    d          r|                     t          d                     t	          d          }t          |          dk    r"|                     t          d                     |                     t          |          d           d S |                    d          r2t	          d	          }|                     t          |          d           t	          d
          }|                    d          s|                    d          rd |d<   |                    d          rd |d<   |                    d          r|                     t          d                     t          |                    d                    |d<   t          |          dk     r!t          j	        t          d                    dt          |d                   t          |d                   fz  |d<   not          |          dk    rt          |d                   |d<   nCt          |          dk    r0t          |d                   |d<   t          |d                   |d<   |                     t          |          d           d S )N)r   )r     interactiveNr   )r      ontor   r   r   r   )r      skipNr   r4  sE   note: hg histedit does not perform a rebase. It just edits history.

s   histeditr   sc   also note: 'hg histedit' will automatically detect your stack, so no second argument is necessary

rw   r6  s   revert --all -r .r.  r   r   r   s   --abortr5  sx   note: if you're trying to lift a commit off one branch, try hg rebase -d <destination commit> -s <commit to be lifted>

r   r  s(   expected format: git rebase --onto X Y Zs   '::%s - ::%s'r   s   -ss   -b)
rC   rx   ry   r   rE   r   r1   r   r   r   rz   s          r   rebaser7  b  s     J b*d33JD$xx 
		. 	
 	
 	
 k""t99q==IIK    			5::&&&xx '*++
		5::&&&
)

Cxx " 1 1 "!Mxx Jxx *
		 	
 	
 	
 TXXg..//E
t99q==+a KLLMMM%a)9)9747;K;K(LLE

t99>> a))CJJYY!^^ a))CJ a))CJIIuSzzE"""""r   c                 l   dg}t          | ||          \  }}t          d          }|                    d          rd |d<   t          |          dk    r|                    |d                    |                     t          |          d           |                     t          d                     d S )Nr   s   journalrq   r   r   s   

sH   note: in hg commits can be deleted from repo but we always have backups
)rC   rE   rx   r   rT   ry   r1   r   rz   s          r   reflogr9    s     J b*d33JD$
*

Cxx H
4yy1}}

47IIeCjj'"""II		
 	
    r   c                 L   g d}t          | ||          \  }}t          t          |          dk    r|d         nd          }|                    d          }|                    d          r"|                     t          d                     |                    d          r"|                     t          d                     t          d	          }|r|                    d
           |                    |           |                     t          |          d           d S )N))r      softNr   )r      hardNr   )r      mixedNr   r   r   r<  r=  sB   note: --mixed has no meaning since Mercurial has no staging area

r;  sA   note: --soft has no meaning since Mercurial has no staging area

r   s   --cleanrw   )	rC   r   r   rx   ry   r   rE   rT   r1   )	r   r   r    r!   r?   r@   r   hardr"   s	            r   resetr?    s3     J
 b*d33JD$D		AT!WW488F88GDxx 

		$ 	
 	
 	
 xx 

		$ 	
 	
 	
 )

C 

:JJvIIuSzzE"""""r   c                 :   g }t          | ||          \  }}t          |          dk    r"|                     t          d                     t	          d          }|r|                    |d                    |                     t          |          d           d S )Nr   s;   note: hg backout doesn't support multiple commits at once

s   backoutr   rw   )rC   r   ry   r   rE   rT   r1   rz   s          r   revertrA    s    Jb*d33JD$
4yy1}}
		 	
 	
 	
 *

C 

47IIuSzzE"""""r   c                    ddg}t          | ||          \  }}|                    d          s|                    d          rkt          d          }|                    d          r"|                     t	          d                     |                     t          |          d           d S |                     t	          d                     d S )	N)r   s	   show-cdupNr   )r   s   show-toplevelNr   s	   show_cdups   show_toplevels   roots1   note: hg root prints the root of the repository

rw   s5   note: see hg help revset for how to refer to commits
)rC   rx   rE   ry   r   r1   rz   s          r   revparserC    s    &*J b*d33JD$xx P*:!;!; Pg88L!! 	QIIaNOOPPP
		5::&&&&&
		!MNNOOOOOr   c                 ,   ddg}t          | ||          \  }}t          d          }|                    |           |                    d          rd |d<   |                    d          rd |d<   |                     t          |          d           d S )	Nr   r$     rmr   r&  r'  r(  rw   r)  rz   s          r   rmrF    r+  r   c                 V   ddddt           dfg}t          | ||          \  }}|                    d          ri|                    d          dk    rt          d	          }d
|d<   nt          d          }|                    d           |                    d           nt          |          dk    rt          ||d                   rt          d          }nt          d          }|                    |           |                    d          r|                    d|d         fz             nS|                    d          r/t          d          }|                    d|d         fz             nt          d          }|                     t          |          d           d S )N)r   s   name-statusNr   r      Us   unifiedr   s   name_statusr   r  r  r   s   --changer  s   --style statuss   -r .r   s   cats   exports   --config diff.unified=%drw   )
rN   rC   rx   rE   rT   r   r   rW   ry   r1   rz   s          r   showrI    s   ("	z3$J
 b*d33JD$xx !88I*,,)$$C#C&//CJJ()))JJw	TQ$Q   	%&//CC)$$C

488J 	JJJ2d:6F5HHIII	*		 !i  

.$z2B1DDEEEEi  IIuSzzE"""""r   c                 "   dg}t          | ||          \  }}t          d          }t          |          dk    r|d         nd }|dk    r!d |d<   |                    d          rd |d<   n|dk    rP|                    d          rd |d<   nd |d	<   t          |          d
k    r|                    |d
                    n+|dk    rd |d<   n|dk    rJd |d<   t          |          d
k    r|                    |d
                    n|                    d           n|dk    s|dk    rIt          d          }t          |          d
k    r|                    |d
                    |dk    rd |d<   ny|dk    s|dk    r$|                     t          d                     d S t          |          dk    r6|d         dk    r|d         |d<   nt          |          d
k    r|d
         |d<   |                     t          |          d           d S )Nrr   s   shelver      listr   rt   r      showr  r   s   clears	   --cleanups   dropr   s   <shelve name>s   pop   applys   unshelves   --keepr   s   createsT   note: Mercurial doesn't have equivalents to the git stash branch or create actions

s   saves   --namerw   )rC   rE   r   rx   rT   ry   r   r1   )r   r   r    r!   r?   r@   r"   actions           r   stashrO  .  sI   #J b*d33JD$
)

CD		AT!WW4FE
88H 	CJ	7		88H 	"CJJ!C	Nt99q==JJtAw	8		 L	7		E
t99q==JJtAwJJ'((((	6		Vx//k""t99q==JJtAwX!C	N	9		) 3 3
		: 	
 	
 	
 	t99q==Aw'!!!%aITQ!%aIIIuSzzE"""""r   c                     dg}t          | ||          \  }}t          d          }|                    |           |                    d          rd |d<   |                     t          |          d           d S )N)r   r  Nr   r  r  r   rw   r)  rz   s          r   ry   ry   b  s    $J b*d33JD$
)

CJJtxx
 E
IIuSzzE"""""r   c                     |s!t          j        t          d                    |d         }|t          vr$t          j        t          d          |z            |dd          }t          |         | |g|R i |S )Ns   missing svn commandr   s   unknown git svn command "%s"r   )r   r   r   gitsvncommands)r   r   r    r!   svncmds        r   svnrT  q  s     5k!233444!WF^##k!;<<vEFFF8D&!"d<T<<<V<<<r   c                     g }t          | ||           t          d          }|                     t          |          d           d S )Nr1  rw   r}   r~   s         r   
svndcommitrV  |  sF    JZ&&&
'

CIIuSzzE"""""r   c                     g }t          | ||           t          d          }|                    d           |                     t	          |          d           d S )Nr      default-pushrw   rC   rE   rT   ry   r1   r~   s         r   svnfetchrZ    sX    JZ&&&
'

CJJIIuSzzE"""""r   c                     g }t          | ||          \  }}|s!t          j        t          d                    t	          d          }|d         |d<   |                     t          |          d           d S )Ns   missing find-rev argumentr  r   r   rw   )rC   r   r   r   rE   ry   r1   rz   s          r   
svnfindrevr\    su    Jb*d33JD$ ;k!899:::
&//CaCJIIuSzzE"""""r   c                    dg}t          | ||           t          d          }|                    d           t          d          }|                    d           ||z  }|                     t	          |          d           d S )N)   ls   localNr   r   rX  r.  s   tiprw   rY  )r   r   r    r!   r?   pullcmd	rebasecmdr"   s           r   	svnrebasera    s    #J Z&&&gGNN?###	""IV
I
CIIuSzzE"""""r   c                    g d}t          | ||          \  }}|                    d          rt          d          }nt          d          }|s!t          j        t          d                    |                    |d                    t          |          dk    r|d         |d<   |                    d	          rd |d
<   |                    d          rd |d<   |                     t          |          d           d S )N)r   )r^  rK  Nr   r   rK  s   tags   tags   missing tag argumentr   r   r   r   s   --remover   r&  rw   )
rC   rx   rE   r   r   r   rT   r   ry   r1   rz   s          r   tagrd    s     J
 b*d33JD$xx gfoo 	:+a 788999

47t99q==aCJ88I 	$#C88H 	CJIIuSzzE"""""r   rv   s   amrM  s   bisects   blamer   s   checkouts   cherry-picks   cleanr   r   r   s   difftool   fetchr   r   r  s   ls-filesr  s
   merge-bases	   mergetoolr%  r   r1  r.  s   reflogs   resetr   s	   rev-parserE  rL  s   stashr  s   svn)rc  s   whatchanged)s   dcommitre  s   find-revr.  )B__doc__r5   r   mercurial.i18nr   	mercurialr   r   r   r   r   r	   mercurial.utilsr
   
testedwithcmdtablecommandr   CATEGORY_HELPr#   rC   rE   r^   r{   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  r7  r9  r?  rA  rC  rF  rI  rO  ry   rT  rV  rZ  r\  ra  rd  r   rR  r*   r   r   <module>rn     s  	 	  				                      % $ $ $ $ $ #

)
H
%
%   	Am&  7 7 7.' ' 'T&' &' &' &' &' &' &' &'R	' 	' 	' 	' 	' 	' 	' 	'# # #>! ! !# # #"D D D# # #)# )# )#X  :=# =# =#@# # #.# # #  #  #  #F2# 2# 2#j  # # #@  # # #:
# 
# 
#	# 	# 	#M# M# M#`*# *# *#Z	# 	# 	## # #$	# 	# 	## # #$# # #># # #@;# ;# ;#|  * #  #  #F# # #&P P P # # #$# # #B1# 1# 1#h# # #= = =# # ## # #
# 
# 
## # # # # #:%
C%	2% e% v	%
 e% v% % J% e% e% v% T% % e% T%  T!%" C#% %$ %%& e'%( 9)%* )+%, 
2-%. T/%0 T1%2 v3%4 v5%6 e7%8 v9%: (;%< 
2=%> T?%@ eA%B vC%D CE% %F I% % %P 	 r   