a
    %0É_  ã                   @   sÖ   d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	m
Z
mZmZmZmZmZmZmZmZ ddlmZ i Ze e¡ZdZed	d
ddedƒedƒfdddedƒfge
j edƒejdddd„ ƒZdd„ Zdd„ ZdS )z=command to split a changeset into smaller ones (EXPERIMENTAL)é    )Úabsolute_import)Ú_)ÚnullidÚshort)
Ú	bookmarksÚcmdutilÚcommandsÚerrorÚhgÚpycompatÚ	registrarÚ
revsetlangÚrewriteutilÚscmutilé   )Úrebases   ships-with-hg-coreó   splitó   ró   revó    s   revision to splits   REVó   rebaseTs   rebase descendants after splits!   hg split [--no-rebase] [[-r] REV])ZhelpcategoryZ	helpbasicc                 O   s°  t  |¡}g }| d¡r(| | d¡¡ | |¡ | ¡ ^ | ¡ 2 | d¡}t 	||pfdg¡}t
|ƒdkr„t tdƒ¡‚| ¡ }|| }|du s¨| ¡ tkrÞ|  tdƒ¡ W d  ƒ W d  ƒ W d  ƒ dS | ¡ du røt tdƒ¡‚| d	¡r*t| d
||¡ƒ}t| d||¡ƒ}	ng }	t ||g|	 d¡ t
| ¡ ƒdkrbt tdƒ¡‚t |¡ |j}
|
r–|j|
 | ¡ kr–t |¡ |d  ¡ }d}zNt| ||||ƒ}W |du sÒ|| ¡ krâtj||dd |
r2t  ||
¡ n<|du s|| ¡ krtj||dd |
r0t  ||
¡ 0 |	rL|rLt!| ||	|ƒ W d  ƒ n1 sb0    Y  W d  ƒ n1 s‚0    Y  W d  ƒ n1 s¢0    Y  dS )af  split a changeset into smaller ones

    Repeatedly prompt changes and commit message for new changesets until there
    is nothing left in the original changeset.

    If --rev was not given, split the working directory parent.

    By default, rebase connected non-obsoleted descendants onto the new
    changeset. Use --no-rebase to avoid the rebase.
    r   r   ó   .r   s   cannot split multiple revisionsNs   nothing to split
s   cannot split working directoryr   s   (%d::) - (%d)s   %ld - (%ld & obsolete())::s   cannot split a merge changesetF©Z
show_stats)"r   ZbyteskwargsÚgetÚappendÚextendZwlockÚlockZtransactionr   ZrevrangeÚlenr	   ÚAbortr   ÚfirstÚnoder   ÚstatusÚlistÚrevsr   ZprecheckÚparentsr   ZbailifchangedZ_activebookmarkZ
_bookmarksr   Z
deactivateÚdosplitr
   ÚcleanZactivateÚdorebase)ÚuiÚrepor#   ÚoptsZrevlistÚtrÚrevÚctxZdescendantsZtorebaseZbnameZwnodeÚtop© r/   ú-/usr/lib/python3/dist-packages/hgext/split.pyÚsplit-   sZ    


&(ÿÿ

ýr1   c                 C   sr  g }|  ¡ |j ¡ kr*tj||  ¡ dd |j ¡   t || ¡ ¡ W d   ƒ n1 sZ0    Y  dd„ }||ƒr2|rÖtdƒt	|  ¡ ƒ }|D ]4}| 
¡  dd¡d }	|td	ƒt	|  ¡ ƒ|	f 7 }q’|td
ƒ7 }ntdƒt	|  ¡ ƒ }| dd|| 
¡  dœ¡ tj| |fi t |¡¤Ž |d }
| |
¡ ql|sFt tdƒ¡‚tj||  ¡ dd„ |D ƒiddd |d S )NFr   c                 S   s    |   ¡ }t|j|j|j|jfƒS )N)r!   ÚanyZmodifiedZaddedZremovedZdeleted)r)   Ústr/   r/   r0   Ú
incomplete‡   s    zdosplit.<locals>.incompletes1   HG: Splitting %s. So far it has been split into:
ó   
r   r   s   HG: - %s: %s
s7   HG: Write commit message for the next split changeset.
sF   HG: Splitting %s. Write commit message for the first split changeset.
T)s   edits   interactives   messager   s   cannot split an empty revisionc                 S   s   g | ]}|  ¡ ‘qS r/   )r    )Ú.0Úcr/   r/   r0   Ú
<listcomp>¬   r   zdosplit.<locals>.<listcomp>r   )Z	operationZfixphaseéÿÿÿÿ)r    ZdirstateZp1r
   r&   Zparentchanger   Zmovedirstater   r   Zdescriptionr1   Úupdater   Zcommitr   Z	strkwargsr   r	   r   Zcleanupnodes)r(   r)   r+   r-   r*   Z	committedr4   Úheaderr7   Ú	firstlineZnewctxr/   r/   r0   r%   }   sT    .
ÿ
þÿÿ
ý
ýÿür%   c              	   C   s,   t j | |t d|¡gt d| ¡ ¡d d S )Ns   %lds   %d)r,   Údest)r   r   Z
formatspecr,   )r(   r)   ÚsrcZdestctxr/   r/   r0   r'   ´   s    ür'   N)Ú__doc__Z
__future__r   Zmercurial.i18nr   Zmercurial.noder   r   Z	mercurialr   r   r   r	   r
   r   r   r   r   r   Ú r   ZcmdtableZcommandZ
testedwithZcommitopts2ZCATEGORY_CHANGE_MANAGEMENTr1   r%   r'   r/   r/   r/   r0   Ú<module>   s,   0
þü÷
E7