^c^ N ddlZddlZddlZddlZddlmZddlmZm Z m Z ddl m Z m Z mZddlmZddlmZmZmZmZmZmZmZmZmZmZmZm Z!m"Z"m#Z#m$Z$m%Z%m&Z&m Z m'Z'm(Z(m)Z)m*Z*m+Z,m-Z-m.Z.m/Z/m0Z0m1Z2ddl3m4Z4m5Z5dd l6m7Z8e j9rdd l:m;Z;mZ>d d ded fgZ?dddedfgZ@dddededfdddededfdddedfgZAddgededfddgededfgZBd d!ded"ed#fd$d%ded&ed'fgZCd(d)ded*ed+fd,d-ded.ed/fgZDd0d1ded2fd3d4ded5fgZEd6d7ded8ed9fgZFdd:ded;ed<fd6d7ded8ed9fgZGd=d>ded?fd@dAdedBfd$dCdedDedEfdFdGdedHfddIdedJfdKdLdedMfgeGzZHdNdOdedPfd@dAdedQfddRdedSfddTdedUfgZIdVdWdedXfdYdZded[fd\d]ded^fd_d`dedafgZJddbdedcfd=dddedefddfdedgfgeJzd3dhdediedEfddIdedJfddjdedkedlfgzZKdmdndedoedpfgZLdqdrdedsedtfgZMdudvdedwfgZNdxdydzed{fd d|dzed}fdd~dedfgZOdZPdZQdZRdZSdZTdZUdZVdZWdZXdZYddZZddZ[dZ\GddZ]dZ^dZ_ej`dGddZadZbddZcddZddZedZfddZgdZhdZi ddZjdZkdZlddZmddZnddZodZpdZqGddZrddZsddZtdZuddZgZvgZwiZxiZydZzgZ{iZ|dZ}dZ~dZdZ ddZddZddZdZdZdZdZdZ ddZdZdZdZdZdZdZddZ dd„ZdÄZdĄZdńZddƄZdDŽZdȄZ ddɄZe0jZe0jZe0jZddʄZd˄Zd̄Zd̈́Zd΄ZdτZdЄZdфZd҄ZdS)N)_)hexnullrevshort)getattropensetattr)attr) bookmarks changelogcopiescrecord dirstateguardencodingerror formatter logcmdutilmatchmerge mergestate mergeutilobsoletepatchpathutilphasespycompatrepairrevlog rewriteutilscmutilstate subrepoutil templatekw templaterutilvfs)dateutil stringutil) constants)AnyDictnsdry-runs)do not perform actions, just print outputsconfirmsask before applying actionsessshsspecify ssh command to usesCMDs remotecmds,specify hg command to run on the remote sidesinsecures>do not verify server certificate (ignoring web.cacerts config)Isincludes)include names matching the given patternssPATTERNXsexcludes)exclude names matching the given patternsmmessagesuse text as commit messagesTEXTllogfilesread commit message from filesFILEddates(record the specified date as commit datesDATEuusers&record the specified user as committersUSERDs currentdates&record the current date as commit dateUs currentusers$record the current user as committerTstemplatesdisplay with templatesTEMPLATEsstyles,display using template map file (DEPRECATED)sSTYLEpspatchs show patchgsgitsuse git extended diff formatslimits!limit number of changes displayedsNUMMs no-mergessdo not show mergessstats(output diffstat-style summary of changesGsgraphsshow the revision DAGastextstreat all files as texts0use git extended diff format (DEFAULT: diff.git)sbinarys+generate binary diffs in git mode (default)snodatessomit dates from diff headerswsignore-all-spaces'ignore white space when comparing linesbsignore-space-changes+ignore changes in the amount of white spaceBsignore-blank-liness(ignore changes whose lines are all blankZsignore-space-at-eols#ignore changes in whitespace at EOLsnoprefixs&omit a/ and b/ prefixes from filenamess show-functions>show which function each change is in (DEFAULT: diff.showfunc)sreverses&produce a diff that undoes the changessunifieds"number of lines of context to showsroots&produce diffs relative to subdirectorysDIRtstoolsspecify merge toolsTOOLs similaritys-guess renamed files by similarity (0<=s<=100)s SIMILARITYSsubrepossrecurse into subrepositoriesc changelogFsopen changelogmanifests open manifestdirsopen directory manifests:^HG: ------------------------ >8 ------------------------$cd}d}|D]S}||r<|r8tjtd||||fz|}T|S)zabort if more than one of the arguments are in opts Returns the unique argument or None if none of them were specified. cRtj|ddS)N_-)rsysbytesreplacenames 3/usr/lib/python3/dist-packages/mercurial/cmdutil.py to_displayz)check_at_most_one_arg..to_displays# &&..tT:::r.Ns!cannot specify both --%s and --%s)getr InputErrorr)optsargsrXpreviousxs rWcheck_at_most_one_argr_s ;;;H  88A;;  &:;;!z(++ZZ]];<H Or.c2|D]}t|||dS)zabort if the first argument is given along with any of the others Unlike check_at_most_one_arg(), `others` are not mutually exclusive among themselves, and they're passed as a single collection. N)r_)r[firstothersothers rWcheck_incompatible_argumentsrd%s2 22dE5111122r.ct|ddt|ddd}|drdtjz|d<n[|dsF|ddr0|ddtjz|d<d }|dr||d<|S) zmodify commit options dict to handle related options The return value indicates that ``rewrite.update-timestamp`` is the reason the ``date`` option is set. date currentdateuser currentuserFs%d %drewritesupdate-timestampNT)r_rYr(makedate configboolusername)uir[ datemaydiffers rWresolve_commit_optionsrp/s $ 666$ 666M xx ("3"5"55V HHV   MM*&9 : : HH] # # +("3"5"55V   xx %{{}}V r.c|d}|sdSt|dkr!tjt dd|vr!tjt ddS)z!make sure note is of valid formatnoteNs*cannot store a note of more than 255 bytes snote cannot contain a newline)rYlenrrZr)r[rrs rWcheck_note_sizervJsu 88F  D  4yy3q!NOOPPP }}q!ABBCCC}r.cRtjtjf}t ||SN) crecordmoduihunkr recordhunk isinstance)r^ hunkclassess rWishunkr~Ws"$e&67K a % %%r.cRtjtjf}t ||Srx)ryuiheaderrheaderr|)r^ headerclassess rWisheaderr\s!(%,7M a ' ''r.ctt}t}|D]}t|r|rq|||t||hz ||fSrx)setr isnewfileaddfilenameupdatefiles)chunksnewlyaddedandmodifiedfiles alsorestorechunks rWnewandmodifiedras!$%%KHH E?? Hu00 H & * *5>>+;+; < < <   s5;;==11U^^5E5E4FF G G G %{ 22r.c|d}t|}g}|D]J}d|vrD|dd}||vr*||||K|||S)N|rRr.)splitrrTrappendextend)cmd base_aliases all_aliases extra_aliasesalias folded_aliass rW parsealiasesrks99T??Ll##KM33 5== ==s33L;.. ---$$\222 &&& r.cLd|jfd}t|d|S)Nc|dd}tjfdD]\}}||||zdS)Nlabelr.cSrx)r\srWz8setupwrapcolorwrite..wrapwrite..}sr.r)popr difflabel)origr\kwrrls ` rW wrapwritez&setupwrapcolorwrite..wrapwrite{s_w$$ 55 ) )HE1 Deai ( ( ( ( ( ) )r.cg|Ri|Srxr)r\kwargsoldwriters rWwrapz!setupwrapcolorwrite..wraps#y3D333F333r.write)rr )rnrrrs @@rWsetupwrapcolorwriterysS))) xH444444 B Or.cn |rE|r tj|tj}n tj}tj||||SnV#tj$rD}|d|z|tdYd}~nd}~wwxYwtj||||S)N%s sfalling back to text mode ) ry testdecoratortestchunkselector chunkselector filterpatch fallbackerrorwarnrr)rn originalhunks usecursestestfiler operationrecordfnes rW filterchunksrs3   4%3j:&3)M8Y    #333 !  011222222223  Ry A AAsAA B:BBctj|}|dd}t|} t ||||||\}}||_n #||_wxYw||fS)aPrompts the user to filter the originalhunks and return a list of selected hunks. *operation* is used for to build ui messages to indicate the user what kind of filtering they are doing: reverting, committing, shelving, etc. (see patch.filterpatch). experimentals crecordtest)ry checkcursesconfigrrr) rnrrrrrr newchunksnewoptss rW recordfilterrs&r**Iyy.99H"2&&H)  y(E9   78 g s A A#c^ tj|}|s8|rtd|z}ntd}t j||ds|fd fd} t||| |S)Ns)running non-interactively, use %s insteadsrunning non-interactivelyr9c *+,|dstdd}t|dk}|r!t jt dd}|d}|stj||} | } d di} j | d 5tj tj| jtj| jtj| jtj| jtj| jtj| jtj| j} t-jj || |d \} } }| D]B}|| vr<||d}t j|C dddn #1swxYwY|s||| |t9j||dd d}d|_d|_d|_ t9j!| |}t9j"|}tj#d0} /|||\}}nq#tj$$r)}t jt d|zd}~wtj%$r)}t j&t d|zd}~wwxYw|'|tQ|\,}tS*|D]E}tU|r4*'tS|+F| j| jz| jz}*fd|D}|s$| t ddStS| j+-r|}n+,fd|D}i}|r@j,-d} t]j/|n#t`$rYnwxYw |D]}tcj2t\j34|dz|\}} t]j5||6d|| fztoj89|| d| ||<tu}!|D]/}"|";}#|#|vr|"<|!0|!=}$|!>d|ddrt~j@t~jAz|!Bz}%|C|%ddj3 }&|!Dd|!<|&|!>dfd!,D|rStjEtS|F|z}'tjHd|'"|$r |6d#|6|!It9jJ||!dd$nu#tj$$r+}t jtcjK|d}~wtj%$r+}t j&tcjK|d}~wwxYw~!fd%|D}.|g|RitcjL| jM}(|ND]\})} |6d&| |)fz|(O|)jPrE|(Q5|(R|)ddd'dddn #1swxYwYtoj8| 9|)dt]jS| |rt]jT|SS#t$rYSwxYw# jM}(|ND]\})} |6d&| |)fz|(O|)jPrE|(Q5|(R|)ddd'dddn #1swxYwYtoj8| 9|)dt]jS| |rt]jT|ww#t$rYwwxYwxYw)(a%This is generic record driver. Its job is to interactively filter local changes, and accordingly prepare working directory into a state in which the job can be delegated to a non-interactive commit command such as 'commit' or 'qrefresh'. After the actual job is done by non-interactive command, the working directory is restored to its original state. In the end we'll record interesting changes, and everything else will be left in place, so the user can continue working. sinteractive-unshelveT)commitNrs9cannot partially commit a merge (use "hg commit" instead)c4tjd||fz)Ns%s: %s)rrZ)fmsgs rWfailz*dorecord..recordfunc..fails"93x#788 8r.forcer)uiscommitsubrepossrecord)forcecommandsscommit.interactive.)r[ whitespacesection configprefix)changesr[error parsing patch: %serror applying patch: %scg|]}|v| Srr).0r contenderss rW z0dorecord..recordfunc..s:::!!z//A///r.sno changes to record rc$g|] }|vs|v | Srr)rrmodifiedrs rWrz0dorecord..recordfunc..*s7==A)C$C$C$C$C$Cr.srecord-backups.)prefixdirsbackup %r as %r copystatsreviewFr.sdiff)actionrepopathc^g|])}tj|*Sr)osunlinkwjoinrcrepos rWrz0dorecord..recordfunc..Ws- J J J!RYtzz!}} % % J J Jr.)matchersapplying patch eolmodec:g|]}|Sr)r)rnfrs rWrz0dorecord..recordfunc..ns#:::2 2:::r.srestoring %r to %r  p1_tracked wc_trackedpossibly_dirty)VrYcheckunfinishedruparentsrrZrmatchmodbadmatchstatusrnconfigoverrider!copymodcopyraddedremoveddeletedunknownignoredcleanr# precommitsub dirtyreasonAbortcheckcommitpatternsrdifffeatureoptsnodatesgitshowfuncdiff parsepatchrPatchParseErrorPatchApplicationError StateErrorrrrrrr'joinrmkdirFileExistsErrorrmkstemppathbasenameclosedebugr&copyfilerstringiorrtellseekry diffhelptext patchhelptextreadedittruncate matchfileskeysmergemod revert_togetvalue internalpatchbytestr strkwargsdirstateitems get_entry maybe_clean parentchange update_filerrmdirOSError)1rnrmessagerr[wctxrrrr overrides tmpstatussubs commitsubsnewstatesrdiffopts originaldifforiginal_headersrrerrrhchangednewfilestobackupbackups backupdirrfdtmpnamefprfnamedopatch patchtext reviewedpatchmr)realnamerrr backupall commitfuncfilterfnpatss1 ` @@@rW recordfunczdorecord..recordfuncs xx/00 / D . . . .DzDLLNN##a'  "1  9 9 9"" 3%eT22E5))/6 W # #Iy 9 9 3 3 V_-- V\** V^,, V^,, V^,, V^,, V\**I*5)>y%t*** &D*h 3 3 ??"&((1++"9"9$"?"?K+k222# 3! 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3* @  $ $T5&$ ? ? ?( /       z$XFFF  +L99 d4j$// I&hr+;UCCOFGG$ H H H"1%?#@#@3#FGG G* I I I"1%@#A#AC#GHH H I G3A2H2H/"KUU  2 2A{{ 2!!#aggii..111/FL06>A::::w:::  IIa122 3 3 31v''  HH!H    &788I ####"    ]  % %&.7++A..59 G -G <=== djjmmWtDDDD$ B   G##GGBKKKggiiG GGAJJJxx 5)) + ./ggii  !#s7TY!(!!  A''' J J J J/I J J J J :&tS-@-@;-NOO"4:q9999 BBHH0111HHR[[]]+++'D"aFFFFF,BBB*8+;C+@+@AAA2BBB*8+;C+@+@AAAB;::::::H:b$NNNNX5G5M5MNN! =)0''%HgHH47JJKKK))(33?&2244$00 (+/+//3 1M'4::h+?+?$OOOOIg&&&&(HY''''(    A! =)0''%HgHH47JJKKK))(33?&2244$00 (+/+//3 1M'4::h+?+?$OOOOIg&&&&(HY''''(    s  D#HHH*J;;L) $K..L)$L$$L);Q QQ!H a%,A[a%\4&[77\4 &\//\440a%%A(a _3' a3_7 7a:_7 ;Aa a"!a"%e''A(ec5 ) e5c9 9e<c9 =Aee' e$!e'#e$$e'c~|5|||||cdddS#1swxYwYdSrx)wlock)rnrr1rr[rPs rW recordinwlockzdorecord..recordinwlocks ZZ\\ > >:b$== > > > > > > > > > > > > > > > > > >s 266) r byteskwargs interactiverrrZrYrmr) rnrrM cmdsuggestrLrNrOr[rrSrPs ` ``` @rWdorecordrWs   % %D >>  $  2@AAJNCC011Cs### 88G   TTTTTTTTl>>>>> "dM4 6 66r.c0eZdZdZdZdZdZdZdZdS)dirnodea Represent a directory in user working copy with information required for the purpose of tersing its status. path is the path to the directory, without a trailing '/' statuses is a set of statuses of all files in this directory (this includes all the files in all the subdirectories too) files is a list of files which are direct child of this directory subdirs is a dictionary of sub-directory name as the key and it's own dirnode object as the value cV||_t|_g|_i|_dSrx)rrstatusesrsubdirs)selfdirpaths rW__init__zdirnode.__init__s&    r.c>|j||fdS)z/Add a file in this directory as a direct child.N)rr)r]rrs rW _addfileindirzdirnode._addfileindirs# 8V,-----r.cnd|vru|dd\}}||jvr1tj|j|}t ||j|<|j|||n|||||jvr|j |dSdS)z Add a file to this directory or to its direct parent directory. If the file is not direct child of this directory, we traverse to the directory of which this file is a direct child of and add the file there. /rN) rr\rrrrYaddfilerar[r)r]rrsubdirfilep subdirpaths rWrdzdirnode.addfiles 8  $NN433MFET\))%]49f== '.z':': V$ L ( ( 7 7 7 7   x 0 0 0  & & M  f % % % % % ' &r.c#`K|jD]#\}}|tj|j|fV$dS)z=Yield (status, path) for files directly under this directory.N)rrrr)r]rsts rW iterfilepathszdirnode.iterfilepathssGZ 2 2EArhmDIq111 1 1 1 1 2 2r.c#NKt|jdkr-|j}||vr||jdzfVdS|D] \}}||fV |jD]#}||D] \}}||fV $dS)a  Yield (status, path) obtained by processing the status of this dirnode. terseargs is the string of arguments passed by the user with `--terse` flag. Following are the cases which can happen: 1) All the files in the directory (including all the files in its subdirectories) share the same status and the user has asked us to terse that status. -> yield (status, dirpath). dirpath will end in '/'. 2) Otherwise, we do following: a) Yield (status, filepath) for all the files which are in this directory (only the ones in this directory, not the subdirs) b) Recurse the function on all the subdirectories of this directory rrcN)rur[rrrjr\values tersewalk)r] terseargsonlystrifpathdirobjs rWrmzdirnode.tersewalks. t}   " "]&&((F""di$.....++--  IBe)OOOOl))++  F#--i88  E%i   r.N) __name__ __module__ __qualname____doc__r_rardrjrmrr.rWrYrYsi   ...&&&8222 ' ' ' ' ' r.rYcd}tj|D]*}||vr$tjt d|z+t d}d}i}|D]:}|dd}t ||D]} || |g||<;|D] \} } ||  | !|j D]8} | |D] \} } ||  | !9g} |D]7} ||  | || 8tj| S)a Terse the status if all the files in a directory shares the same status. statuslist is scmutil.status() object which contains a list of files for each status. terseargs is string which is passed by the user as the argument to `--terse` flag. The function makes a tree of objects of dirnode class, and at each node it stores the information required to know whether we can terse a certain directory or not. )r2rArr6r8irKs'%s' not recognizedr.)smodifiedsaddedsdeletedscleanunknownsignoredsremovedrr)rr'rrZrrYrrdrjrr\rlrmsortr!r) statuslistrnallstr8rootobjpstatus tersedictattrname statuscharrrirpre tersedlists rWtersedirrs 7E i ( (BB E>>"1%;#<#: &&r.cr|}d|D}d|dzS)z0Surround lineswith a comment char and a new linecg|]}d|zS)s# %sr)rlines rWrz!_commentlines..=s777gn777r.rt) splitlinesr)rawlinescommentedliness rW _commentlinesr:s; NN  E77777N ::n % % --r.T)frozenceZdZejZejZejZejZejZ ejde Z dZ dZ dZdZdS) morestatusF)initdefaultsstatus.morestatusc|j||jr!||jvr|ddSdSdS)NT) unresolved)_formattedpathsr activemergeunresolvedpathsdata)r]rfms rW formatfilezmorestatus.formatfileKs[   &&&   %(< < < GGtG $ $ $ $ $ % % < .msNk$).(/2C2CTJJKr.sSUnresolved merge conflicts: %s To mark files as resolved: hg resolve --mark FILE)rsfileT)rrrsNo unresolved merge conflicts.rr) rrrrrrcontextrrrrr)r]r mergeliststrrrs` rWrzmorestatus._formatconflictsgs'  F  ! 7 ::!% 4L6 ) C C,,,   ***qTBBBB C566C =---T[AAAAAr.N)rrrsrtr ibrrrrrrrrrrrrr.rWrrAs 4799D4799LDGIIM$'))KdgiiOdg5##%%888O !F%%% .'B'B'B'B'Br.rc"tj|}tj|}|}|s|sdSdx}x}}|r|\}}|r!t |}t|||||S)z=Returns a morestatus object if the repo has unfinished state.N) statemod getrepostate mergestatemodrractivesortedrr)r statetuplerrrrrs rWreadmorestatusrs&t,,J)..t44J##%%K kt044L4=:1&0# m5J113344  lM;   r.ci}i}||vr|g}n|}g}|D]}t|}||d} ||vr|} n |s|D]} | |r| } n| K|dds| dr|||f|| <|||f|| <|s|r|}||fS)z Return cmd -> (aliases, command table entry) for each matching command. Return debug commands (or their aliases) only if no normal command matches. Nrsdebug)r"rr startswith) rtablestrictchoice debugchoicer"allcmdsraliasesfoundas rW findpossiblers+ FK e||uzz||G 44q//w '>>EE   <<$$EE  qz$$X.. 4%2B2B82L2L 4&-uQx%8 E""!(%( 3u k 7?r.c,t|||\}}||vr||St|dkr$t|}tj|||r't |dStj||)z9Return (aliases, command table entry) for command string.rr)rrurrAmbiguousCommandlistrlUnknownCommand)rrrrrclists rWfindcmdrs"3v66OFG f}}c{ 6{{Qv$S%000 (FMMOO$$Q''  sG , ,,r.c |5|5|d5t|t j||}|st jd|d|}t|dkr!t jtdtj ||d|| }d|D}|ds;||vr7||vr!t jtd |d |r!t jtd i}dd lm} |D]} || } | |kr&fd } |dt+| |fz} t+| d<}}||vr||d}||vr||d}| |||f| | | }||}|f|<|dt+|ztAj!||dd|d}t|dkr_||}|$ddlm"}|#||dd|$tdt|zdddn #1swxYwYdddn #1swxYwYddddS#1swxYwYdS)z-Change the branch name of given revs to labelsbranchessempty revision set roots(%ld)rs,cannot change branch of non-linear revisionsschange branch ofc6h|]}|Sr)branch)rparents rW zchangebranch..s <<<6v}}<<.filectxfns7 t9$0   44 s  s*changing branch of '%s' from '%s' to '%s' s branch_changer)rhrfextrarsnew node id is %s s branch-changeTfixphaseN)hg) quietemptys changed branch on %d changesets )%rRlock transaction bailifchangedrrevrangerrZrevsrurr precheckrarrY branchmaprrrrnoderp1p2memctx descriptionrrhrf commitctxr! cleanupnodesrrr)rnrrrr[rootsrrpb replacementsrrev oldbranchrrrrmcnewnoder2newidrrs @rW changebranchrs aOaOtyy{{aOaOD$4$4[$A$AaOaOd"4.. :"#899 9 -.. u::>>"ABB  T4)<===EKKMM"<>  99+T 2 2 ">??   + <+ sxxzz??Iu56   IIKKE&)#((**ooE" #BB\!!!"%a(\!!!"%a(R!! XXZZXXZZ  BnnR((G(/zL $ HH+c'll: ; ; ; ;  , 04    Dz t||~~  ! # # $$TWWYY^^%5%566E !      $aT ::: !899C >?@   NsA"B$$ C0.=C++C0ct|tr|r|dzSn*t|dkr|dzS|dzS)areturn appropriate editform name (referencing a committemplate) 'ctxorbool' is either a ctx to be committed, or a bool indicating whether merging is committed. This returns baseformname with '.merge' appended if it is a merge, otherwise '.normal' is appended. s.mergers.normal)r|boolrur) ctxorbool baseformnames rW mergeeditformrtsc)T""(  ,)+ + , Y   ! !A % %i'' * $$r.c >|ssrfdSrfdStS)a&get appropriate commit message editor according to '--edit' option 'finishdesc' is a function to be called with edited commit message (= 'description' of the new changeset) just after editing, but before checking empty-ness. It should return actual text to be stored into history. This allows to change description before storing. 'extramsg' is a extra message to be shown in the editor instead of 'Leave message empty to abort commit' line. 'HG: ' prefix and EOL is automatically added. 'editform' is a dot-separated list of names, to distinguish the purpose of commit text editing. 'getcommiteditor' returns 'commitforceeditor' regardless of 'edit', if one of 'finishdesc' or 'extramsg' is specified, because they are specific for usage in MQ. c.t|||S)N) finishdescextramsgeditform)commitforceeditor)rrr8r r r s rWrz!getcommiteditor..s$0 q! X   r.c*t|||S)Nr  commiteditor)rrr8r s rWrz!getcommiteditor..s|Aq!hGGGr.r)rr r r r[s ``` rWgetcommiteditorrs_, zX        GGGGGr.cg}tj|dD]Y\}}}|dkr0|tj|||<||||Zd|S)NTrstringr.)r% scantemplaterr) escapestrr)tmplpartstypstartends rW_escapecommandtemplaters E$1$DAAA**UC )   LL-d59o>> ? ? ? ? LLeCi ) ) ) ) 88E??r.cx|s|Stj|t|}||S)aExpand a literal template 'tmpl' in a way suitable for command line '\' in outermost string is not taken as an escape character because it is a directory separator on Windows. >>> from . import ui as uimod >>> ui = uimod.ui() >>> rendercommandtemplate(ui, b'c:\\{path}', {b'path': b'foo'}) 'c:\\foo' >>> rendercommandtemplate(ui, b'{"c:\\{path}"}', {'path': b'foo'}) 'c:{path}' )r maketemplaterr renderdefault)rnrpropsts rWrendercommandtemplater$s>  $:4$@$@AAA ??5 ! !!r.c |}tj|j|}tj|j|t j|}d|i}|r||||S)zExpand a literal template 'tmpl' byte-string against one changeset Each props item must be a stringify-able value or a callable returning such value, i.e. no bare list nor dict should be passed. )defaults resourcessctx) rrtemplateresourcesrnr r$keywordsrr!)rrr"rtresr#mappings rWrendertemplater,s 88::D  &tw 5 5D  3t   AsmG u ??7 # ##r.cd}|r|dd|zd}|s|dd}|s|}|sd}t||}|ddS)z&Format a changeset summary (one line).Nscommand-templatessoneline-summary.%ssoneline-summarys{separate(" ", label("oneline-summary.changeset", "{rev}:{node|short}"), join(filter(namespaces % "{ifeq(namespace, "branches", "", join(names % "{label("oneline-summary.{namespace}", name)}", " "))}"), " "))} "{label("oneline-summary.desc", desc|firstline)}"rtr)rr,r)rnrcommand default_specspectexts rWformat_changeset_summaryr2s D yy "7'"A4   Cyy-/ABB    A  #t $ $D ::e  Q r.cNdddddddd}|d |d <|d |d <||d|d <|d|d<d|d<d|d<g}tj|dD]E\}}} |dkr|||| +|} | | kr|d| | } | dkr0|t j|| | n|t j|| | | dz| kr!t jtd|| dz| dz} | dz} ||| n2#t$r%t jtd| zwxYw| | kGd |S)aConvert old-style filename format string to template string >>> _buildfntemplate(b'foo-%b-%n.patch', seqno=0) 'foo-{reporoot|basename}-{seqno}.patch' >>> _buildfntemplate(b'%R{tags % "{tag}"}%H') '{rev}{tags % "{tag}"}{node}' '\' in outermost strings has to be escaped because it is a directory separator on Windows: >>> _buildfntemplate(b'c:\\tmp\\%R\\%n.patch', seqno=0) 'c:\\\\tmp\\\\{rev}\\\\{seqno}.patch' >>> _buildfntemplate(b'\\\\foo\\bar.patch') '\\\\\\\\foo\\\\bar.patch' >>> _buildfntemplate(b'\\{tags % "{tag}"}') '\\\\{tags % "{tag}"}' but inner strings follow the template rules (i.e. '\' is taken as an escape character): >>> _buildfntemplate(br'{"c:\tmp"}', seqno=0) '{"c:\\tmp"}' s{node}s{rev}s {node|short}s${sub(r"[^\w]", "_", desc|firstline)}s7{if(revwidth, pad(rev, revwidth, "0", left=True), rev)}%s{reporoot|basename})HRhr2rwr4rCNs{total}Ns{seqno}r-s3{pad(seqno, total|stringify|count, "0", left=True)}s{pathname|basename}rGs-{if(pathname|dirname, pathname|dirname, ".")}r6s {pathname}r=Trrrs)incomplete format spec in output filenamers-invalid format spec '%%%s' in output filenamer.) r%rrfindr)rrrrKeyErrorr) pattotalseqnorevwidthpathnameexpandernewnamerrrinrs rW_buildfntemplaterEs26H$H # # U.O/I&G$1#4@@@UC )   NN3uSy> * * *  #ggq#&&A1uuz3C#J??@@@ NN:/AaC99 : : :1us{{kBCCAEAEM"AAA x{++++   kFGG!K #gg$ 88G  s ;E/Fc j|s|St|fi|}t||tj|Srx)rEr,rrT)rr<r"rs rW makefilenamerG3sC  C ) )5 ) )D #tX%9%%@%@ A AAr.c| p|dkS)zATrue if the given pat looks like a filename denoting stdin/stdoutrRr)r<s rWrr=s7 !cTk!r.c2eZdZdZdZdZdZdZdZdS)_unclosablefilec||_dSrx)_fp)r]rEs rWr_z_unclosablefile.__init__Cs r.cdSrxrr]s rWrz_unclosablefile.closeF r.c*t|jSrx)iterrLrNs rW__iter__z_unclosablefile.__iter__IsDH~~r.c,t|j|Srx)rrL)r]r s rW __getattr__z_unclosablefile.__getattr__Lstx&&&r.c|SrxrrNs rW __enter__z_unclosablefile.__enter__Os r.cdSrxr)r]exc_type exc_valueexc_tbs rW__exit__z_unclosablefile.__exit__RrOr.N) rrrsrtr_rrRrTrVr[rr.rWrJrJBsn   '''     r.rJwbc |dv}t|r>|}|r |jj}n |jj}t |St ||fi|}t||S)N)rwsrb)rrrnfoutrrJrGr )rr<moder"writablerrEfns rW makefileobjrbVsx=(Hs#xxzz  BBBr""" c3 ( (% ( (B D>>r.cP|d}|d}|d}d}|r|rtd}n=|r|rtd}n)|s|s|r#|rtd}n|std}|rtj|d} |r>|r|j} n|r{t j|s!tjtd |d s|d z}|j |} t| r| } nE|r|j d } n(|r&| |} t| r| } |r^t| tj rnCtj| d r| j} n&| $tjtd | z| s|s!tjtd|s"tj|tdt$j|s$tjtd|zt*jd|zf} tj t/jt3jd| |dd} | S)z:opens the changelog, manifest, a filelog or a given revlogrLrMrNNs:cannot specify --changelog and --manifest at the same times5cannot specify --changelog and --dir at the same times6cannot specify filename with --changelog or --manifestsFcannot specify --changelog or --manifest or --dir without a repositorys9--dir can only be used on repos with treemanifest enabledrcr.s_revlogs!%r does not appear to be a revlogscannot give path to non-revlogsinvalid argumentssrevlog '%s' not founds free-form:%sF)audit)targetradix)rrrZ unfilteredr r!istreemanifestendswith manifestlog getstoragerufiler|rr& safehasattr_revlog CommandErrorrrisfilerevlog_constants KIND_OTHERvfsmodr'rr) rrfile_r[ returnrevlogclmfrrrdirlogfilelogrfs rW openstorager{ds l B k B v,C C b MNN  HII rS  MNNCC (C $s### A !  !!+AA  )$// &0 <<%% !Dj%0055F6{{    ++C00AA  ii&&G7||   !V]++ !!Z00 I&:;;a?   I"1%F#G#GHH H C$S!,@*A*ABB Bw~~e$$ H"1%=#>#>#FGG G"-/FG M Jx(( 6 6 6*    Hr.c*t||||dS)apObtain a revlog backing storage of an item. This is similar to ``openstorage()`` except it always returns a revlog. In most cases, a caller cares about the main storage object - not the revlog backing it. Therefore, this function should only be used by code that needs to examine low-level revlog implementation details. e.g. debug commands. T)rv)r{)rrrur[s rW openrevlogr}s tS%D A A AAr.c !"#$%&'(tddg#i'd}d!d%d}|r|s#!s!tjt dt j|"t" dkr!tjt dnd"" &tj d (|rԉ" "}nt" dkr!tjt d dd lm}t!j" gd |}|" t)j"| tj"|} "} | "tj ("| D]e} | | vr|| d"| | r.t d(| zf" 5|"} | } j! ""krLj!#5tj$| dddn #1swxYwY""| gi}tj%|d ddddn #1swxYwYdStj&|}|s!tjt dt|dkr!tjt d|'}!"&(fd}" t!j" gd tQj)j*#|}"+|r-tjt d(|z|"vr/tjt d(|"fzdd lm}g}|D].}||}|s|D]\}}}|,|/|s!tjt dt|dkr!tjt d|}|" t)j"| |||d5|"} | } j! ""krLj!#5tj$| dddn #1swxYwY""| gi}tj%|dddddn #1swxYwYdS!"#%&'f d}#$fd}#$fd}tZj./|otZj.0| $$st|dkstcj2|dr!tjt dtgj4|r$tjt d|z|}!r|}g}|D]2}||}|s|,|||||f3|s6d}rt d}tjt d|d}|D]*\}}|D]"\}} }||| |||r|dz }#+|dkS) Nforgetdry_runsaftersat_revs--at-rev requires --afterrs'cannot mark/unmark copy in merge commitTlegacyrelativevalues"cannot unmark copy in merge commitrsuncopy)r2s9%s: not unmarking as copy - file is not marked as copied rs"no source or destination specifiedsno destination specifiedcg}n }tj||g d}||D]} |}||}|vrW| vr+s(|r% t d|zTn(|r% t d|z}||||f|S)NT)globbeds2%s: not copying - file has been marked for remove s&%s: not copying - file is not managed )rr!rwalkexactrrr) r<srcs ctx_to_walkrJabsrelrafterrr[pctxrnuipathfns rWwalkpatzcopy..walkpats*!WWYY.ccD M+udD A A A##A&& + +C(3--CGGCLLE#~~$;; ! GG !%4!"!"#& !&! !HIICO KKc5) * * * * r.s8%s: --at-rev does not support a directory as destinations)%s: copy destination does not exist in %ssno files to copys!--at-rev requires a single sourcerscopyc  tjj|dvr9dd\}}j|dz|z}}}j} | j o| j } tj ! } | R!td|| fzdSt j|} d} | rikrcjjkr-s'!td|zdSd} d} s| sr| rds| rtd}vo-t'fd D}|r"rtd }notd }n_rd }nd }rtd|z}nCtd|z}n0td}rtd}ntd}!||z!|dSrW| sSr(!td||fzn'!td||fzdSnRsO | rt!j|t j|pd}t j|st!j|| r0|dz}t!j||t!j||nt5j||d}n#t8$r}|jt:jkr(!td|zd}nD!td|t?j |j!fzYd}~dSYd}~nd}~wwxYw!j"s|sQr(!#td||fzn'!#td||fz <tj$!rWsWs;|r9| s7j%&dd}j'(|)gdSdSdS) Nrcrs*%s: not overwriting - %s collides with %s TFs%s: can't copy - same file rs-%s: not overwriting - file already committed c3(K|] }|vo|vV dSrxr)rgpctxabssrc abstargets rW z)copy..copyfile..sMHH!%BIU,BHHHHHHr.sP('hg rename --at-rev .' to record the rename in the parent of the working copy) sL('hg copy --at-rev .' to record the copy in the parent of the working copy) s--after --forces--forces;('hg rename %s' to replace the file by recording a rename) s7('hg copy %s' to replace the file by recording a copy) s"%s: not overwriting - file exists s+('hg rename --after' to record the rename) s'('hg copy --after' to record the copy) s+%s: not recording move - %s does not exist s+%s: not recording copy - %s does not exist rs ~hgrenamers!%s: deleted in working directory s%s: cannot copy - %s smoving %s to %s scopying %s to %s )dryruncwdrremoveemptydirsr/)*r canonpathrrsplitr) normalizerrr+trackedrr! checkportablerYrrrrlexistsanyrrrrmakedirsrenamer&rrerrnoENOENTrrrverboser dirstatecopyrnrlwvfs unlinkpathforget)"rrelsrcotargetrabspathabsname reltargetrfsrcentryalready_commitedprevsrcexistssamefilerlooks_like_copy_in_pctxrflags targetdirtmp srcexistsrr/rrrrrr[rrrtargetsrns"` @rWrzcopy..copyfilefs&ty#w?? 9   )//a88 GW //884?'IIKK 3// I&&jj   '' 22 =<_b),,,++i((   GG@AAKK,,KK--   4((  f ))}&&v..$-2I2I33 GGA=>>JKKK44 4 54 -=4 >3 #/NMNNC/84.?/CHHHHH%)\\^^HHHEE+/! #$!H$$DD $%!E$$DD !/$6EE$.E! !%=!"!"#( !(!D!"%;!"!"#( !(!DBCCCN K   !!LMMi((( t &   GGIJJ!9-. GGIJJ!9-.t   &If%%%GOOF33;t w}}Y//+K ***@ </CIc3'''Ic6****M#v????  :--GGACDDvMNNN %IIGG344!8#6t}#E#EFG 44444 IIII  : JU J J !011VY4GGHHHH !122fi5HHIII#   c69V      !& ! :Y :x :**?.targetpathfn..s*BGLLt~a/@/@/KLLr.ctjtjt j|Srxrrrrr&rrrs rWrz,copy..targetpathfn..6BGLLbg&&t~a'8'899r.cSrxrrs rWrz,copy..targetpathfn..sDr.) rrrrrrr&rrurrossep) r<rrabspfxresrr destdirexistsrs ` @rW targetpathfnzcopy..targetpathfns 7==   !' 3<.targetpathafterfn..rr.rcd}D]f}tjtj|d|d}tj|r|dz }g|S)Nrr)rrrr&rr)rscorer8r#rrs rWevalpathz1copy..targetpathafterfn..evalpath&shE!''GLLt~ad/C/CHII/NOO7??1--'!QJE Lr.rcxtjtj|dSrxrrs rWrz1copy..targetpathafterfn..9s* T4>!3D3DXYY3O P Pr.ctjtjt j|Srxrrs rWrz1copy..targetpathafterfn..=s6BGLLbg..t~a/@/@AA%%r.cSrxrrs rWrz1copy..targetpathafterfn..AsDr.)rpatkindrrrrur&rrrrrrrr) r<rrrrrr striplen1rrrrs `` @rWtargetpathafterfnzcopy..targetpathafterfns  C % )CC' 3< > >//55G OOCFFHH % % % N47 3 3 3 3 c4..cllnn---&t,,%  AN"" %%d++++Q Uhqkk" 7799   !44S99">>++=##%%333355CC,T4>BBBCCCCCCCCCCCCCCC # XJ7 $, D                  d # #D Iq!FGGHHH 4yyA~~q!<==>>> 88::DB wwyyTCGGII; :::$TYT:: ::g   "MNN(7##$  #  ">??8G$$c*+   % %C73<>>???????????????HHJJ 3L  |Wt L L L L M M M M M M M M M M M M M M M  X!X!X!X!X!X!X!X!X!X!X!X!X!X!|.'''''''RGMM$''Dt0D0D,DM   t99q==H,T!W55="*   D ! ! "677$>  C  H66ws||  S$--t45555 B  CABBDq!455DAAAA F$ D%)   !FFEx 6(:(:EBB !   Q;sn(A2PO6 PO P O 2PP P ?A2]1\ ]\ ] \ !2]]#&]#c ddlm}|d}|d} |dp|d} |dp|d} |d} |d} |d }|d }|d }|d }|d  }|d}|d}t|dpd}|sdSd}t ||}|r|} n| r| } nd} |d| pdzt|dkr ||t|dr=| r|s!tj td||}||pt}n|r ||}||}||dkr|d}|t}n#tj $r|\}}YnwxYw|tkr"|tdn|\}}d}|r||dkr|||||dkr:||||ds|r|j| pd|dd}t)} t+j||||||d|dz n#tj$r:}tj t/j|tdd}~wtj$r6}|s&tjt/j||rd }Yd}~nd}~wwxYwt7|}|r| r|| n.|ds|rd}nt9j||pg}t=|dd!}|drd}n t?d0d"|it/j |}i}tBD]} tE| ||||i}!|rd |!d#<|d$rd$|!d%<|j#$|!d&5|%| | | |||'}tLD]} tO| || dddn #1swxYwYn|ds|r| pd} n|(} t+j)}" t)} t+j*||||"||||d( n#tj$r:}tj tWj,|tdd}~wtj$r+}tjtWj,|d}~wwxYw|drd}nt?d)*}|-|||f| ||"| | | |+ }#i}!|d$rd$|!d%<|j#$|!d&5|#%}dddn #1swxYwY|".n#|".wxYw|dr%|r#|td,nK|dr6|rt_|| kr!tj0td-td.}$|rtd/tc|z}$|$||fS)1aUtility function used by commands.import to import a single patch This function is explicitly defined here to help the evolve extension to wrap this part of the import logic. The API is currently a bit ugly because it a simple code translation from the import command. Feel free to make it better. :patchdata: a dictionary containing parsed patch data (such as from ``patch.extract()``) :parents: nodes that will be parent of the created commit :opts: the full dict of option passed to the import command :msgs: list to save commit message to. (used in case we need to save it when failing) :updatefunc: a function that update a repo to a given node updatefunc(, ) rrsfilenamer3r9r7branchsnodeidsp1sp2s no_commits import_branchsbypasssstripsprefixrHr)NNFFNs message: %s r.sexactsnot a Mercurial patchs\warning: import the patch as a normal revision (use --exact to import the patch as a merge) defaultspartialgY@)striprrr similaritys7check that whitespace in the patch has not been mangledrTs import.normalr )rsallowemptycommitsecret)sphasess new-commitsimport)reditorrrs import.bypassr)rrrhrfrrs3warning: can't check exact import with --no-commit s%patch is damaged or loses informationsapplied to working directorys created %sr)2rrrYfloatrrrrurrrrZr RepoErrorrrr setparentsr) setbranchrrr rr'rrrr!r!rrr(extrapreimportextrapreimportmaprnrrextrapostimportextrapostimportmapr filestore patchrepor) forcebytestrrrrrr)%rnr patchdatarr[msgs updatefuncrrDr1rhrfrnodeidrrnocommit importbranchrrrsimrejectscmdline_messagerDpartialrrrJr rridfuncr3storerrs% rW tryimportoner s &mmK((GmmJ''G 88G   6 g 6 6D 88G   6 g 6 6D ]]9 % %F ]]9 % %F u  B u  Bxx %%H88,--L)$$ $F NE )_F '',1 - -C !  G T**O! --//HH '.S 1222 7||qtG}%%% xx @R @"1%=#>#>?? ? "X "-   bBbBWQZQZ']   FB  6688w   GGF   B A w    JtRWWYY ' ' '    OOBGGIIrwwyy 1 1 1 88H   : : M # #F$8j 9 9 9((:u--  K;     $   " ##N  *    <&x'7':':;;;    U   8 % G$$$xx!! :R :&tU[b99$T$Z1ABBHxx!! (%)1);D)A)AE( H H!&)$ 5$GGGGI ?:> 67xx "" B8A 45'' 9== 8 8KKT4qu .88F&v.tAw77778  8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 88H   ! !)zFFYY[[F!!- EEE C      (   &+A..R . C C C&z'>q'A'ABBB Cxx!! D(2BCCC^^BGGII&$  FIxx "" B8A 45'' 9== $ $MMOO $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ KKMMMMEKKMMMM xxGhG IJJKKKK (  GQG#a&&F*:*:k!DEEFFF + , ,C* q) 7?s#1II,+I,N!!P-05O%%P-7,P((P-;AV  V V ]/)X]/Z5Y  Z&ZZB&]/.] ]/]]/]]//^cZtj|}d|D}|} |r||r |d} n|j} |||d|dd| |d| z|dd | | | | o| d kd d | |d dt||dt| zt|dkr+|dt|dz||t#jt|d t&D]2} t)| ||} | |d| z3|dd||d|r:t1j|| |||} | D]\}}|||dSt1j|| |||} |d| dS)Nc:g|]}||Srr)rrs rWrz!_exportsingle..ds%444A!4qvvxx444r.rrs# HG changeset patch r9s # User %s s # Date %d %d r7s # %s rrs # Branch %s nodes # Node ID %s s # Parent %s rrU)rs# %s sdescrrtr[rr.)r )r!binnoderrreverserrrrrhrf formatdate condwriterrur formatlistrmaplist extraexportextraexportmaprrstripisplainrdiffuir r)rrrr switch_parentr>r9rrrprevheaderidr chunkiterrrs rW _exportsingler!bs ?3  D44444G ZZ\\Fqz{JJ3JHH &'''HHWnchhjj111HH  +,,,HHWnbmmCHHJJ&?&?@@@LL'6Z'4DfHHW'T333HH T *+++ 7||a "S__4555GGBMM("23"@"@wMOOGPPP )))%55   HHY' ( ( (HHWgs007799:::HHUOOO zz||*LtT5xHHH % ) )LE5 HHU%H ( ( ( ( ) )JtT4XFFF  SXXi(()))))r.c t|dD]h\}}||} |ds|jd|z|t || |||||idS)z,Export changesets to stdout or a single filerrrs rW _exportfiler%sa((LL s3it$$ ) GLL4 ( ( ( dCUM5(KKKK LLr.c Tt|}td|D}tj} t |dD]L\} } || } t | ||| |} | | g| | fM| D]} tj || 5}|j d| z| | D]6\} } | || } t|| |||| |7 dddn #1swxYwYdS)z,Export changesets to possibly multiple filesc3NK|] }tt|V!dSrx)rustr)rrs rWrz$_exportfntemplate..s.11S3s3xx==111111r.r)r=r>r?rN)rumaxr&sortdictr$rG setdefaultrr maybereopenrnrrrr!)rrbasefm fntemplaterr9rr=r?filemapr>rrrrs rW_exportfntemplater0s IIE11D11111HmooGa((:: s3i 5    4$$++UCL9999  "64 0 0 B GLL4 ( ( (%dm   s 3i#r5-                s2ADD #D ct}|D]A}||D]$}r |r||%Btj||fd|D}tj||dS)Ncg|]}|fSrr)rrrs rWrz)_prefetchchangedfiles..s///33,///r.)rrrr!r! prefetchfiles)rrrallfilesrrm revmatchess ` rW_prefetchchangedfilesr6suuH##IOO%% # #D #EE$KK # T""" #  tX . .E////$///J $ +++++r. hg-%h.patchc t||||st|||d|||dSt|||||||dS)aexport changesets as hg patches Args: repo: The repository from which we're exporting revisions. revs: A list of revisions to export as revision numbers. basefm: A formatter to which patches should be written. fntemplate: An optional string to use for generating patch file names. switch_parent: If True, show diffs against second parent when not nullid. Default is false, which always shows diff against p1. opts: diff options to use for generating the patch. match: If specified, only export changes to files matching this matcher. Returns: Nothing. Side Effect: "HG Changeset Patch" data is emitted to one of the following destinations: fntemplate specified: Each rev is written to a unique file named using the given template. Otherwise: All revs will be written to basefm. N)r6r%r0)rrr-r.rr[rs rWexportr:sv>$e,,,   $ mT5       $ M4     r.c t|||t|dd}tj|j|di5}t |||||||ddddS#1swxYwYdS)z*Export changesets to the given file streamrVr9sexportN)r6rrrnr%)rrrErr[rrrs rW exportfiler<s$e,,, 2v| , ,D  TWb)R 8 8FBD$D-uEEEFFFFFFFFFFFFFFFFFFsA""A&)A&c ||dd||ddt||}||dd|t t|d|d d ||}|@|d d |t t|dd |dd| | | }| ddtjtj|}|dd||dd |ddS)zdutility function to display obsolescence marker in a readable way To be used by debug function.Nsindexs%i sprednodes%s s succnodesrrUsflags%X s parentnodess{%s} , )rVsepr7s(%s) smetadatas{%s}s%r: %r)fmtr?rt)rrprednode succnodesrrmapr parentnodesrrfmetadatarrrrapply maybebytestr formatdictr)rmarkerindexsuccsrmetasmetas rW showmarkerrNs  65)))HH[&#foo&7&7"8"8999     ELL  c#uooG 44  HHWffllnn---  ""G    MM#c7++'uM E E   HHWh fkkmm < <=== ??   ! ! # #DHHWd OH14 8 8EHHWbmmEyemLLHHUOOOOOr.cd|d|} |}n/#t$r"tjt dwxYw|t d|tj|| fzd|zS)z;Find the tipmost changeset that matches the given date specsdate(%s)s revision matching date not foundsfound revision %d from %s s%d) rr) ValueErrorrrZrrr(datestrrf)rnrrfmrevsrs rWfinddaterS s IIk4 ( (EGiikk GGGq!DEEFFFGII ())  c!1!122 3 4 3;s -,Ac dgfd}g}|d} d} tj|\} } | s| rtj|| |j} |dt j|} |j}t|| t| j dddD]} |}|s |sy|| vru|j |r[| r | || ||js|s0|t!d||zdt| j D]}| |} t j|}|j ||}tj||}|d r&|j||||dfi|n%|j||||dfi|#t0j$r1|t!d ||zYwxYw|d s7| ||}fd |DS) NcZ|p||Srxrbadr^yrWrs rWrzadd..$ "A9%))Aq//r.T) includeexactF)subreposrrfull adding %s sui.addremove.addedrr\#skipping missing subrepository: %s dry_runc3HK|]}|v|VdSrxrrrrs rWrzadd..Y 5==!u{{}}*<*<1*<*<*<*<==r.)r!checkportabilityalertcasecollisionauditorr) narrowmatchrrrrrrrrrrrrr subdirmatcherreljoinsubdiruipathfnrYrrr LookupError)rnrrrr explicitonlyr[badfnnamesr2ccaabortrrr)rrsubpathrsubmatch subprefix subuipathfnrejectedrWs ` @rWrr! s- C 9 9 9 9 9E E :D C/33KE4 EE*2udmDD   U  6 6E ..H}H DM**    A    $49;L;LQ;O;O A LLOOOz   n%% 3;P$-((hhw -gu==H ))&'::I!0(CCKxx ##  CGB)[%PP4PP CGB)[$OO$OO     II9::XXg=N=NN       88I  >88E6** ====h====== Js;B%H!!=I! I!c|j||<|jd||jfz|dD]=}||}|jD]+}||||,>dS)Nsadding %s = %s sfilelog("path:.hgsub"))rrnrrrr addwebdirpath)r serverpathwebconfrrrqs rWrwrw] s)GJGMM%TY(??@@@ YY0 1 1@@1g| @ @G GGG   * *:w ? ? ? ? @@@r.c |r#|r!tjtdgfd}|d} g} |t j|d} t | j| jz| j z| j z} |rfd| D} t | j D]| } t j }|j|}t!j|} | |||||\}}fd|D| fd|D#tj$r1|td |zYwxYw|sD]}||jvr|j|s|| vr|j|rP|j||jvre|td ||z||r*td }| ddD]}|td |||fz}|d kr|d kr||dD]1\}}|d|t?j |fz2|td |||fz}|d k|dkr|dkr| !||dkr| "|}| |d=n |dkrn| D]P}|j#s$|r|r0|td||zdQ|sX| | |fdD| fd| D| fS)Ns/cannot specify both --dry-run and --interactivecZ|p||SrxrVrXs rWrzforget..o rZr.Trrc>g|]}||Sr)rrcs rWrzforget..v s(666u{{1~~6!666r.)rrUc g|] }dz|z Srcrrrrqs rWrzforget.. s";;;q$*;;;r.c g|] }dz|z Srrrs rWrzforget.. s"AAA!7T>A-AAAr.r_s+not removing %s: file is already untracked s[Ynsa?]$$ &Yes, forget this file$$ &No, skip this file$$ &Skip remaining files$$ Include &all remaining files$$ &? (display help)s forget %s %srs%s - %s rr9 removing %s ui.addremove.removedrc3HK|]}|v|VdSrxrbrcs rWrzforget.. rdr.c3$K|] }|v|V dSrxr)rrrus rWrzforget.. s-==A1H+<+ ? ?F76666V666$-((hhw)'599I%%fg66 ,Wh??   # ' !+!! FI JJ;;;;F;;; < < < MMAAAAyAAA B B B B     II9::XXg=N=NN       " " "A %%diooa.@.@%F??y''**   =22155FF$!?'hqkk *JJqMMM $  qqq   H/""hhx&8&8)%DDAAvv1ff " 1 1) < ;;vv.. ====h====== ========== ;sAE33=F32F3c \d}|jpddh|z}|r|sg} ||D]e} | ||| zt | dkr-|d| | dd=d}f| r(|d| n||D]} || ||rD|| } |dd | | | | | ||| zd}t|jD]} t!j| |} t%j| |}|s6|| s!t+| r|| } || p|}||| ||||dkrd}#t2j$r1|t9d || zYwxYw|S) Nrssizesflagsdr.rrs size flagss % 10d % 1s rr_)rdatahintrmatchesrrurrrrsizerrrrrrrhr!rjrrrr printfilesrrkrr)rnrrJrrr@r\ret needsfctxbufrfcrqrrrtrrecurses rWrr s C Aw1BKKMMAI zz||IQ  A JJsXXa[[( ) ) )3xx#~~#'''FCC  $ HHSXXc]] # # #Q  A LLNNN JJ3J    OV 288::NNN GGGOOO HHS88A;;& ' ' 'CC#,'')'155,Wh??  qwww'' 3x~~/?/?+@+@ '''""C '''**6hNN2xb#wOOC$    =>>hw''(   Js07I((=J('J(c  !d} ||d} | j| j| j| jf\} } }}|d!| g} d}nd}t !j}|tdt|td}|D] }tj ||}|j ||}tj||}|s6||s!t#|r|!|} ||||||||| rd} #t,j$r2| td ||zY wxYw|t5j|}|}|td t|td }|D] !fd }| |vp! } |jvs|s d ks|s |vrU|j  rw|j  r/| td| zn.| td| zd} ||r | |z|z| z}n|r|}| | z|z}|tdt|td }|D]Q ||j s |vr.| td| zd} R|n||z}|tdt| t| ztd }| D]F || td| zd} G| D]F || td| zd} G|t |}|td t|td }|D]b |j s| sD||td| zdc||s|!5|sB|D]? | vr|j"#dd}|j $ d|@|d%|dddn #1swxYwY|r| D]}|&|| S)NrTr|Fs searchingrJ)r=unitrr_sdeletingsfilescRjD]}|dzrdSdS)NrcTF)rr)rqrr2s rW insubrepozremove..insubrepo1 s==  <<$// 44 5r.rs"not removing %s: no tracked files s#not removing %s: file is untracked sskippings#not removing %s: file still exists s<not removing %s: file is modified (use -f to force removal) sLnot removing %s: file has been marked for add (use 'hg forget' to undo add) rrrrr) ignoremissingr/)'rrrrrrr makeprogressrrurrhrrir!rjrrr incrementr removefilesrrkrcompleterdirsrr)rrrrRrnrlrrr)"rnrrJrrrrr\rwarningsrr8rrrrrr5progressrqrrrsrtr deleteddirsrrrr remainingr/warningrr2s" @@rWrr si C !4 ((A&'j!'19ag&M#HeWe :D $- D ,s4yyq~~H)'155I%%fg66 ,Wh??  qwww'' 3x~~/?/?+@+@     ((7##C ??   C$   =>>hw''(  ( -((K GGIIE +c%jjq{{H       [ 2DKKNN    !t))yy{{)a4ii  9  A   yq!! <== K=>>!L  )'!E)E1 'u$u, ?? kNN#i..q{{#    A    z a5jj=>>!LCC?? kNN3x==3u::#=Qx[[#    A    OO,(1++    CC  A    OO8(1++    CC $<.write s*  #Z"',,vt*D*DH  BGOOH556666      "68 4 4 M C$8K8K L L L M M M M M M M M M M M M M M M M M Ms#1A)) A65A6'CC CrTrr_)rrTruranypatsrk manifestnoder:rr!r3rr;rrrrrrrhrrrcatr(rRepoLookupErrorrr)rnrrrr-r.rr[r<rrmmflmfnoderrrqrrrrss `````` rWrr s C   % %D M M M M M M M M M M  7==??q  ):): }}q!!!##  #f+**4003 #F++H)$#''))W1E0FGGGd q    D <dcggii%9$:;;;xx   c "4TBBBH#,''ggg -gw??H VW55I37  $T**  $    II9::XXg=N=NN       Js&A'D D  D 0AH  =I  I c^|d}|rtj||d<t||}t j|d||}d}|drt j|d}|ptj5|rht j ||} t j || } t j ||d| |dkr!tj td||||||cdddS#1swxYwYdS) z5commit the specified files or all outstanding changesr7N addremovecommitrr.r5failed to mark all new/missing files as added/removed)rYr( parsedaterr!rrr&nullcontextmanagerrr addremoverrr) rnrrMrOr[rfr1rdsguardrelativers rWrr s} 88G  D 1 *400W T""GmDJd33GG xx ?-dI>>  -D+-- < <  tT22H*4XNNNH wXtDDIIkNOOz"dGWd;; < < < < < < < < < < < < < < < < < }|?|}|@|jAB5|C||jD|jA}t5))z'z}|D]}|E|dddt5)'z} | D]}|E|dd dddn #1swxYwY:|fi}!d}"|d rd tjG|d i}"|Hd!d"}#t?jI||!d|"d||##dddn #1swxYwYdddn #1swxYwYdddn #1swxYwY|S)$Nrrsamending changeset %s amendr7r9rrr.rs.hgsubc*h|]}| |Srr)rrrs rWrzamend..Y s&>>>a771::>>>>r.rrscopies.read-froms filelog-onlyc>g|]}|vst||Sr)r)rrbase filestoamendr2s rWrzamend..p s?\))!T41H1H))))r.c v |vr!| vrdS |}n |}|}||||d|vd|v|}|S#t$rYdSwxYw)Nr4x)risexec copysource)rrr memfilectxrrrYr;) rctx_rfctxrmctxrcopiedroldr2s rWrzamend..filectxfnv s |++4<<>>11#'4#Dz"{{400 JJLLE"--  #u}#u}#)::d#3#3.D K   44 sB*B B** B87B8scopying changeset %s to %s cR |S#t$rYdSwxYwrx)rr;)rrrrs rWrzamend..filectxfn s< ;;t,,,   44 s  &&s commit.amendseditTNT)rr s amend_source)rr1rrrhrfrrrrF)rrsnoterjs backup-bundle)rEr targetphasebackup)Jrrr isenabledcreatemarkersoptrmrrrrrRrrrrrrprrTrfrYr(rrhrurrrrrrrr!rrrrrrr#r_status writestaterrrrcheckunresolvedrnrr pathcopiesrrrrrrrrr stripdescrsecretrresetr)r-rrr.r fromlocalrlr)*rnrrrrOr[rorfrhrirrrr5r6 newsubstatemsrchangeset_copiesrr1r doeditr pureextranewnewdesc commitphaserr) normalfilesr removedfilesr+ obsmetadatarrrrrrr2s* ` @@@@@@rWamendr s $ 9:: GGA( ) )C /000 6688D ` ` tyy{{` ` D$4$4X$>$>` ` Dz   SYY[[!!!  TZZ\\"""/r488 #D))xxzz 88G   9%dhhw&7&788Dxx  .CHHJJ s{{}}   ! !S!!B $$s28}}4s2:FEE $$E-dD11?4..&tJJJ 88L ! ! g&7 '3$' '  +JKK     S 0 0,7,AD$,-- )D*k" ! ! ! :&t[999  % * *4 0 0!"%%%>>>>4::<<>>> l##a' GNN?,? @ @   7 &7 &tT22Fvvxx A f/$??@@@ LL & & &E           : GGA566#tD E E E     R&& o66 /oo''G![EDHHW$5$5$EFFXXg&&$.F fx@@@JJLL !$onn YY[[#&&((--//2   %coo&7&788 3??,,,, ""##}#SYY[[(( 88::a` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` d 88I   ( -Ks##  ] ' ' ) ) L L OOE4; / / /}H dmmoo <== LK   $$$4% t||~~..=L! L L$$Q5U$KKKK L1 L L L L L L L L L L L L L L L688::x( 88G   G"H$6tG}$E$EFKz+;<<    #    q` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` D Ls`#`9U_/ ` `0A%_/B;]  _/]! !_/$]! %A>_/# `/_3 3`6_3 7`: `` ` ` ``!$`!cz|r|St||||dS)NT)r unchangedmessagedetection)rr )rrr5r s rWrr sF !    c4(d   r.c |std}d|dD}|ddd}|r\d|} |jd| rt ||||| x}} n(||\t||||} tj } tj |j |} |j| | o| o|j } |j| |||| |jd}|}t-jt0|t,j }|r|d|}t-jd d |}tj | |r ||}|s!t;jtd |r'||kr!t;jtd |S)Ns$Leave message empty to abort commit.cg|]}||Srr)rrs rWrz%commitforceeditor.. s 2 2 21 2Q 2 2 2r.rrs changesetcommittemplater)r pendingrr)rs(?m)^HG:.*( |$)r.sempty commit messagescommit message unchanged)rrinsertrrnrbuildcommittemplaterbuildcommittextrrrchdirrcurrenttransactionr)r writependingrrhrrresearch _linebelow MULTILINErrrrrZ)rrr5r r r rforms templatetextref committextolddirtrr editortextr1 stripbelows rWr r  sY ><== 2 2t,, 2 2 2E LLL!!!L  @ii 7>>+S 1 1 (;c43)) L:    @%T3h?? _  FHTY  " "BM4R__&&449G   J D:t2<@@@J*(j&&((() 6%sD 1 1DHV z$ ::<<;q!899::: ?Z<%?%?q!<==>>> Kr.cl|j}tj|}tj|||}|jjd|jdD|sd}| | ||| S)Nc3HK|]\}}|tj|fVdSrx)r% unquotestring)rkvs rWrz&buildcommittemplate..K sJ Aq I #A & &'r.rr.)r ) rnrreference_templatespecrchangesettemplaterr#cacher configitems pushbuffershow popbuffer)rrr5r rrnr0r#s rWrrG s B  +C 0 0D%b$55ACIG''(9:: MMOOOFF3F""" <<>>r.cfdd|dDS)Nrtcg|] }|d|z S)sHG: %sr)rrs rWrzhgprefix..Y s!DDD!Dy1}DDDr.)rr)rs rWhgprefixrX s/ ::DDcii.>.>DDD E EEr.cg}|||}}}|r'|||d|d|t t d|t ||d|t t d|z|r/|t t d| rD|t t d| ztj |r7|t t d|j z| d|D| d |D| d |D| d |D|s3|s1|s/|t t d |dd |S)Nr.s>Enter commit message. Lines beginning with 'HG:' are removed.sHG: --suser: %ss branch merges branch '%s's bookmark '%s'cLg|]!}ttd|z"S)s subrepo %srr)rr8s rWrz#buildcommittext..t s-BBBXa ..233BBBr.cLg|]!}ttd|z"S)sadded %srrrs rWrz#buildcommittext..u s+AAAaXa nnq011AAAr.cLg|]!}ttd|z"S)s changed %srr!s rWrz#buildcommittext..v s-FFFXa ..233FFFr.cLg|]!}ttd|z"S)s removed %srr!s rWrz#buildcommittext..w s-EEEXa ..233EEEr.sno files changedrt)rrrrrrrrhrrr isactivewdirparent_activebookmarkrr)rrr5r edittextrrrs rWrr\ sH"||~~syy{{CKKMMWeH +))*** OOC OOC OO =     OOHX&&''' OOI OOHQ{^^chhjj899::: vvxx6?!3!344555 zz||D>!2!2SZZ\\!ABBCCC#D))N#3!4!4t7K!KLLMMM OOBBTBBBCCC OOAA5AAABBB OOFFXFFFGGG OOEEWEEEFFF ::':#6!7!788999 OOC ::h  r.c|i}||}|}|E|j|kr(|jt dn^|dsIrG|vrCtfd|Ds'|jt d|dsm|D]j}| rT| kr<|jt d| zk|jj rR|j t d| |fzdS|jjr@|j t d| |fzdSdS)Ns3warning: commit already existed in the repository! rc3tK|]2}|vo|kV3dSrx)rr)rrbheadsrs rWrzcommitstatus.. sS  <=AFFHH  7188::#7      r.screated new head s close_branchs reopening closed branch head %d scommitted changeset %d:%s )rr tiprnrrrYrr closesbranchrr debugflagrrr) rrrr)r*r[rrrs `` rW commitstatusr- s  | t*CkkmmG 4>--//366  QNOOPPPP HHX  1 1        AH       q.//000< 88O $ $  A~~ AHHJJ&$8$8:;;aeeggE wL  , - -CGGII0F F      L  a67737799c:JJKKKKKLLr.cb|tj|d||S)Nr)rr!r)rrOr[s rWpostcommitstatusr/ s( ;;W]4:tTBB; C CCr.c:;<=tj|}|j\}}}}||kr|}i. s0==!!=A======r.cdSrr)r^rYs rWrzrevert.. sr.c|vrdS|jvrdS|dz}D]}||rdSd||fzdS)Nrcs%s: %s )rrr)rrpath_rrrnrnrs rWrmzrevert..badfn s5==F3<''Ft A||E** xx~~s&;;<<<<. s"<<<4gdmA&<<. s%@@@W@@1q@@@@r.s(subrepository '%s' does not exist in %s!)=rrTr)rrrr!rrRrYrrralwaysrrrrr!rrrrrrrrrrrrrr+rrrrrrr*rr backuppathrelpathrrrr&rrrrr3r_performrevertrrevertr(r;rrr)>rnrrrOr[rrrrxrUr2 targetsubsrrrmrkindrrr_deletedrrmodadded dsmodifieddsadded dsremoved localchangesmergeaddrrrdeladdedrremovunkrf dsremovunkbackupinteractivercheckdiscarddsmodifiedbackupr@ backupanddel disptablerrxlistrdobackup absbaknamebaknameneeddataoplistprefetchr!rrr=rJrnrs>` ` @@@@rWrDrD s   % %D&&((JFB 88::D B rzz E"4TBBBH ddhh~u55 Dz M$d + +====t}===== xxzz" 0'+=+=>>Gyy)) * *WWS\\c  = = = = = = = =xx 1!U ; ;<< . .e##!"E#J"4//Akk!T4t"GGkkAk66G . ...C!"E#JJ."4//Aw'((GM""go&&w''go&&w'''GM""55 T>>!JGI%/L'*uuceeSUUWeHHkkak88GW-..J'-((GGO,,I%/L Y( (E  I y Gz)H X E ( "J (W, ,J  "H G   :H" * *2::OOD))) x G ( "J " "A-&&q))C "u$$M++C008% c"""!c x== & &Drzz%%%X%  C=**3//5  #5 ! !C}&&s++1 ! C   G 55 " "CZZ__Fwv&& " S!!!8UU  $ $CZZ__Fwv&& $s###Z A/001>**+A.//0!,--.A0112a 2334A:;;<q!:;;<    88L ! ! 918 8  8  &0  % 55y) xx %% ,"7+Lwy)7 3 gi(' 2 +-= > GI& 0 gi(' 2 |V , ww' 1 gfow / wv .  ,g 6 -u 5GG$g . gj)7 3A! F!//# # JCZZ__F2;  -|sXe##$LL%%%D$'888$LL----#x//49==S3J3J/)0);Bc)J)JJ&(goo *$)'6''GGG !"I J J#+8C==((72C2C"D!E$(88J#7#7D#.!D$(M&*$E$E$E$E$(K $C$C$Cxx ++;:;U;IIcHHSMM&9:::1GGC((3--/000xx ## 7H<<<<8<<.checkouts8 V Arwwyy"((**-----r.c jdd}j||n#t$rYnwxYwj|dS)Nrrr)rnrlrrr0r) set_untracked)rr/rs rWdoremovez _performrevert..doremovesz G&&8JKKE I % 0 0 0 0    D  ##A&&&&&s7; AAc|}jjs|s4j|d|zdSdS)Nr)rnrr)rrrr=rnrrs rW prntstatusmsgz%_performrevert..prntstatusmsg sYa 7? =% = GNN76?1- ; < < < < < = =r.T)cachedrrs(forget added file %s (Yn)?$$ &Yes $$ &Nor8s(remove added file %s (Yn)?$$ &Yes $$ &Nor9c<j|S)N) reset_copy)r) set_tracked)rrris rWnormalz_performrevert..normalLs}((j(IIIr.cg|]}|v| Srr)rrexcluded_filess rWrz"_performrevert..Rs#PPP!8O8OA8O8O8Or.r6rsrevert.interactive.)rrrsapplyrs!revert.interactive.select-to-keepskeepsdiscardNr)rrrc^h|]*}t||j+Sr)r~rrrrs rWrz!_performrevert..s1JJJq J**,,JJJr.rrr7s#add new file %s (Yn)?$$ &Yes $$ &Nor:s,add back removed file %s (Yn)?$$ &Yes $$ &No)3r)rrr pathauditorrrnrrrcrrrr!r!rrrr rlr r r reversehunksrr rZrrrrrr~rrrrAr&rrrrrrr&rr'rjrrr)'rrrnrr=rrUr@rrrrardrf audit_pathrrrkrtorevertrJr9rr r;rr[r<unusedalsorestorerErrrrfrZrGrrmris'````` @@rWrCrC s"&&((JFB 88::DN......'''''======== %di===J Y  " + +  +W))=>>!LF{{ i+++ ++A....%%a(((( M)Q ' ' ' M ' ' * * * * Y  "   1  W))=>>!LF{{ i+++ %%a(((( M)Q ' ' ' HQKKKK W a '' 1  gq!!! ##A&&&& t{"JJJJJJJ"%SPPPPwy1!4PPP  tX . .( G/        6>>w!!!E '$ &  :dD#((**ahGGGDD:dCHHJJahGGGD +D11 I')5ILFDJ&&+F33$ H H H"1%?#@#@3#FGG G* I I I"1%@#A#AC#GHH H I9Gv8N8N5"$5  uuH ZZJJfJJJKK ( (A M)Q ' ' ' '  Aayy &h''))8$$&&(22!ZZ__F%0$DDGM&'222OOC(((e##IIcNNN G++  GGBKKKK''))   > >#DGT2q$GGGGG( > > >&x'7'<'<===. > > >&x'7'<'<=== > B#A&  A M)Q ' ' ' HQKKK q V_Q  % % * * *   W))899HHQKKGF{{ fa     !!!$$$$ [ !! $  W))ABBQFF{{ k1--- q %%a(((( M+q ) ) ) HQKKK F1IIII  tF|S 1 1F W[1!44wy7I!7LL-- ;; M  vay! , , , --sH 5MN/$M44N/$N**N/%UV6&U99V6 &V11V6ctjD]i}|js|r|js|jr||r:t j|| jtjD]v}|jr|r|js|j dkr|s|jr'||r:t j|| wdS)zLook for an unfinished multistep operation, like graft, and abort if found. It's probably good to check this right before bailifchanged(). rmergeN) r_unfinishedstates _clearable _allowcommit _reportonly isunfinishedrrrr_opname)rr skipmerger"r8s rWrrs'+CC     -       d # # C"599;;UZZ\\BBB B C ' ; ;   >  X%%)%}&  >>$   ;"15577::: : ; ; ;r.ctjD]`}|jr |jsO||r:t j||atjD]b}|j dks|jr|jrF||r1tj |j |jcdS)z[Check for unfinished operations (as above), and clear the ones that are clearable. rrvN)rrwrzrxr{rrrrr|r&rr'r_fname)rr"r8s rWclearunfinishedrs+CC     CE$6$6t$<$< C"599;;UZZ\\BBB B  '11 9 AM  < 1ANN400 1 K ah// 0 0 0 11r.cVtjD]}||r|cSdS)zIChecks for unfinished operations and returns statecheck object for itN)rrwr{)rr"s rWgetunfinishedstaters?+   d # # LLL  4r.ctd}tjD]:}|js ||r||zdfcS;|ddddr|tdzdfSdS)aiCheck for an unfinished operation and return the command to finish it. statemod._unfinishedstates list is checked for an unfinished operation and the corresponding message to finish it is generated if a method to continue is supported by the operation. Returns a (msg, warning) tuple. 'msg' is a string and 'warning' is a boolean. s continue: %sTNF)missingrrs hg commitNN)rrrw _continueflagr{ continuemsgdirty)rcontmsgr"s rW howtocontinuers  G+77"     d # # 7U..000$6 6 6 6 7 DzE%@@0<(%// :r.ct|\}}|@|r|jd|zdS|jd|zdSdS)zInform the user about the next action after completing hg resolve If there's a an unfinished operation that supports continue flag, howtocontinue will yield repo.ui.warn as the reporter. Otherwise, it will yield repo.ui.note. Nr)rrnrrr)rrrs rWcheckafterresolvedr-se!&&LC   ( GLL3 ' ' ' ' ' GLL3 ' ' ' ' ' r.ct|}d}|dr|d}tjtd|z|)zRaise an abort suggesting how to properly continue if there is an active task. Uses howtocontinue() to find the active task. If there's no task (repo.ui.note for 'hg commit'), it does not offer a hint. Nrrsno %s in progressr)rrrr)rtaskrrs rWwrongtooltocontinuer=sO $  E D QxQx  1122T9 E E EEr.c|s!tjtdt |}|d}|!tjtdt|dkr!|d}nd}d}|rfd|D}d }fd |D}|rZj td d fd |Dztdd}tj |}|t|z r)j tdd}|r55t#j|d d|D} t'jj | ddddn #1swxYwYdddn #1swxYwY|sd}t#j||td|td|ddz|dS)zSabort the interrupted graft and rollbacks to the state before interrupted graftsno interrupted graft to abortsnewnodesNs$cannot abort using an old graftstaterrFcDg|]}|Sr)rrrrs rWrzabortgraft..bs%444aDGKKMM444r.TcHg|]}||Sr)mutablers rWrzabortgraft..es,BBB1Q0A0ABQBBBr.s%cannot clean up public changesets %s r>c3BK|]}t|VdSrx)bytesrs rWrzabortgraft..is-??U47^^??????r.s see 'hg help phases' for detailsrs;new changesets detected on destination branch, can't strip c6g|]}|Srrros rWrzabortgraft..}s-!"AFFHHr.r)rsgraft aborted sworking directory is now at %s )rrrrreadgraftstaterYrrurrnrrrr descendantsrRrr# clean_updaterrrrdelete) rnr graftstate statedatanewnodesstartctxcleanup immutabledesc strippointss ` rW abortgraftrMs     Dq!ABBCCCtZ00I}}[))Hk!CDDEEE 8}}q $'')):GG44448444BBBBBBB   GLL;<<**????Y?????@:;;     G4>--h7788 #h--   GLL-    G  G G Gtyy{{ G G%h///&*hh}h&G&G  TWdKFFFF  G G G G G G G G G G G G G G G G G G G G G G G G G G G G G G (:h'''IIa"##$$$IIa344x||~~crc7JJKKK 1s72H<AH% H<%H) )H<,H) -H<<IIc |S#tj$r3|jd}d|icYSwxYw)zDread the graft state file and return a dict of the data stored in it graftstatesnodes)rrCorruptedStater'r)rrnodess rWrrse!    !!! m,,7799%    !s?AAc|5tj|d}t|||cdddS#1swxYwYdS)z/abort logic for aborting graft using 'hg abort'rN)rRrcmdstater)rnrrs rW hgabortgraftrs 00&t];; "dJ//000000000000000000s&AA A rx)F)Tr)FNNr.r)NNNN)r\)r7FNN)FNN)r.)NNr.F)NNN)FN)FF)rrrrri18nrrrrrrrr r thirdpartyr rr r rrryrrrrrrrrr#rrrrrrrrrr r!r"rr#r$r%r&r'rtutilsr(r) revlogutilsr*rr TYPE_CHECKINGtypingr+r,r#r dryrunopts confirmopts remoteoptswalkopts commitopts commitopts2 commitopts3 formatteropts templateoptslogoptsr9 diffwsopts diffopts2 mergetooloptssimilarityopts subrepooptsdebugrevlogoptsrr_rdrprvr~rrrrrrrWrYrrr8rrrrrrrrrrrr$r,r2rErGrrJrbr{r}rrrrr rrr!r%r0r6r:r<rNrSrrwrrrrrrrrrrr rrrr-r/rDrChooks outgoinghooks summaryhookssummaryremotehooksrrrrrrrrrrr.rWrsg   >   4[ =  :tQQKLLM  *dAA<==>  63788!!F))D    9:: &     KLL  &    677 *     677 *  $ :sAA;<??7L     566 '     344 '  $ >4#L!M!MN >4#J!K!KL  ;QQ788!!K..I    9:: (  ;QQ788!!K..I   8T11]++, 64:;;< 8S!!@AA11V99M <qq!6778'4FGGH 8T115667    7D!!6778    =>>   )T11KLLM*dAA=>>?     455     899     566     011 ' : k4#L!M!MN    AQ     j$"K L LM      A3 4 4 AfII   gtQQJKKL    A7 8 8 AfII   D 7C01111W::>    :;; - k4+J)K)KLM  <"3 4 45 ;qq!1223&#qq3445K *2226 D D D&&& ((( 333       BBBB(&i7i7i7Xb b b b b b b b J6'6'6'r...tLBLBLBLBLBLBLBLB^$$$$$N----"dOdOdON   ,,,,&,%%%&:=@"""&$$$$"    0DDDDNBBB"""         (    H H H H V B B Bkkkk` VVVv ******ZLLL4,,, ( ( ( ( VFFFF@   999x@@@bbbJ---bMQTTTTn999&;;;|<<<2 ( ( (nnnb  #>>>>B"FFF    F=L=L=L=L@DDDyyyF  K-K-K-K-b tz||  TZ\\;;;;:111", ( ( ( F F F = = = @!!!00000r.