a
    %0É_¸  ã                %   @   sb  d Z ddlm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 e¡Zdd	„ Zed
g edƒejdddd„ ƒZdd„ ZG dd„ deƒZG dd„ deƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Z d$d%„ Z!d&d'„ Z"d(d)„ Z#d*d+„ Z$d,d-„ Z%d.d/„ Z&d0d1„ Z'd2d3„ Z(d4d5„ Z)d6d7„ Z*d8d9„ Z+d:d;„ Z,d<d=„ Z-d>d?„ Z.d@dA„ Z/dBdC„ Z0dDdE„ Z1dFdG„ Z2dHdI„ Z3dJdK„ Z4dLdM„ Z5dNdO„ Z6dPdQ„ Z7dRdS„ Z8dTdU„ Z9dVdW„ Z:dXdY„ Z;dZd[„ Z<d\d]„ Z=d^d_„ Z>d`da„ Z?dbdc„ Z@ddde„ ZAdfdg„ ZBeeeeeee!e"e#e$e%e'e(e)e*e+e,e-e.e/e0e1e2e3e4e5e6e7e8e9e:e;e<e=eBe&dhœ$ZCe>e?e@eAdiœZDdS )jzötry 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.
é    )Úabsolute_importN)Ú_)ÚencodingÚerrorÚ	fancyoptsÚpycompatÚ	registrarÚscmutil)Úprocutils   ships-with-hg-corec                 C   s<   |   d¡r| dd … S d| v r*|  dd¡} t dd| ¡} | S )Ns   origin/é   s   HEADó   .s   ~$s   ~1)Ú
startswithÚreplaceÚreÚsub)Ús© r   ú//usr/lib/python3/dist-packages/hgext/githelp.pyÚconvert,   s    
r   s   githelp|gits
   hg githelpT)ZhelpcategoryZ	helpbasicc                 O   sž   t |ƒdks$t |ƒdkr2|d dkr2t tdƒ¡‚|d dkrJ|dd… }|d }|tvrlt tdƒ| ¡‚|  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   ÚgitcommandsZpager)ÚuiÚrepoÚargsÚkwargsÚcmdr   r   r   Úgithelp6   s    $ÿ
r   c                 C   sf  t |ƒ}i }t |ƒ}zt t |ƒ||d¡}W q4W q tjy0 } zâd|jv rR‚ d|j |jv rtdt |j¡ }n<d|j |jv r–dt |j¡ }nt 	t
dƒt |j¡ ¡‚z| |¡ W nJ ty   t
dƒ}t
d	ƒ}tj	|t |j¡ |t |j¡ d
‚Y n0 |  t
dƒ| ¡ W Y d }~qd }~0 0 qt dd„ |D ƒƒ}tdd„ t |¡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                 S   s   g | ]}t |ƒ‘qS r   ©r   )Ú.0Úxr   r   r   Ú
<listcomp>s   ó    z parseoptions.<locals>.<listcomp>c                 S   s.   g | ]&\}}t |tƒr"|t|ƒfn||f‘qS r   )Ú
isinstanceÚbytesr   )r$   ÚkÚvr   r   r   r&   u   s   ÿ)Úlistr   ÚgetoptZGetoptErrorÚmsgZoptr   Zbytestrr   r   r   ÚremoveÚ	ExceptionÚwarnÚdictÚ	iteritems)r   Ú
cmdoptionsr   ÚoptsÚexÚflagr.   r"   r   r   r   ÚparseoptionsT   sB    

ÿþ*þÿr8   c                   @   sF   e Zd Zdd„ Zdd„ Ze e¡Zdd„ Zdd„ Z	d	d
„ Z
dd„ ZdS )ÚCommandc                 C   s   || _ g | _i | _d S ©N)Únamer   r5   )Úselfr;   r   r   r   Ú__init__   s    zCommand.__init__c                 C   sŽ   d| j  }| jrltt | j¡ƒD ]J\}}|D ]<}|rZt|tƒrDd}nd}||||f 7 }q,|d|f 7 }q,q | jrŠ|d7 }|d | j¡7 }|S )Ns   hg s    %s %ds    %s %ss    %só    )	r;   r5   Úsortedr   r3   r(   Úintr   Újoin)r<   r   r*   Úvaluesr+   Zfmtr   r   r   Ú	__bytes__„   s    

zCommand.__bytes__c                 C   s   | j  |¡ d S r:   )r   Úappend)r<   Úvaluer   r   r   rD   ™   s    zCommand.appendc                 C   s   | j  |¡ d S r:   )r   Úextend)r<   rB   r   r   r   rF   œ   s    zCommand.extendc                 C   s   | j  |g ¡}| |¡ d S r:   )r5   Ú
setdefaultrD   )r<   ÚkeyrE   rB   r   r   r   Ú__setitem__Ÿ   s    zCommand.__setitem__c                 C   s
   t | |ƒS r:   ©Ú
AndCommand©r<   Úotherr   r   r   Ú__and__£   s    zCommand.__and__N)Ú__name__Ú
__module__Ú__qualname__r=   rC   r   Z	strmethodÚ__str__rD   rF   rI   rN   r   r   r   r   r9   ~   s   
r9   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )rK   c                 C   s   || _ || _d S r:   ©ÚleftÚright)r<   rT   rU   r   r   r   r=   ¨   s    zAndCommand.__init__c                 C   s   d| j | jf S )Ns   %s && %srS   )r<   r   r   r   rR   ¬   s    zAndCommand.__str__c                 C   s
   t | |ƒS r:   rJ   rL   r   r   r   rN   ¯   s    zAndCommand.__and__N)rO   rP   rQ   r=   rR   rN   r   r   r   r   rK   §   s   rK   c                 O   sz   ddg}t | ||ƒ\}}| d¡r:|  tdƒ¡ tdƒ}n,tdƒ}| d¡sX| |¡ n|  tdƒ¡ |  t|ƒd	¡ d S )
N)ó   Aó   allNr'   ©ó   pó   patchNr'   rZ   sU   note: Mercurial will commit when complete, as there is no staging area in Mercurial

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

ó   
)r8   ÚgetÚstatusr   r9   rF   r)   ©r   r   r   r   r4   r5   r   r   r   r   Úadd³   s(    þ
ÿÿ

ÿÿra   c                 O   s,   g }t | ||ƒ tdƒ}|  t|ƒd¡ d S )Ns   importr]   ©r8   r9   r_   r)   ©r   r   r   r   r4   r   r   r   r   ÚamÒ   s    rd   c                 O   sv   ddt dfdg}t| ||ƒ\}}tdƒ}| d¡r@| d¡|d< | d¡rX| d¡|d< | |¡ |  t|ƒd¡ d S )	NrY   r'   )r'   ó	   directoryr'   r'   s   import --no-commitó   -pre   s   --prefixr]   )r@   r8   r9   r^   rF   r_   r)   r`   r   r   r   ÚapplyÙ   s    
þ


