m RDc @sCdZdkTeeddklZdklZl Z l Z l Z l Z dZ hZe id7_dfdYZd Zed Zed Zd Zd ZdZdZdZdZdZdZdZdZdZdZ edZ!edZ"dZ#dZ$dZ%edZ&dZ'hdegd f<d!ee i(d"d#d$f<d%egd&f<d'egd(f<d)ed*d+ed,fd-d.d/d0fd1d2ed3fgd4f<d5ed6d7ed8fgd9f<d:ed;d<d/d=fd1d2ed2fgd>f<d?egd@f<dAegdBf<dCe"dDdEedFfd-d.d/dGfd1d2edHfgdIf<dJe!d1d2edKfdLdMedNfdDdEedOfd;dPedQfd-d.d/dRfgdSf<dTedUdVedWfgdXf<dYe#dZd[ed\fd]d^ed_fgd`f<dae$d;d<d/d=fd6dbedcfd-d.d/ddfd*deedffd1d2edgfgdhf<died;djedkfgdlf<dme%d1d2ednfdodpedqfd-dredsfgdtf<duegdvf<dwegdxf<dye&gdzfR4R5R;R9R<R=R:RBR?((Rt readheadersksb        -  -       c Cs?|i||gdtdtd|d|\}} |djo|| fSn| djo%|i i d|t idn|i i d||i|d td td||i|| d td d d||ii|}|i|d td|} | o%|i i d| t idn|id|d|dd dd|} | djo!|i i dt idny"|i|\}}} } } Wn(|i i d|t idnX|i|d}|o$di |d}|i!|nt"i#||i ||| |i$d| fS(Nt update_statuststricttmergetwlockisapply failed for patch %s is"patch didn't work out, merging %s tallowtforcetupdatetbackuptstripsupdate returned %d isrepo commit failed sUnable to read %s R-s s (%RtapplytrepoR$tFalsetTruetrevRIterrtnR%R twarntsystexitRLtheadRNt changelogRtctrettcommittmergeqRER:R;R<R=t patchfoundR tpatchfR R0tcommandstdodifftclose(RRPR^RYR$RSRIR;R:RUR_R\R<R=R`R[RT((Rtmergeones>  ") " c CsF|djo~|ii\}}|tijo|Snt |i djodSn|i di d\} }ti| } | Sn|ii|}|dtijog}|i D]} || i ddq~}ti|d} ti|d}| |jo |dSn||jo |dSq>n|dS(Niit:i(RSR%RPtdirstatetparentstp1tp2trevlogtnullidR(RRtsplitttopR$tbinRZtppR*R+tarevsthextp0( RRPRSRiR*RhRpRoR$R+RmRr((Rtqparentss& 1   c Cs}t|idjoXd} |iddddddd|} |ii t i | d| d|_ n|i |}x|D]} |i| } | p|iid | d Sn|i| }|p|iid | d Snt i|d}|i|||| ||\}}|o.|ii t i |d| d|_ n|o||fSqqWd|fS( Nis.hg.patches.merge.markers[mq]: merge markerR<RKiRIRespatch %s does not exist spatch %s is not applied (iN(iN(R(RRtpnameRPR]R%RIRURCRjRqRRsRYRR$R^tlookupR RVt isappliedtinfoRnRSRdRT( RRPR^RRIRwRTRSRYRURtR$((Rt mergepatchs2 ! $! c  Cs|p |i}nti}ti|id}|p|i }n|i } |i }d} xq|D]i}|iid|tii||}y"|i|\} }}}} Wn"|iid|d}PnX| pd|} n,|o| id|ndi| } yAtidti i!d d d } ti#d | |f}Wn|iid d}PnXg}t&}x|D]}|i)d}|ii*o|ii|dn|d djowtii+|d}|ddjo"|ddjo|dd!}n||jo|i|nt&}|}q|i.ddjoC|p|ii|dt/}n|ii|dt/}q|i.ddjo|ii|dq|i.ddjo=|p|ii|dt/}n|ii|dqqW|i0}|o^t3|djoK|i4i5|i4i6|d|i4i7\}}|i4i:||nt3|djo&t;i<|i||dhd|n|i=|| ||ddd| d|} | djo!|iidt>i?dn|o%|iAitBiC| d|n|o@| p|iid|d}n|iidd}Pn|o"|o|iidd}PqrqrW|i0ti||| fS( Nis applying %s sUnable to read %s isimported patch %s s imported patch %ss tgpatchtPATHR,R$s%%s -p1 --no-backup-if-mismatch < '%s's*patch failed, unable to continue (try -v) s ispatching file t'is with fuzzssaving rejects to filetFAILEDR toptsRIRKtlocksrepo commit failed Respatch %s is empty s*patch failed, rejects left in working dir s)fuzz found when applying patch, stopping (ERRRR tgetcwdtpwdtchdirRPtrootRTRIR~t transactionttrR%RURR$R RVR R9RER:R;R<R=R_R'RCR t find_in_pathtenvirontgetRotpopenR/tfilesRQtfuzzRR#tverbosetnormpatht printed_filetfile_strtfindRRRctpatcherrRHR(RfRLt filterfilesRgRhRit setparentsRataddremove_lockR]RWRXRFRRjRqRG(RRPRR'RFRGRRHRIR~R:RURoR_RR;R9RRRRR<R=RiRhRTR/RRR$R((RROs    "$ "        %    cCs|i|}|i|}|o%|iid|tidn||i jo%|iid|tidn|i |}|i |=|i |i d|_dS(Nscannot delete applied patch %s ispatch %s not in series file (RRuR$RvRwR RVRWRXRR&tiRRR(RRPR$RwR((Rtdelete~s cCst|idjo|idid\}}ti|}|i i }||joQ|i i dti|ti|dti|dftidn|SndS(NiiRes9queue top not at dirstate parents. top %s dirstate %s %s i(R(RRRlRmR$RjRnRPRfRgRoR RVtshortRWRXR%(RRPRoR$Rm((Rtcheck_toppatchs @cCsb|idd\}}}}}|p|p|p|o!|i i dt i dndS(Ns#Local changes found, refresh first i( RPtchangesR%R[tatrtdtuRR R0RWRX(RRPRR[RRR((Rtcheck_localchangess!cCsg}|idd\}}} }} |p|p|p| o2|pt i t dqu||| }n|i||i} |i} |o&|i|d|dtd| }n#|i|d|dtd| }|djo!|iidtidn|g|i| | +|iiti|d||i |id|_!d|_"|i#|d } |o|d }| i%|n| i&d} |i'} | o| i(|gn|o|i)|d tndS( Ns"Local changes found, refresh firsts[mq]: %sRKRIs New patch: %ssrepo commit failed iReR-s R(*t commitfilesRPRR%R[RRRRRKR tAbortt_RRRIt series_endRDtmsgR]RRRUR$R RVRWRXRRRCRjRqRRRR tpR0Rctqrepotaddtrefresh(RRPR$RRKRR[RRRDRIRRRRU((RtnewsB!     !     tallc sTd}d}d}|pi}ni}i}|i} |i }|oBi}i |dtdtd|iing}h}|i} ||} h} xW| oO| i}|}xtod| |<|i|} | dtijoD|i | d|jo*| d| jo| i| dq~n| dtijoPn|i | d|joPn| d}|joPqqW|i|}|joF|i|x6|D]*}|i ||jod||d|i diddn|ii>ddS(Ncsi|i|}yi|di|Wntj oxy&t i t i i i |Wn/tj o#}|itijoqnXi|di|nXdS(NR-(RPRAR/RRStttwfileR0tIOErrorR tmakedirsRtdirnametwjointOSErrorRTterrnotEEXIST(R/RSRTR(RP(Rtgetfiles& spatch %s is not applied iisNo patches applied Resqpop: forcing dirstate update is!deletions found between repo revsRURLRMRNRIs Now at: %s sPatch queue now empty (?RRIRPR$RRvRwRuR RVRWRXR(RRLRfRgR*R+RjRnRltrrRRRRKRRRRRSRRmRstqpRZRRRt readflagstmf1tmmapR[RRRRR RR/tset_execRR Rt removedirsRRtforgetRRkRNRQR0(RRPR$RKRLRIRRRRRSRRgRRRwRR[RR/R*RRRR+RRm((RPRRs :  . !!&" ,cCsf|i|}|p|iiddSn|i||}ti t i |i||d|dS(NsNo patches applied (RRRPRmR R0RsRRaRbRWtstdoutR%R(RRPRRRm((Rtdiffs c Cslt|idjo|iiddSn|i}|i||i|}|idi d\}}t i|}|ii|} |i||}|i|\}} }}} |i|d}| o$di| d} |i| n|ii} || jo|i|| \}}}} }|o|||}nd}|idd|\}}}}}x,|D]$}||jo|i,|qqWxI|D]A}||jo!||i-|=|i,|q|i,|qWg}xq||D]e}||jo$||i-|=|i,|q n"||jo||i-|=n|i,|q Wt/t0i1|}t/t0i1|}t/t0i1|}t/t0i1|||}t2i3||i||d|d|||g|f|i4|ii5| }|i6i7| |i6i8|d |i6i8|d |i6i8|d |i6i.||pd |}ndi|}|i9||d t:ddd||i;|||dddd|}t i=|d||idnYt2i3||i||d|i4|i?|dt@d||iA|dt@d|dS(NisNo patches applied iReR-s s RRRRUspatch queue: %s RLRMRNRIiRK(BR(RRR R0RPRIRRsRRlRmR$RjRnRZRgtcparentst patchparentRER:R;R<R=R_R R`R RRtcctaatddtaa2tuuRtfilelistR%R[RRRRR+RCRRR'R tuniqueRaRbRcRRfRRLRNRQR]RURqRRRRR(RRPRRRRIR:RURRR_RR;RRRR<R=R`RRR[RRRR$RRR+RRm((RRs   !$       "%  cCsXtii|iotidnti|i|o|idt SndS(Ns$patch queue directory already existstcreate( R RRRR RRRRRR(RRPR((RtinitGs cCs|o5||ijo%|iid|tidn|p|i}n|ii |d}x)|i|D]}|ii d|qwWdS(Ns%s not in the series file is%s ( R$RRR RVRWRXRRRRR0(RRPR$RR((Rt unappliedNsc Cs|i} |pxZ|i| D]K}|iio$|iid|ii |n|iid|q!Wxm|i| D]K}|iio$|iid|ii |n|iid|q~Wng}xt i |i D]\} }}| t|i d}xn|D]f}t i i||} | |ijo;| |i|ifjo"| id o|i| qqWqW|i|oJxG|D];} |iio|iidn|iid| qWndS(Ns%d A s%s s%d U it.sD (RRRtmissingRRR RR0RR'R twalkRRtdirsRR(RR/R tflRRR3RCRR+( RRPRRRR/RRR'RR+RR((RtqseriesYs8  $ $:  cCs,|idd}|djotSndS(NReis.hg.patches.save.line(RRlRRR(RRR((Rt issavelineus cCsS|p%tiitii|ido#ti|id|id|SndS(Ns.hgRR( RR RRR Rthgt repositoryR (RR((RRzs,cCs |ii|}|di}|i}d}d} g} g}d}xtdt|D]}||djo|d} qb||idoQ||i}|did}g}|D]}|ti|q~}qb| djo`||i}|id}|| }||d}|o|i|n| i|qbqbW| djo|iid dSn|iid |d| |_ ||_ |i!|i d|_"d|_#|ii$} |o|| jo|iid qn|iid ti&||i'i(} || jo t*} nt,} |i||d | ddn|o|iidti&|dti&|df|oQdGH|i.}|p|iiddSn|i+|ddt,dt*qndS(Niis Patch Data:is Dirstate:i t ResNo saved patch data found srestoring status: %s s*save entry has children, leaving it alone sremoving save entry %s RLRMRNs&saved queue repository parents: %s %s squeue directory updatings Unable to load queue repository RJRK(0RPRZRRSR[RNtdescRR2RR%t datastartRRtqppRR(R3R#RRlR*R+R RnRtidRARCRR RVRRRRRRRRfRgRoRRRLRQtqupdateRR(RRPRSRRRARRRRoRRRLRR RR[RR2RR*RR+((Rtrestore~sh .           4 c Cst|idjo|iiddSn|i|ido|iiddSng}|iD]}|d|qk~}|p d}nd|i d }|i } | oA| ii}|d ti|dti|df7}n|d 7}|d i|id |od i|d pd }|id|dddd}|p|iiddSn|iiti|ddd|_dS(Nis"save: no patches applied, exiting iisstatus is already saved Reshg patches saved states hg patches: s s Dirstate: %s %ss Patch Data: s R,R<RKsrepo commit failed s.hg.patches.save.line(R(RRR RVR R*RR+tarRR#RRRfRgRoR RqR ttextRPR]R%RURCRjR( RRPRR*RoRRURR+R((Rtsaves,(  2 9!cCsxd}t|idjoX|idid\}}y|ii|}Wnt j o dSnX|dSn|S(NiiRei( RR(RRRlRmRRRR(RRRRm((RRs  cCs|o5||ijo%|iid|tidn|pt|i}n|ii |d}x7t |D])}|i |}|iid|qyWdS(Ns%s not in the series file is%s (R$RRR RVRWRXR(RRRRR+t appliednameRR0(RRPR$RRR+((Rtqapplieds cCs5|i|}|iip|idd}n|S(NRei(RRRRR RRl(RRR((RRs  cCsKt|io'|id}|ii|dn|iiddS(Nis sNo patches applied (R(RRRRR R0(RRPR((RRmscCsU|i}|t|ijo|iidn|ii|i|ddS(NsAll patches applied s (RRRR(RR R0(RRPR((Rtnexts cCs{t|idjo'|id}|ii|dn;t|idjo|iidn|iiddS(Niis sOnly one patch applied sNo patches applied (R(RRRRR R0(RRPR((Rtprevs c Csgt|djo(|o!|iidtidnd}g}x|D]} |o_|p | }nt i it i i|i |p%|iid|tidqnyt| i} Wn4tj o(|iid|tidnX|pt i i| d}n| oJt i it i i|i |o%|iid|tidn|i|d} | i| ||ijo%|iid|tidn|i|}|g|i||+|i|i|iid ||d7}|i|d}qNWd|_ |i!} | o| i"|ndS( Nis2-n option not valid when importing multiple files ispatch %s does not exist sUnable to read %s spatch %s already exists R-s'patch %s is already in the series file sadding %s to series file (#R(RR$RR RVRWRXRtaddedtfilenametexistingR RRR RARRRRlRKR R`R0RRRRRRCR%RRR( RRPRR$RRKRRRRRRR`((RtqimportsN %-      ('t__name__t __module__R%RR&RR1RERdRsRxRQRRRORRRRRNRvRuRRRRRRRR RRRRRRRmRRR(((RR*sD   J )  #h  $ $M  a    8     cKs(t|}|i|||idS(s#remove a patch from the series fileiN(trepomapRPtqRR$R1(R RPR$R}R!((RR.s   cKst|i||dS(s!print the patches already appliediN(R RPRR$(R RPR$R}((RR5scKst|i||dS(s!print the patches not yet appliediN(R RPRR$(R RPR$R}((RR:sc OsFt|}|i||d|dd|dd|d|idS(simport a patchR$RRRKiN(R RPR!RRR}R1(R RPRR}R!((RR?s   cKst|}|i|d|d}|i|o]|idd}|dIJ|dIJ|i |iddi |i ddgndS( sinit a new queue repositoryRt create_repos .hgignoreR-s syntax: globRRiN( R RPR!RR}RR1twopenertfpRcR(R RPR}R$R!R((RRGs     cOsMt|}|i}|ptidnti|i |||dS(s&commit changes in the queue repositorysno queue repositoryN( R RPR!RRR RRaR]R tpatsR}(R RPR%R}R!R((RR]Us   cKst|i|d|ddS(sprint the entire series fileRiN(R RPRR}(R RPR}((RR\scKst|i|dS(s#print the name of the current patchiN(R RPRm(R RPR}((RRmascKst|i|dS(s print the name of the next patchiN(R RPR(R RPR}((RRfscKst|i|dS(s$print the name of the previous patchiN(R RPR(R RPR}((RRkscKs<t|}|i||d|dd|d|idS(screate a new patchRR:RKiN(R RPR!RR$R}R1(R RPR$R}R!((RRps  $ cKs/t|}|i|d|d|idS(supdate the current patchRiN(R RPR!RR}R1(R RPR}R!((RRws   cOst|i|t|dS(sdiff of the current patchiN(R RPRR'R(R RPRR}((RR~sc Cstii|\} }ti| }tid|}d}d}xg|D]_}|i|}|oCt|id}|djp ||jo|}|}qqMqMW|otii| ||fSndS(Ns %s.([0-9]+)i(NN(R RRltdirtbasetlistdirtnamesRRtnamereR%tmaxtmaxnameR/RR RR!RR ( RRR/R+R R*R'R)R,R&((Rt lastsavenames cCs?t|\}}|djo d}n|d|d}|S(Nis.%di(R-RtlastRR%tnewpath(RR/RR.((RRs   c Kst|}d }|do|id}n|do}|do|d}nt |i \}}|p|i ddSnt||id|}|i d|i n|i||d |d d |d d |}|i|S( s"push the next patch onto the stackRiRHRs%no saved queues found, please use -n iR,smerging with queue at: %s RKR'R^N(R RPR!R%R^R}RR$R/R-RRR RVRR RR\R1( R RPR$R}R/R!RR^R\((RRs$        cKst}|doFt||id|i|d}|id|i t }n t |}|do4t |i djo|i didd}n|i||d|dd ||idS( s#pop the current patch off the stackRR,susing patch queue: %s RiReiRKRLN(RRt localupdateR}RR RPR R!RVRRQR R(RRlR$RR1(R RPR$R}R!R0((RRs (  !  cKsK|i|}t|}|i||d|dd|d|idS(s&restore the queue state saved by a revRRRLiN(RPRuRSR R!RR}R1(R RPRSR}R!((RRs  cKsnt|}|i|d|d}|o|Sn|i|do|i}|dotii |i |d}tii |oftii |p"|id|tidn|dp"|id|tidqqn t|}|id ||fti||n|d o4y&titii |i|iWqjqjXnd S( ssave current queue stateRR:tcopyRs-destination %s exists and is not a directory iRKs'destination %s exists, use -f to force scopy %s to %s temptyiN(R RPR!RR}R\R1RR R RR/RRR RVRWRXRR t copyfilesRR(R RPR}R/R!R\R((RRs4        &cKs]|i|}d}|do d}n|do d}nt|i||d|dS(s6strip a revision and all later revs on the same branchRRMRNtnobackuptnoneiN(RPRuRSRMR}R RN(R RPRSR}RM((RRNs    cCs|idtdS(sprint the version numbersmq version %s iN(R R0t versionstr(R R!((RtversionscCs t||idt|