o ]Lb@sdZddlmZddlmZddlmZmZddlm Z m Z m Z m Z m Z mZmZmZmZmZmZmZddlmZiZeeZdZed d d d ed edfd ddedfge jedejddddZddZddZdS)z=command to split a changeset into smaller ones (EXPERIMENTAL))absolute_import)_)nullrevshort) bookmarkscmdutilcommandserrorhg logcmdutilpycompat registrar revsetlang rewriteutilscmutilutil)rebasesships-with-hg-coresplitrrevsrevision to splitsREVrebaseTsrebase descendants after splits!hg split [--no-rebase] [[-r] REV]) helpcategory helpbasicc Ost|}g}|dr||d|||5||d}t |t ||p7dg}t |dkrFt td|}|dusR|tkrn|td WdWdWddS||}|durt td|d rt|d ||}t|d ||} ng} t||g| dt |dkrt td t||j} | r|j| |krt||d} d} z$t|||||} W| dus| |krt j!|| d d| rt"|| n| dus| |kr t j!|| d d| rt"|| ww| r#| r#t#||| | Wdn 1s.wYWdn1s>wYWddSWddS1sWwYdS)afsplit 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. rr.rscannot split multiple revisionsNsnothing to split scannot split working directoryrs (%d::) - (%d)s%ld - (%ld & obsolete())::scannot split a merge changesetF show_stats)$r byteskwargsgetappendextendwlocklock transactionracceptinterventionr revrangelenr InputErrorrfirstrstatusnodelistrevsrprecheckparentsr bailifchanged_activebookmark _bookmarksr deactivatedosplitr cleanactivatedorebase) uirepor-optsrevlisttrrevctx descendantstorebasebnamewnodetoprD-/usr/lib/python3/dist-packages/hgext/split.pysplit/sn              TrFc Csg}||jkrtj||dd|jt||Wdn1s-wYdd}||r|rytdt |}| ddid|D]}t ||d} |td | 7}qQWdn1smwY|td 7}n td t |}| d d ||d |d} tj||fit||d} | | kr|| ||s:|sttdt|dks|d|krtj||dd|Didd d|dS)NFrcSs |}t|j|j|j|jfS)N)r*anymodifiedaddedremoveddeleted)r9strDrDrE incompleteszdosplit..incompletes1HG: Splitting %s. So far it has been split into: )s templatealiass label(l,x)xrs HG: - %s s7HG: Write commit message for the next split changeset. sFHG: Splitting %s. Write commit message for the first split changeset. T)sedits interactivesmessagerscannot split an empty revisionrrcSsg|]}|qSrD)r+).0crDrDrE szdosplit..) operationfixphase)r+dirstatep1r r5 parentchanger movedirstaterrconfigoverriderformat_changeset_summaryupdate descriptionrcommitr strkwargsr r r(r' cleanupnodes) r8r9r<r>r: committedrMheaderrPsummaryorigctxnewctxrDrDrEr4sh     $ r4c Cs,tj||td|gtd|ddS)Ns%lds%d)r=dest)rr formatspecr=)r8r9srcdestctxrDrDrEr7s   r7N)__doc__ __future__rmercurial.i18nrmercurial.noderr mercurialrrrr r r r r rrrrrcmdtablecommand testedwith commitopts2CATEGORY_CHANGE_MANAGEMENTrFr4r7rDrDrDrEs.  8   J C