rg   c                 O   s   |   tdƒ¡ d S )Ns,   see 'hg help bisect' for how to use bisect

©r_   r   ©r   r   r   r   r   r   r   Úbisectê   s    rj   c                 O   sD   g }t | ||ƒ\}}tdƒ}| dd„ |D ƒ¡ |  t|ƒd¡ d S )Ns   annotate -udlc                 S   s   g | ]}t |ƒ‘qS r   r#   )r$   r+   r   r   r   r&   ò   r'   zblame.<locals>.<listcomp>r]   ©r8   r9   rF   r_   r)   r`   r   r   r   Úblameî   s
    rl   c           
      O   s*  g d¢}t | ||ƒ\}}tdƒ}| d¡s4| d¡rF|  tdƒ¡ d S | d¡rttdƒ}|D ]}||d< q\d |d< n¢| d	¡rÒt|ƒd
kr¨t|ƒdkr¢| d
¡}q¶d}nt tdƒ¡‚|d
 }	||d< | 	|	¡ nDt|ƒ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'   )ó   Dro   Nr'   )ó   mó   moveNr'   )ó   Mrr   Nr'   ó   bookmarks   set_upstreams   set_upstream_tos.   Mercurial has no concept of upstream branches
ro   s   stripó   -Brr   r   r   s"   `hg log -T"{activebookmark}" -r .`s   missing newbranch argumentó   -mó   -rr]   )r8   r9   r^   r_   r   r   Úpopr   r   rD   r)   )
r   r   r   r   r4   r5   r   ÚbranchÚoldÚnewr   r   r   ry   ö   s4    



