PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /usr/lib64/python2.7/site-packages/hgext
Viewing File: /usr/lib64/python2.7/site-packages/hgext/histedit.pyc
� Hq�Qc @s dZyddlZWnek r5ddlZnXddlZddlZddlmZddlmZddlm Z ddlm Z ddlm Z ddlm Z dd lm Zdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZiZeje�ZdZed�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d�Z$de&id�Z'i ed6ed6e d6e d 6e!d!6e!d"6e#d#6e#d$6e$d%6e$d&6Z(ed'd(d)d(ed*�fd+d,e&ed-�fd.d/e&ed0�fd(d1e&ed2�fd3d4e&ed5�fd!d6e&ed7�fd8d9ged:�fged;��d<��Z)d=�Z*d>�Z+d?�Z,d@�Z-dA�Z.dB�Z/dC�Z0dD�Z1dE�Z2dS(Fs`interactive history editing With this extension installed, Mercurial gains one new command: histedit. Usage is as follows, assuming the following history:: @ 3[tip] 7c2fd3b9020c 2009-04-27 18:04 -0500 durin42 | Add delta | o 2 030b686bedc4 2009-04-27 18:04 -0500 durin42 | Add gamma | o 1 c561b4e977df 2009-04-27 18:04 -0500 durin42 | Add beta | o 0 d8d2fcd0e319 2009-04-27 18:04 -0500 durin42 Add alpha If you were to run ``hg histedit c561b4e977df``, you would see the following file open in your editor:: pick c561b4e977df Add beta pick 030b686bedc4 Add gamma pick 7c2fd3b9020c Add delta # Edit history between c561b4e977df and 7c2fd3b9020c # # Commands: # p, pick = use commit # e, edit = use commit, but stop for amending # f, fold = use commit, but fold into previous commit (combines N and N-1) # d, drop = remove commit from history # m, mess = edit message without changing commit content # In this file, lines beginning with ``#`` are ignored. You must specify a rule for each revision in your history. For example, if you had meant to add gamma before beta, and then wanted to add delta in the same revision as beta, you would reorganize the file to look like this:: pick 030b686bedc4 Add gamma pick c561b4e977df Add beta fold 7c2fd3b9020c Add delta # Edit history between c561b4e977df and 7c2fd3b9020c # # Commands: # p, pick = use commit # e, edit = use commit, but stop for amending # f, fold = use commit, but fold into previous commit (combines N and N-1) # d, drop = remove commit from history # m, mess = edit message without changing commit content # At which point you close the editor and ``histedit`` starts working. When you specify a ``fold`` operation, ``histedit`` will open an editor when it folds those revisions together, offering you a chance to clean up the commit message:: Add beta *** Add delta Edit the commit message to your liking, then close the editor. For this example, let's assume that the commit message was changed to ``Add beta and delta.`` After histedit has run and had a chance to remove any old or temporary revisions it needed, the history looks like this:: @ 2[tip] 989b4d060121 2009-04-27 18:04 -0500 durin42 | Add beta and delta. | o 1 081603921c3f 2009-04-27 18:04 -0500 durin42 | Add gamma | o 0 d8d2fcd0e319 2009-04-27 18:04 -0500 durin42 Add alpha Note that ``histedit`` does *not* remove any revisions (even its own temporary ones) until after it has completed all the editing operations, so it will probably perform several strip operations when it's done. For the above example, it had to run strip twice. Strip can be slow depending on a variety of factors, so you might need to be a little patient. You can choose to keep the original revisions by passing the ``--keep`` flag. The ``edit`` operation will drop you back to a command prompt, allowing you to edit files freely, or even use ``hg record`` to commit some changes as a separate commit. When you're done, any remaining uncommitted changes will be committed as well. When done, run ``hg histedit --continue`` to finish this step. You'll be prompted for a new commit message, but the default commit message will be the original message for the ``edit`` ed revision. The ``message`` operation will give you a chance to revise a commit message without changing the contents. It's a shortcut for doing ``edit`` immediately followed by `hg histedit --continue``. If ``histedit`` encounters a conflict when moving a revision (while handling ``pick`` or ``fold``), it'll stop in a similar manner to ``edit`` with the difference that it won't prompt you for a commit message when done. If you decide at this point that you don't like how much work it will be to rearrange history, or that you made a mistake, you can use ``hg histedit --abort`` to abandon the new changes you have made and return to the state before you attempted to edit your history. If we clone the histedit-ed example repository above and add four more changes, such that we have the following history:: @ 6[tip] 038383181893 2009-04-27 18:04 -0500 stefan | Add theta | o 5 140988835471 2009-04-27 18:04 -0500 stefan | Add eta | o 4 122930637314 2009-04-27 18:04 -0500 stefan | Add zeta | o 3 836302820282 2009-04-27 18:04 -0500 stefan | Add epsilon | o 2 989b4d060121 2009-04-27 18:04 -0500 durin42 | Add beta and delta. | o 1 081603921c3f 2009-04-27 18:04 -0500 durin42 | Add gamma | o 0 d8d2fcd0e319 2009-04-27 18:04 -0500 durin42 Add alpha If you run ``hg histedit --outgoing`` on the clone then it is the same as running ``hg histedit 836302820282``. If you need plan to push to a repository that Mercurial does not detect to be related to the source repo, you can add a ``--force`` option. i����N(tcmdutil(t discovery(terror(tcopies(tcontext(thg(tlock(tnode(trepair(tscmutil(tutil(tobsolete(tmerge(t_tinternals&# Edit history between %s and %s # # Commands: # p, pick = use commit # e, edit = use commit, but stop for amending # f, fold = use commit, but fold into previous commit (combines N and N-1) # d, drop = remove commit from history # m, mess = edit message without changing commit content # cs%�j�����fd�}|S(s>Build a commit function for the replacement of <src> This function ensure we apply the same treatment to all changesets. - Add a 'histedit_source' entry in extra. Note that fold have its own separated logic because its handling is a bit different and not easily factored out of the fold method. cs��jjdd�}zY�jjdd��|jdi�j�}�j�|d<||d<�j|�SWd�jj|�XdS(Ntphasess new-committextrathistedit_source(tuit backupconfigt setconfigtgettcopythextcommitt restoreconfig(tkwargst phasebackupR(tphasemintrepotsrc(s4/usr/lib64/python2.7/site-packages/hgext/histedit.pyt commitfunc�s (tphase(RRR((RRRs4/usr/lib64/python2.7/site-packages/hgext/histedit.pyt commitfuncfor�s  cCs|jj�d}|j�j�|krYtj||||tjfdt�d}n�zV|j j dd|j dd��t j ||j�ttt|j�j��}Wd|j j ddd�X|j|tj�|jj�tj||j�|j�j��|S(s@Merge changeset from ctx (only) in the current working directoryitallRt forcemergettooltN(tdirstatetparentstp1RRtreverttnullidtTruetNoneRRRtmergemodtupdatetFalset setparentstwritetduplicatecopiestrev(RRtctxtoptstwcpartstats((s4/usr/lib64/python2.7/site-packages/hgext/histedit.pyt applychanges�s% " %cs�t|jd|���}|s%d S|j�d�t�}x!|D]}|j|j��qEWtj|�����fd�}g|D]}||�s�|^q�}�j�����fd�} |j d�r�|d} n |j �} |j d�} |j d�} |j d�} |j �j �|j �j �f}tj|d |d | d |d | d| d| d| �}tj||g�|_|j|�S(s�collapse the set of revisions from first to last as new one. Expected commit options are: - message - date - username Commit message is edited in all cases. This function works in memory.s%d::%dics�|�j�krw�j|�}|�j�krp�j|�}|j�|j�koo|j�|j�kStSn|�j�kSdS(N(tmanifesttfilectxtdatatflagsR/(tftatb(tbasetlast(s4/usr/lib64/python2.7/site-packages/hgext/histedit.pytsamefile�sc sx|�krk�|}|j�}tj|j�|j�dd|kdd|kd�j|��}|St��dS(Ntislinktltisexectxtcopied(R<Rt memfilectxtpathR;RtIOError(RR4RItfctxR<tmctx(RGtheadmfRA(s4/usr/lib64/python2.7/site-packages/hgext/histedit.pyt filectxfn s     tmessagetusertdateRR'ttexttfilesRNN(tlisttsetR,R'R.RSRt pathcopiesR9Rt descriptionR(Rtp2RtmemctxRtcommitforceeditort_textt commitctx(RtfirstRAt commitoptstctxsRSR4RBR=RNRORPRQRR'tnew((R@RGRMRAs4/usr/lib64/python2.7/site-packages/hgext/histedit.pytcollapse�s:    %    $  c Cs8||}|j�d|kr;|jd|�|gfStj||j��t||||�}|r�|ddkr�tjtd���nt ||�}|d|j �d|j �d|j �d|j ��}|dkr|jtd �tj|��|gfS||} | |j�|ffgfS( Nisnode %s unchanged is0Fix up the change and run hg histedit --continueRRRPRQRs%s: empty changeset (R'tdebugRR.RR8RtInterventionRequiredR R!RWRPRQRR,twarnR( RRR4thaR5toldctxR7RtnR`((s4/usr/lib64/python2.7/site-packages/hgext/histedit.pytpick)s"     cCsL||}tj||j��t||||�tjtd���dS(Ns|Make changes as needed, you may commit or record as needed now. When you are finished, run hg histedit --continue to resume.(RR.RR8RRcR (RRR4ReR5Rf((s4/usr/lib64/python2.7/site-packages/hgext/histedit.pytedit?s  c Cs�||}tj||j��t||||�}|rc|ddkrctjtd���n|jdd|d|j�d|j �d|j ��}|dkr�|j td �tj |��|gfSt||||||g�S( Niis0Fix up the change and run hg histedit --continueRRsfold-temp-revision %sRPRQRs%s: empty changeset(RR.RR8RRcR RRPRQRR,RdRt finishfold(RRR4ReR5RfR7Rg((s4/usr/lib64/python2.7/site-packages/hgext/histedit.pytfoldGs   cCs&|j�dj�}tj||�|j�}|j�|j�krY|j�} n |j�} | |d<dj|j�gg|D]} || j�^q�|j�g�d} | |d<t |j �|j ��|d<|j �j�} d|j �|j �f| d<| |d <|j jd d �} zNt |j�|j��}|j jd d |�t|||||�}Wd|j j| �X|dkr�|gfStj||�|j�|ff|j�|ff||ffg}x$|D]}|j||ff�q�W|||fS( NiRPs *** s RORQs%s,%sRRRs new-commit(R'RRR.RRPtusernametjoinRWtmaxRQRRRRR RRaRR,tappend(RRR4RftnewnodeR5tinternalchangestparentR^Rltrt newmessageRRRRgt replacementstich((s4/usr/lib64/python2.7/site-packages/hgext/histedit.pyRjVs<   -      cCs|||j�dfgfS(N((R(RRR4ReR5((s4/usr/lib64/python2.7/site-packages/hgext/histedit.pytdrop�sc Cs||}tj||j��t||||�}|rc|ddkrctjtd���n|j�d}|j||j ��}t ||�}|d|d|j �d|j �d|j ��} || } |j�| j�kr | |j�| ffgfS| gfS( Niis0Fix up the change and run hg histedit --continues RRRPRQR(RR.RR8RRcR RWRiRlR!RPRQR( RRR4ReR5RfR7RORR`tnewctx((s4/usr/lib64/python2.7/site-packages/hgext/histedit.pyRO�s $ c Cs�|j|pd|pd�}tj|d�d \}}|jtd�tj|��tj|||d�\}}tj |||�}|r�g|D]} |j | �^q�}nt j |||d|�} | j s�tjtd���n| j dS( sVutility function to find the first outgoing changeset Used by initialisation codes default-pushtdefaultiscomparing with %s tforcesno outgoing ancestorsiN(t expandpathRtparseurlR,tstatusR R t hidepasswordt addbranchrevstpeertlookupRtfindcommonoutgoingtmissingtAbort( RRtremoteRzR5tdesttrevstcheckouttotherR3toutgoing((s4/usr/lib64/python2.7/site-packages/hgext/histedit.pyt findoutgoing�s % tpRhteRiR=RktdRwtmtmessthisteditR%tcommandss+Read history edits from the specified file.tctcontinues$continue an edit already in progresstktkeeps,don't strip old nodes after edit is completetabortsabort an edit in progresstoR�s#changesets not found in destinationRzs.force outgoing even for unrelated repositoriesRsR3sfirst revision to be editeds[PARENT]c+ s-t�dd�}|r9|jr9tjtd���n|jd�}|jd�}|jd�}|jd�}|jdd�} |jd g�} d } |r�| r�tjtd ���n|r tj||| || f�rtjtd ���nd} n|rKtj|| || f�rBtjtd ���nd} n�tj j tj j �j d��r�tjtd���n|r�| r�tjtd���nt |�dkrtjtd���qn7| j |�t | �dkrtjtd���n| dkr�t��\} } } }}�jj�\}}�| }t|�|| |�\}}|j |�n| dkr8t��\} } } }}t�|�\}}}}|jdtj|��tj�|�t|�d|�t|�d|�tjtj j �j d��dStj���jj�\}}|r�|rs|d}nd}t|�|||�}n"| d}tj�|�j�}|jdt�} t �||| �} | stjtd�tj|���ng| D]}�|^q}| s�dj g|D]}t!|�^q8�} | d7} | t"tj|�tj|�f7} |j#| |j$��} t%�j d�d�}|j&| �|j'�n:| dkr�t(j)}n t%| �}|j*�} |j'�gd �| j+�D�D]#}|r|dd!k r|^q} t,| �|�} �|j�d}|jdt�} g}x�| rt-�|j�| | ||�| j.d�\} }!|jd"| |!f�t/| }"|"|�||!|�\}}#|j |#�q�Wtj0�|j��t�|�\}}}$}%|rx�|j1�D]�\}&}'|'s�|jd#tj|&��qV|jd$tj|&�tj|'d�f�t |'�dkrVd%}(x/|'dD] })|j|(tj|)��q�WqVqVWn| s�|r(t2|�|||%�nt3j4r�g}*xWt5|d&�j6j7�D]=}&||&}'|*j8�|&t9�fd'�|'D��f�qPW|*r�t3j:�|*�q�q�t|�d(|�nt|�d|�tjtj j �j d��tj j �j;d)��r)tj�j;d)��ndS(*s)interactively edit changeset history tmqssource has mq patches appliedR�R�R�RzR�R%R3R`s$--force only allowed with --outgoings$no arguments allowed with --continues!no arguments allowed with --abortshistedit-states;history edit already in progress, try --continue or --aborts$no revisions allowed with --outgoingis.only one repo argument allowed with --outgoings-histedit requires exactly one parent revisionsrestore wc to old parent %s tcreatedttempNiR�s*%s is not an ancestor of working directorys s shistedit-last-edit.txttwt-css|]}|j�VqdS(N(tstrip(t.0Rs((s4/usr/lib64/python2.7/site-packages/hgext/histedit.pys <genexpr>(st#shistedit: processing %s %s shistedit: %s is dropped shistedit: %s is replaced by %s s'histedit: %stkeyc3s|]}�|VqdS(N((R�ts(R(s4/usr/lib64/python2.7/site-packages/hgext/histedit.pys <genexpr>Rstreplacedtundo(<tgetattrR,tappliedR R�R RtanytosRItexistsRmtlentextendt readstateR&R'tbootstrapcontinuetprocessreplacementRbRtshortRtcleant cleanupnodetunlinkRt bailifchangedR�R t revsingleR/tbetweentmakedesct editcommentRiRltopenR1tclosetsyststdintreadt splitlinest verifyrulest writestatetpopt actiontableR.t iteritemst movebookmarksR t_enabledtsortedt changelogR3Rottuplet createmarkerstsjoin(+RRtfreeargsR5R�toutgtcontR�RztrulesR�tgoalt parentctxnodeR�ttopmostRut currentparenttwantnullt parentctxtrepltmappingttmpnodestleafst_ntmtemptyR�trootRsR_R�R=RDtactionRetactfunct replacement_R�tntmtprectsuccsR�Rgtmarkers((Rs4/usr/lib64/python2.7/site-packages/hgext/histedit.pyR��s�   $       ( &       #   $(   $cCs~|jd�\}}||}g|jd|�D]}|j�^q2} |j�tjkr�| s�td�} td�|} tj| |d| ��n| jd�nd} |j�d \} }}}| s�|s�|s�|r�|dkrd |}n|j �d }|dkr(t j }nt }t ||�}|d|d|j�d|j�d|j�d|�} | dk r�| j| �q�ng}|j�| kr�|j|j�t| �f�n|dkr]| r8| dkr�| d} n | j�t||||| || �\}}|j|�qt|j|j�|j�ff�n| rt|| d}n||fS(Nis(%d::.)s*%s is not an ancestor of working directorysAupdate to %s or descendant and run "hg histedit --continue" againthintiR=Rksfold-temp-revision %ss R�RiR�R�RRRPRQRteditori����(R=sfold(R�seditR�R�(R=sfold(R�RURR*R R R�R,R}RWRRZR/R!RPRQRRoR�RjR�(RRR�R�R5R�t currentnodeR4R�t newchildrentmsgR�R`R�R>RsR�ROR�RRuR�((s4/usr/lib64/python2.7/site-packages/hgext/histedit.pyR�^sP +        "    %cCs�t|jd||��}|r�| r�tj r_|jd||�r_tjtd���n|d}|j�s�tjtd�|��q�ng|D]}|j �^q�S(soselect and validate the set of revision to edit When keep is false, the specified set can't have children.s%n::%ns(%ld::) - (%ld)s+cannot edit history that would orphan nodesis#cannot edit immutable changeset: %s( RTRUR R�R�R R�R R R(RtoldR`R�R_R�R�((s4/usr/lib64/python2.7/site-packages/hgext/histedit.pyR��s    cCsNttjj|jd�d�}tj|||||f|�|j�dS(Nshistedit-stateR�(R�R�RIRmtpickletdumpR�(Rt parentnodeR�R�R�Rutfp((s4/usr/lib64/python2.7/site-packages/hgext/histedit.pyR��s!cCs+ttjj|jd��}tj|�S(sIReturns a tuple of (parentnode, rules, keep, topmost, replacements). shistedit-state(R�R�RIRmR�tload(RR�((s4/usr/lib64/python2.7/site-packages/hgext/histedit.pyR��scCsLd}|j�r+|j�j�d}nd||j�|f}|d S(slbuild a initial action line for a ctx `c` line are in the form: pick <hash> <rev> <summary> R%is pick %s %d %siP(RWR�R3(R�tsummarytline((s4/usr/lib64/python2.7/site-packages/hgext/histedit.pyR��s  c Cs�g}td�|D��}t�}xB|D]:}d|krZtjtd�|��n|jdd�\}}|j�jdd�d} yt|| �} Wn-tjk r�tjtd�| ��nX| |kr�tjtd���n| |krtjtd�| ��n|j | �|t krStjtd �|��n|j || g�q,Wt ||�} | r�tjtd �| dd td ���n|S( s�Verify that there exists exactly one edit rule per given changeset. Will abort if there are to many or too few rules, a malformed rule, or a rule on a changeset outside of the user-given range. css|]}t|�VqdS(N(tstr(R�R�((s4/usr/lib64/python2.7/site-packages/hgext/histedit.pys <genexpr>�st smalformed line "%s"iisunknown changeset %s listeds1may not use changesets other than the ones listeds#duplicated command for changeset %ssunknown action "%s"smissing rules for changeset %sR�s#do you want to use the drop action?( RUR R�R tsplitR�R�Rt RepoErrortaddR�RoR�( R�RR_tparsedtexpectedtseenRsR�trestReR�((s4/usr/lib64/python2.7/site-packages/hgext/histedit.pyR��s4       cCs�t�}t�}i}xT|D]L}|j|d�|j|d�|j|dt��j|d�qW||}||@}t|�}i} x�|r-x�t|�D]{} || } xht| �D]C} | |kr�Pq�| | kr�| j| �| j| | �q�q�W| | | <|j| �q�Wq�Wx|D] } | | =q5W|jj}x3| j�D]%\}} t | d|j �| |<q_W|r�t |d|jj �d}n;| s�d}n,|t | d|jj �dj �j�}| |||fS(s�process the list of replacements to return 1) the final mapping between original and created nodes 2) the list of temporary node created by histedit 3) the list of new commit created by histeditiiR�i����N(RUR.R�t setdefaultRTtremoveR�tnodemaptitemsR�RR3R,R(R(RRutallsuccsR�t fullmappingtrepR`R�t toproceedtfinalRFR�R�RgtnmR�t newtopmost((s4/usr/lib64/python2.7/site-packages/hgext/histedit.pyR��sB   (             ,c CsQ|s dSg}x�t|jj��D]�\}}||krW|j||f�q&n|}|j|d�} | dkr�q&nx5| s�||j�j�}|j||f�} q�W|j|| df�q&W|rM|j} xZ|D]R\} } | | }|jt d�| tj |�tj | �f�| | | <q�W| j �ndS(s,Move bookmark from old to newly created nodeNi����s,histedit: moving bookmarks %s from %s to %s ( R�t _bookmarksR�RoRR,R(RtnoteR R�R1( RRR�t oldtopmostRtmovestbkR�R@R`tmarkstmark((s4/usr/lib64/python2.7/site-packages/hgext/histedit.pyR�$s."     #c Cs�|jd|djg|D]}tj|�^q�f�d}z�|j�}|jj}g|D]}||krd|^qd}g|jd|�D]}|j�^q�}x!|D]}t j |||�q�WWdt j |�XdS(sdstrip a group of nodes from the repository The set of node to strip may contains unknown nodes.sshould strip %s nodes %s s, s roots(%ln)N( RbRmRR�R,RR�R�RURR�tlockmodtrelease( RRtnametnodesRgRRR�troots((s4/usr/lib64/python2.7/site-packages/hgext/histedit.pyR�Fs 3  %+ (3t__doc__tcPickleR�t ImportErrorR�R�t mercurialRRRRRRRR RRR R R R R-tmercurial.i18nR tcmdtabletcommandt testedwithR�R!R8RaRhRiRkRjRwROR,R/R�R�R�R�R�R�R�R�R�R�R�R�(((s4/usr/lib64/python2.7/site-packages/hgext/histedit.pyt<module>�s�       F    +          � B    ! ; "