ry   c                 C   sh   t  | |¡rdS |  ¡ }|dkr&|}n|d | }| j |¡}|rFdS | d  ¡ }||v pb| |¡}|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	   ZisrevsymbolÚgetcwdZwvfsÚexistsÚmanifestZhasdir)r   ÚstringÚcwdZrepopathr~   r   Zdidexistr   r   r   Úispath"  s    r‚   c                 O   sä  g d¢}g }d|v r@|  d¡}| ||d d … ¡ |d |… }t| ||ƒ\}}d }|rpt||d ƒrp|| }n|rŒ|d }|dd … | }tdƒ}	| d¡r®|s¦|r®d |	d< | d¡rÈtd	ƒ}	d |	d
< | d¡r*t|ƒdkrútdƒ}	|	 | d¡¡ n.|	 |d ¡ tdƒ}
|
 | d¡¡ |	|
@ }	n¦t|ƒdkr||  t	dƒ¡ td	ƒ}	| d¡rbd |	d
< |rp||	d< |	 |¡ nT|r¤| d¡r˜||	d< n
|	 |¡ n,| d¡rÂtd	ƒ}	d |	d< nt
 t	dƒ¡‚|  t|	ƒd¡ d S )N)©ó   bó   branchr'   r'   )ó   Br…   r'   r'   ©ó   fó   forceNr'   rX   r   r   r   ó   updater‰   s   -CrZ   ó   revertó   -ir…   rt   s5   note: use --no-backup to avoid creating .orig files

rw   ó   --alls   a commit must be specifiedr]   )ÚindexrF   r8   r‚   r9   r^   r   rD   r_   r   r   r   r)   )r   r   r   r   r4   ÚpathsZsepindexr5   Zrevr   Zbookcmdr   r   r   Úcheckout?  sZ    






r   c                 O   s€   g d¢}t | ||ƒ\}}tdƒ}| d¡r2d |d< | d¡rFd |d< n&| d¡rb|  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

r]   ©r8   r9   r^   r_   r   rF   r)   r`   r   r   r   Ú
cherrypick  s    




r™   c                 O   sP   g d¢}t | ||ƒ\}}tdƒ}| d¡r2d |d< | |¡ |  t|ƒd¡ d S )N))rn   rn   Nr'   r‡   )ó   xrš   Nr'   s   purgerš   r   r]   )r8   r9   r^   rF   r_   r)   r`   r   r   r   Úclean–  s    

r›   c                 O   sÔ   g d¢}t | ||ƒ\}}t|ƒdkr2t tdƒ¡‚tdƒ}| |d ¡ t|ƒdkrb| |d ¡ | d¡r„d |d< |  tdƒ¡ n| d	¡r–d |d< | d
¡rÀtdƒ}| | d
¡¡ ||@ }|  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Š   r]   )
r8   r   r   r   r   r9   rD   r^   r_   r)   )r   r   r   r   r4   r5   r   Zcocmdr   r   r   Úclone¦  s,    
ÿÿ

rŸ   c                 O   s  g d¢}t | ||ƒ\}}tdƒ}| d¡r2tdƒ}| d¡rX| d¡rPtdƒ}nd |d< | d¡rp| d¡|d	< | d
¡rŽd| d
¡f |d< | d¡r¦|  tdƒ¡ | d¡r¾| d¡|d< | d¡rÖ| d¡|d< | d¡rî| d¡|d< | |¡ |  t|ƒd¡ d S )N)	©ó   arW   Nr'   )rq   ó   messager'   r'   rX   )ó   Cs   reuse-messager'   r'   )ó   Fó   filer'   r'   )r'   ó   authorr'   r'   )r'   ó   dater'   r'   )r'   ó   amendNr'   )r'   s   no-editNr'   ó   commitrZ   r[   r¨   s   no_edits   --amends   reuse_messages   -Mr¢   s   '%s'rv   rW   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§   ó   -dr]   r˜   r`   r   r   r   ÚcommitÉ  s6    






ÿÿ



r¬   c                 O   s   |   tdƒ¡ d S )NsX   this command has been deprecated in the git project, thus isn't supported by this tool

)r1   r   ri   r   r   r   Ú
deprecatedþ  s
    ÿÿr­   c              	   O   sª   g d¢}t | ||ƒ\}}tdƒ}| d¡r8|  tdƒ¡ | d¡rJd |d< t|ƒD ]B}| |¡ z| |¡ ||d< W qR ty’   | 	|¡ Y qR0 qR|  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	   --reverserw   r]   )r8   r9   r^   r_   r   r,   r/   Zrevsr0   rD   r)   )r   r   r   r   r4   r5   r   Úar   r   r   Údiff  s&    
ÿÿ


r³   c                 O   s   |   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.
rh   ri   r   r   r   Údifftool'  s
    ÿÿr´   c                 O   s–   ddg}t | ||ƒ\}}tdƒ}t|ƒdkr‚| |d ¡ t|ƒdkr‚|  tdƒ¡ |dd … D ] }||jv rx||d< q`||d< q`|  t|ƒd	¡ d S )
N©r'   rW   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.

ru   rw   r]   ©r8   r9   r   rD   r_   r   Ú
_bookmarksr)   ©r   r   r   r   r4   r5   r   r+   r   r   r   Úfetch5  s$    þÿÿ


r»   c                 O   s:   g }t | ||ƒ\}}tdƒ}| |¡ |  t|ƒd¡ d S )Nó   grepr]   rk   r`   r   r   r   ÚgrepR  s
    
r½   c                 O   sJ   g }t | ||ƒ\}}tdƒ}t|ƒdkr6| |d ¡ |  t|ƒd¡ d S )Nó   initr   r]   ©r8   r9   r   rD   r_   r)   r`   r   r   r   Úinit_  s    rÀ   c                 O   s¬  g d¢}t | ||ƒ\}}| d¡p*| d¡}|rVtdƒ}||d< |  dt|ƒ ¡ 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¡rJ| dd¡}d|v r4|  tdƒ¡ d|d< n|  tdƒ¡ d|d< t|ƒdkr˜d|d v rŽ|d  d¡\}	}
d |	|
f |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'   rX   )ó   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   -GrZ   rf   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'rw   r]   )	r8   r^   r9   r_   r)   r   r   ÚsplitrF   )r   r   r   r   r4   r5   Zgrep_patr   ÚformatZsinceZuntilr   r   r   Úlogk  sh    ÿÿÿÿ




$
ÿÿ
ÿÿ
rÐ   c                 O   sú   g d¢}t | ||ƒ\}}| d¡s@| d¡s@| d¡s@| d¡r’tdƒ}| d¡rZd |d< | d¡rld |d< | d¡r~d |d	< | d¡ršd |d
< ntdƒ}| d¡r²|  tdƒ¡ | d¡rÄd |d< | d¡ |D ]}t |¡|d< qÒ|  t|ƒd¡ d S )N))ó   cr®   Nr'   )rn   ó   deletedNr'   )rq   ó   modifiedNr'   )ó   oó   othersNr'   )ó   ió   ignoredNr'   )ó   só   stageNr'   )ó   zó   _zeroNr'   rÓ   rÒ   rÕ   r×   ó   statusr«   rv   s   -orŒ   s   filesrÙ   s>   note: Mercurial doesn't have a staging area, ignoring --stage
rÛ   s   -0r   s   -Ir]   )	r8   r^   r9   r_   r   rD   r
   Z
shellquoter)   )r   r   r   r   r4   r5   r   Zincluder   r   r   Úlsfiles»  s@    	ÿþýü





ÿÿ

rÝ   c                 O   sR   g }t | ||ƒ\}}tdƒ}t|ƒdkr>| |t|ƒd  ¡ |  t|ƒd¡ d S )Nó   merger   r   r]   r¿   r`   r   r   r   Úmergeè  s    rß   c                 O   sh   g }t | ||ƒ\}}t|ƒdkr(ddg}td|d |d f ƒ}|  tdƒtdƒ¡ |  t|ƒd	¡ d S )
Né   rV   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')

r]   )r8   r   r9   r_   r   r)   r`   r   r   r   Ú	mergebaseô  s    ÿþrá   c                 O   sN   g }t | ||ƒ\}}tdƒ}t|ƒdkr0d |d< | |¡ |  t|ƒd¡ d S )Ns   resolver   r   r]   )r8   r9   r   rF   r_   r)   r`   r   r   r   Ú	mergetool  s    
râ   c                 O   sb   ddg}t | ||ƒ\}}tdƒ}| |¡ | d¡r<d |d< | d¡rNd |d< |  t|ƒd¡ d S )	Nr‡   ©r   s   dry-runNr'   ó   mvr‰   ó   -fó   dry_runó   -nr]   ©r8   r9   rF   r^   r_   r)   r`   r   r   r   Úmv  s    þ


ré   c                 O   sž   g d¢}t | ||ƒ\}}tdƒ}d |d< t|ƒdkrŠ| |d ¡ t|ƒdkrŠ|  tdƒ¡ |dd … D ] }||jv r€||d< qh||d< qh|  t|ƒd	¡ d S )
N)rµ   r‡   )ó   ró   rebaseNr'   r¶   s   --rebaser   r   r·   ru   rw   r]   r¸   rº   r   r   r   Úpull$  s"    ÿÿ


rì   c                 O   s¨   ddg}t | ||ƒ\}}tdƒ}t|ƒdkr‚| |d ¡ t|ƒdkr‚|  tdƒ¡ |dd … D ] }||jv rx||d< q`||d< q`| 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.

ru   rw   r‰   rå   r]   )	r8   r9   r   rD   r_   r   r¹   r^   r)   rº   r   r   r   ÚpushC  s(    þÿÿ



rî   c                 O   sŠ  g d¢}t | ||ƒ\}}| d¡rf|  tdƒ¡ tdƒ}t|ƒdkrR|  tdƒ¡ |  t|ƒd¡ d S | d¡rˆt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 	tdƒ¡‚dt|d ƒt|d ƒf |d< nNt|ƒdkrHt|d ƒ|d< n.t|ƒdkrvt|d ƒ|d< t|d ƒ|d< |  t|ƒd¡ d S )N)rµ   )rÖ   ó   interactiveNr'   )r'   ó   ontor'   r'   r“   r‘   )r'   ó   skipNr'   rï   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

r]   rñ   s   revert --all -r .rë   r’   r—   r”   s   --abortrð   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)
r8   r^   r_   r   r9   r   r)   r   r   r   r`   r   r   r   Úrebasec  sR    
ÿÿÿÿ

ÿÿ"rò   c                 O   sl   dg}t | ||ƒ\}}tdƒ}| d¡r0d |d< t|ƒdkrJ| |d ¡ |  t|ƒd¡ |  tdƒ¡ d S )Nrµ   s   journalrW   r   r   s   

sH   note: in hg commits can be deleted from repo but we always have backups
)r8   r9   r^   r   rD   r_   r)   r   r`   r   r   r   Úreflog¡  s    ÿ
ÿÿró   c           	      O   s¢   g d¢}t | ||ƒ\}}tt|ƒdkr.|d ndƒ}| d¡}| d¡rV|  tdƒ¡ | d¡rn|  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   --cleanr]   )	r8   r   r   r^   r_   r   r9   rD   r)   )	r   r   r   r   r4   r5   r¬   Zhardr   r   r   r   Úreset¶  s*    

ÿÿ
ÿÿ

r÷   c                 O   s\   g }t | ||ƒ\}}t|ƒdkr.|  tdƒ¡ tdƒ}|rH| |d ¡ |  t|ƒd¡ d S )Nr   s;   note: hg backout doesn't support multiple commits at once

s   backoutr   r]   )r8   r   r_   r   r9   rD   r)   r`   r   r   r   ÚrevertÙ  s    ÿÿrø   c                 O   sp   ddg}t | ||ƒ\}}| d¡s,| d¡r^tdƒ}| d¡rL|  tdƒ¡ |  t|ƒd¡ n|  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

r]   s5   note: see hg help revset for how to refer to commits
)r8   r^   r9   r_   r   r)   r`   r   r   r   Úrevparseì  s    þ
rù   c                 O   sb   ddg}t | ||ƒ\}}tdƒ}| |¡ | d¡r<d |d< | d¡rNd |d< |  t|ƒd¡ d S )	Nr‡   rã   ó   rmr‰   rå   ræ   rç   r]   rè   r`   r   r   r   Úrmü  s    þ


rû   c                 O   s  ddddt dfg}t| ||ƒ\}}| d¡rj| d¡dkrLtd	ƒ}d
|d< qðtdƒ}| d¡ | d¡ n†t|ƒdkrÀt||d ƒrŽtdƒ}ntdƒ}| |¡ | d¡rð| d|d f ¡ n0| d¡rètdƒ}| d|d f ¡ 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=%dr]   )
r@   r8   r^   r9   rD   r   r‚   rF   r_   r)   r`   r   r   r   Úshow  s0    
ý






rý   c                 O   s°  dg}t | ||ƒ\}}tdƒ}t|ƒdkr2|d nd }|dkr\d |d< | d¡rXd |d< n@|dkrž| d¡rxd |d< nd |d	< t|ƒd
krš| |d
 ¡  nþ|dkr°d |d< nì|dkrèd |d< t|ƒd
krÜ| |d
 ¡ n
| d¡ n´|dksú|dkr2tdƒ}t|ƒd
kr| |d
 ¡ |dkrœd |d< nj|dksF|dkrX|  tdƒ¡ d S t|ƒdkrœ|d dkr‚|d |d< nt|ƒd
krœ|d
 |d< |  t|ƒd¡ d S )NrX   s   shelver   ó   listrª   rZ   rf   ó   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   --namer]   )r8   r9   r   r^   rD   r_   r   r)   )r   r   r   r   r4   r5   r   Úactionr   r   r   Ústash/  sR    ÿ





ÿÿr  c                 O   sN   dg}t | ||ƒ\}}tdƒ}| |¡ | d¡r:d |d< |  t|ƒd¡ d S )N)r'   r×   Nr'   rÜ   r×   rŒ   r]   rè   r`   r   r   r   r_   c  s    ÿ

r_   c                 O   s\   |st  tdƒ¡‚|d }|tvr4t  tdƒ| ¡‚|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   Zsvncmdr   r   r   Úsvnr  s    r  c                 O   s,   g }t | ||ƒ tdƒ}|  t|ƒd¡ d S )Nrí   r]   rb   rc   r   r   r   Ú
svndcommit}  s    r  c                 O   s6   g }t | ||ƒ tdƒ}| d¡ |  t|ƒd¡ d S )Nr¶   ó   default-pushr]   ©r8   r9   rD   r_   r)   rc   r   r   r   Úsvnfetch†  s
    
r  c                 O   sN   g }t | ||ƒ\}}|s&t tdƒ¡‚tdƒ}|d |d< |  t|ƒd¡ d S )Ns   missing find-rev argumentrË   r   rw   r]   )r8   r   r   r   r9   r_   r)   r`   r   r   r   Ú
svnfindrev  s    r	  c                 O   sR   dg}t | ||ƒ tdƒ}| d¡ tdƒ}| d¡ ||@ }|  t|ƒd¡ d S )N)ó   ls   localNr'   r¶   r  rë   s   tipr]   r  )r   r   r   r   r4   ZpullcmdZ	rebasecmdr   r   r   r   Ú	svnrebase  s    ÿ

r  c                 O   s¤   g d¢}t | ||ƒ\}}| d¡r,tdƒ}ndtdƒ}|sFt tdƒ¡‚| |d ¡ t|ƒdkrl|d |d< | d	¡r~d |d
< | d¡rd |d< |  t	|ƒd¡ d S )N)r‡   )r
  rþ   Nr'   rm   rþ   s   tagsó   tags   missing tag argumentr   r   rw   ro   s   --remover‰   rå   r]   )
r8   r^   r9   r   r   r   rD   r   r_   r)   r`   r   r   r   Útag­  s    



r  )$r\   s   amr   s   bisects   blamer…   s   checkouts   cherry-picks   cleanrž   r©   r±   s   difftooló   fetchr¼   r¾   rË   s   ls-filesrÞ   s
   merge-bases	   mergetoolrä   r¶   rí   rë   s   reflogs   resetr‹   s	   rev-parserú   rÿ   s   stashrÜ   s   svnr  s   whatchanged)s   dcommitr  s   find-revrë   )EÚ__doc__Z
__future__r   r-   r   Zmercurial.i18nr   Z	mercurialr   r   r   r   r   r	   Zmercurial.utilsr
   Z
testedwithZcmdtableZcommandr   ZCATEGORY_HELPr   r8   Úobjectr9   rK   ra   rd   rg   rj   rl   ry   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û   rý   r  r_   r  r  r  r	  r  r  r   r  r   r   r   r   Ú<module>   sÐ    

û
*),@#5	 P- >#!4	
Ü(ü