^cidZddlZddlZddlmZddlmZmZmZm Z m Z m Z ddl m Z dZiZe jeZdZedged ejd d Zd ZGddZGddZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$d Z%d!Z&d"Z'd#Z(d$Z)d%Z*d&Z+d'Z,d(Z-d)Z.d*Z/d+Z0d,Z1d-Z2d.Z3d/Z4d0Z5d1Z6d2Z7d3Z8d4Z9d5Z:d6Z;d7Zd:Z?id;eded?ed@edAedBedCe dDe!dEe"dFe$dGe%dHe&dIe'dJe(dKe)idLe*dMe+dNe,dOe-dPe.dQe/dRe0dSe1dTe2dUe3dVe4dWe5dXe6dYe7dZe8d[e9d\e:e?e#d]Z@e;ed^ZAdS)_ztry mapping git commands to Mercurial commands Tries to map a given git command to a Mercurial command: $ hg githelp -- git checkout master hg update master If an unknown command or parameter combination is detected, an error is produced. N)_)encodingerror fancyoptspycompat registrarscmutil)procutilsships-with-hg-corec|dr |ddSd|vr|dd}tjdd|}|S)Nsorigin/sHEAD.s~$s~1) startswithreplaceresub)ss //usr/lib/python3/dist-packages/hgext/githelp.pyconvertr+sW||Ju !|| IIgt $ $ ueQA Hs githelp|gits hg githelpT) helpcategory helpbasicct|dkst|dkr-|ddkr!tjtd|ddkr |dd}|d}|tvr$tjtd|z|d|dd}t |||g|Ri|S)zgsuggests the Mercurial equivalent of the given git command Usage: hg githelp -- rsgits8missing git command - usage: hg githelp -- Nserror: unknown git command %ssgithelp)lenrAbortr gitcommandspager)uirepoargskwargscmds rgithelpr#5s 4yyA~~#d))q..T!W->->k I J J    Aw&ABBx q'C +  k!<==CDDDHHZ 8D s B 6t 6 6 6v 6 66rc t|}i}t|} tjt|||d}nr#tj$r]}d|jvrd|jz|jvrdt j|jz}nid|jz|jvrdt j|jz}n;tj tdt j|jz | |nv#t$ritd}td }tj |t j|jz|t j|jz wxYw| td |zYd}~nd}~wwxYwtd |D}td |D}||fS)NTzrequires argumentz------sunknown option %ss-unknown option '%s' packed with other optionss2please try passing the option as its own flag: -%s)hintsignoring unknown option %s c,g|]}t|Sr).0xs r z parseoptions..rs******rchg|]/\}}t|tr|t|fn||f0Sr*) isinstancebytesr)r,kvs rr.z parseoptions..tsM   1 *!U33 ?Q OO!Q   r)listrgetopt GetoptErrormsgoptrbytestrrrrremove Exceptionwarndictitems)r cmdoptionsr optsexflagr7r(s r parseoptionsrCSs+j!!J D ::D? ?&tDzz:tTJJD ! ? ? ?"bf,,rv "&((x/777,26))h.rv666k*++h.>rv.F.FF  D!!!!   HIINOOk(*26222 0 8 88  GGA566= > > > > > > > >+ ? ?6 **T*** + +D         D :s1$A F6B!F1;DF1A3F(F11F6cReZdZdZdZejeZdZdZ dZ dZ dS)Commandc0||_g|_i|_dSN)namer r@)selfrHs r__init__zCommand.__init__~s   rc<d|jz}|jrat|jD]:\}}|D]2}|r%t |t rd}nd}||||fzz })|d|fzz }3;|jr"|dz }|d|jz }|S)Nshg s %s %ds %s %ss %s )rHr@sortedr>r0intr join)rIr"r2valuesr3fmts r __bytes__zCommand.__bytes__sty  9 -#DIOO$5$566 - - 6 - -A-%a--,"+CC"+CsaV|+v}, - 9 ( 4KC 499TY'' 'C rc:|j|dSrG)r append)rIvalues rrTzCommand.appends rc:|j|dSrG)r extend)rIrPs rrWzCommand.extends      rcf|j|g}||dSrG)r@ setdefaultrT)rIkeyrUrPs r __setitem__zCommand.__setitem__s1%%c2.. erc"t||SrG AndCommandrIothers r__and__zCommand.__and__$&&&rN) __name__ __module__ __qualname__rJrRr strmethod__str__rTrWr[rar*rrrErE}s &!h ++G   !!!'''''rrEc eZdZdZdZdZdS)r^c"||_||_dSrGleftright)rIrkrls rrJzAndCommand.__init__s  rc$d|j|jfzS)Ns%s && %srj)rIs rrgzAndCommand.__str__sdi444rc"t||SrGr]r_s rrazAndCommand.__and__rbrN)rcrdrerJrgrar*rrr^r^sA555'''''rr^cddg}t|||\}}|dr2|tdt d}n\t d}|ds||n"|td|t |d dS) N)AallNrppatchNrrtsUnote: Mercurial will commit when complete, as there is no staging area in Mercurial commit --interactiveaddrqs?note: use hg addremove to remove files that have been deleted  )rCgetstatusrrErWr1rrr r!r?r@r"s raddr{s!#Jb*d33JD$ xx @     -..fooxx  JJt     II(   IIuSzzE"""""rcg}t|||td}|t|ddS)NsimportrwrCrEryr1rrr r!r?r"s ramrsFJZ&&& )  CIIeCjj%     rcddtdfdg}t|||\}}td}|dr|d|d<|dr|d|d<|||t |ddS) Nrsr)r directoryrrsimport --no-commit-prs--prefixrw)rNrCrErxrWryr1rzs rapplyrs tS#%Jb*d33JD$ ' ( (C xx~~$XXd^^E  xx 288L11KJJtIIuSzzE"""""rcJ|tddS)Ns,see 'hg help bisect' for how to use bisect ryrrrr r!s rbisectrs#IIaABBCCCCCrcg}t|||\}}td}|d|D|t |ddS)Ns annotate -udlc,g|]}t|Sr*r+)r,r3s rr.zblame..s)))q )))rrwrCrErWryr1rzs rblamerskJb*d33JD$ " # #CJJ))D)))***IIuSzzE"""""rcgd}t|||\}}td}|ds|dr$|t ddS|dr td}|D]}||d<d|d<n|d rt |d kr,t |d kr|d }n$d }n!tjt d |d } ||d<| | nht |d kr'|d |d<| |d n.t |d kr| |d |t|ddS)N))rs set-upstreamNr)rsset-upstream-torrddeleteNr)DrNr)mmoveNr)MrNrbookmarks set_upstreamsset_upstream_tos.Mercurial has no concept of upstream branches rsstrip-Brrrs"`hg log -T"{activebookmark}" -r .`smissing newbranch argument-m-rrw) rCrErxryrrpoprrrTr1) rrr r!r?r@r"brancholdnews rrrsJb*d33JD$ +  C xx   DHH-?$@$@  !FGGHHH )   h  FCJJCJJ '   t99q==4yy1}}hhqkk<+a =>>?? ?1gE  3 t99q==aCJ JJtAw     YY!^^ JJtAw   IIuSzzE"""""rc tj||rdS|}|dkr|}n|dz|z}|j|}|rdS|d}||vp||}|S)a The first argument to git checkout can either be a revision or a path. Let's generally assume it's a revision, unless it's obviously a path. There are too many ways to spell revisions in git for us to reasonably catch all of them, so let's be conservative. Fr/Tr )r isrevsymbolgetcwdwvfsexistsmanifesthasdir)rstringcwdrepopathrrdidexists rispathr!s4((u ++--C czz:& Y  h ' 'F tDz""$$HH$B)B)BH Orcgd}g}d|vr?|d}|||dzd|d|}t|||\}}d}|rt||dr||z}n|r|d}|dd|z}t d} |dr |s|rd| d<|drt d } d| d <|d rt |dkr9t d } | |d nQ| |dt d } | |d | | z} nt |dkrh|td t d } |drd| d <|r|| d<| |n~|r1|dr|| d<na| |nK|drt d } d| d<n!tj td|t| ddS)N)bbranchrr)BrrrfforceNrrrr%rrupdaters-Crtrevert-irrs5note: use --no-backup to avoid creating .orig files r--allsa commit must be specifiedrw) indexrWrCrrErxrrTryrrrr1) rrr r!r?pathssepindexr@revr"bookcmds rcheckoutr>sJ E }}::e$$ T(Q,..)***IXIb*d33JD$ C !tT!W%%!u  !1gQRR5  )  C xx  C CJ xxi  E  xx < t99>>+&&C JJtxx ** + + + + JJtAw   k**G NN488I.. / / /-CC Ua !NOOPPPi   88H   CJ  CJ 5 < 88H   CJJ JJsOOOO (  <i  H k!9::;;;IIuSzzE"""""rcgd}t|||\}}td}|drd|d<|drd|d<nN|dr$|t ddS|||t |d dS) N)rcontinueNrrabortNr)eeditNrsgraftrs--editr --continuers&note: hg graft does not have --abort rwrCrErxryrrWr1rzs r cherrypickr~sJ b*d33JD$ (  C xxI xx !M (   !?@@AAA 4IIuSzzE"""""rcgd}t|||\}}td}|drd|d<|||t |ddS)N))rrNrr)xrNrspurgerrrw)rCrErxrWryr1rzs rcleanrsJ b*d33JD$ (  C xx~~H JJtIIuSzzE"""""rcgd}t|||\}}t|dkr!tjt dt d}||dt|dkr||d|dr(d|d<|t dn|d rd|d<|d r See 'hg help extdiff' and 'hg help -e extdiff' for more information. rrs rdifftoolr&s4II         rcddg}t|||\}}td}t|dkrq||dt|dkrC|t d|ddD]}||jvr||d<||d<|t|d dS) NrrqNrrpullrrnote: Mercurial doesn't have refspecs. -r can be used to specify which commits you want to pull. -B can be used to specify which bookmark you want to pull. rrrwrCrErrTryr _bookmarksr1rrr r!r?r@r"r3s rfetchr4s #Jb*d33JD$ '  C 4yy1}} 47 t99q== II)   !""X # #''!"CJJ!"CJJIIuSzzE"""""rcg}t|||\}}td}|||t |ddS)Ngreprwrrzs rgreprQs]Jb*d33JD$ '  CJJtIIuSzzE"""""rcg}t|||\}}td}t|dkr||d|t |ddS)NinitrrwrCrErrTryr1rzs rinitr^snJb*d33JD$ '  C 4yy1}} 47IIuSzzE"""""rc.gd}t|||\}}|dp|d}|r;td}||d<|dt |zdS|t d|t dtd }d|d <|d r|d |d <|d rd |d <|drd|d<|drd|d<|drd|d<|ds*|ds|dri|dd}d|vr(|t dd|d<n'|t dd|d<t |dkrJd|dvr+|dd\} } d | | fz|d!<|d=|||t |d"dS)#N) )rsfollowNr)rsdecorateNr)rnumberrr)1rNrrprettyrr)rformatrr)ronelineNr)rstatNr)rgraphNrrr)Gs grep-diffrr)Ss pickaxe-regexrrs grep_diffs pickaxe_regexrs--diffs%s senote: -v prints the entire commit message like Git does. To print just the first line, drop the -v. sFnote: see hg help revset for information on how to filter log output logs-vrrrr--statrs-Grtrrrrrformat:scnote: --format format:??? equates to Mercurial's --template. See hg help templates for more info. s???s --templatesqnote: --pretty/format/oneline equate to Mercurial's --style or --template. See hg help templates for more info. s--stylers..s'%s::%s'rrw) rCrxrEryr1rrsplitrW) rrr r!r?r@grep_patr"formatsinceuntils rlogr js   Jb*d33JD$xx %%C2B)C)CHg!I 'E#JJ&'''II  ;   II     &//CCJ xx )XXi((E  xx~~E  xxI xxE  xxE  xx %dhhy11%TXXj5I5I%)S))    IIL    "(C   II&   %C O 4yy1}} DG  7==//LE5$u~5CJQ 4IIuSzzE"""""rc6gd}t|||\}}|ds?|ds*|ds|drxtd}|drd|d<|drd|d<|drd|d <|drd|d <ntd }|d r"|t d |drd|d<|d|D]}t j||d<|t|ddS)N))crNr)rdeletedNr)rmodifiedNr)oothersNr)iignoredNr)sstageNr)z_zeroNrrr rrstatusrrs-orsfilesrs>note: Mercurial doesn't have a staging area, ignoring --stage rs-0r s-Irw) rCrxrEryrrTr shellquoter1)rrr r!r?r@r"includes rlsfilesrsJb*d33JD$  88J    88I    88J    i   88J   CJ 88K  CJ 88I   CJ 88J   CJh xx        xxE JJt22(11E IIuSzzE"""""rcg}t|||\}}td}t|dkr+||t|dz |t |ddS)Nmergerrrwrrzs rmergersyJb*d33JD$ (  C 4yy1}} 4D A &'''IIuSzzE"""""rcFg}t|||\}}t|dkrddg}td|d|dfz}|t dt d|t |d dS) Nrprs&log -T '{node}\n' -r 'ancestor(%s,%s)'rrs1note: ancestors() is part of the revset language s3(learn more about revsets with 'hg help revsets') rw)rCrrEryrr1rzs r mergebaser sJb*d33JD$ 4yyA~~d| 2d1gtAw5GG  CII ?@@ BCCIIuSzzE"""""rcg}t|||\}}td}t|dkrd|d<|||t |ddS)Nsresolverrrw)rCrErrWryr1rzs r mergetoolr"ssJb*d33JD$ *  C 4yyA~~H JJtIIuSzzE"""""rc,ddg}t|||\}}td}|||drd|d<|drd|d<|t |ddS) Nrrsdry-runNrmvr-fdry_run-nrwrCrErWrxryr1rzs rmvr*#%Jb*d33JD$ %..CJJt xxE  xx E IIuSzzE"""""rcgd}t|||\}}td}d|d<t|dkrq||dt|dkrC|t d|ddD]}||jvr||d<||d<|t|d dS) N)rr)rrebaseNrrs--rebaserrrrrrwrrs rpullr/#sJ b*d33JD$ '  CC  4yy1}} 47 t99q== II)   !""X # #''!"CJJ!"CJJIIuSzzE"""""rcddg}t|||\}}td}t|dkrq||dt|dkrC|t d|ddD]}||jvr||d<||d<|d rd|d <|t|d dS) Nrrpushrrsnote: Mercurial doesn't have refspecs. -r can be used to specify which commits you want to push. -B can be used to specify which bookmark you want to push. rrrr&rw) rCrErrTryrrrxr1rs rpushr2Bs #Jb*d33JD$ '  C 4yy1}} 47 t99q== II-   !""X # #''!"CJJ!"CJJ xxE IIuSzzE"""""rcZgd}t|||\}}|dr|tdt d}t |dkr"|td|t |ddS|dr2t d }|t |dt d }|d s|drd|d <|d rd|d<|dr|tdt|d|d<t |dkr!tj tddt|dt|dfz|d<not |dkrt|d|d<nCt |dkr0t|d|d<t|d|d<|t |ddS)N)r)r interactiveNr)rontorrrr)rskipNrr4sEnote: hg histedit does not perform a rebase. It just edits history. shisteditrscalso note: 'hg histedit' will automatically detect your stack, so no second argument is necessary rwr6srevert --all -r .r.rrrs--abortr5sxnote: if you're trying to lift a commit off one branch, try hg rebase -d -s rrs(expected format: git rebase --onto X Y Zs '::%s - ::%s'rs-ss-b) rCrxryrrErr1rrrrzs rrebaser7bsJb*d33JD$ xx .     k"" t99q== IIK    5::&&& xx'*++ 5::&&& )  C xx " 1 1"!M xxJ xx*      TXXg..//E t99q==+a KLLMM M%a)9)9747;K;K(LLE t99>> a))CJJ YY!^^ a))CJ a))CJIIuSzzE"""""rcldg}t|||\}}td}|drd|d<t|dkr||d|t |d|tddS)Nrsjournalrqrrs sHnote: in hg commits can be deleted from repo but we always have backups )rCrErxrrTryr1rrzs rreflogr9s Jb*d33JD$ *  C xxH  4yy1}} 47IIeCjj'"""II    rcLgd}t|||\}}tt|dkr|dnd}|d}|dr"|t d|dr"|t dt d }|r|d |||t|d dS) N))rsoftNr)rhardNr)rmixedNrrr r<r=sBnote: --mixed has no meaning since Mercurial has no staging area r;sAnote: --soft has no meaning since Mercurial has no staging area rs--cleanrw) rCrrrxryrrErTr1) rrr r!r?r@rhardr"s rresetr?s3J b*d33JD$ D A T!WW4 8 8F 88G  D xx  $      xx  $      )  C  :JJvIIuSzzE"""""rc:g}t|||\}}t|dkr"|tdt d}|r||d|t |ddS)Nrs;note: hg backout doesn't support multiple commits at once sbackoutrrw)rCrryrrErTr1rzs rrevertrAsJb*d33JD$ 4yy1}}       *  C  47IIuSzzE"""""rcddg}t|||\}}|ds|drktd}|dr"|t d|t |ddS|t ddS) N)rs show-cdupNr)rs show-toplevelNrs show_cdups show_toplevelsroots1note: hg root prints the root of the repository rws5note: see hg help revset for how to refer to commits )rCrxrEryrr1rzs rrevparserCs&*Jb*d33JD$ xx P*:!;!;Pg 88L ! ! Q IIaNOO P P P 5::&&&&& !MNNOOOOOrc,ddg}t|||\}}td}|||drd|d<|drd|d<|t |ddS) Nrr$rmrr&r'r(rwr)rzs rrmrFr+rcVddddtdfg}t|||\}}|dri|ddkrtd }d |d <ntd }|d |dnt |dkrt ||drtd}ntd}|||dr|d|dfznS|dr/td}|d|dfzntd}|t|ddS)N)rs name-statusNrrUsunifiedrs name_statusrrrr s--changers--style statuss-r .rscatsexports--config diff.unified=%drw) rNrCrxrErTrrrWryr1rzs rshowrI s(" z3$J b*d33JD$ xx! 88I  * , ,)$$C#C  &//C JJ( ) ) ) JJw     TQ $Q  %&//CC)$$C 4 88J   J JJ2d:6F5HH I I I *  !i   .$z2B1DDEEEEi  IIuSzzE"""""rc"dg}t|||\}}td}t|dkr|dnd}|dkr!d|d<|drd|d<n|dkrP|drd|d<nd|d <t|d kr||d n+|d krd|d <n|d krJd|d<t|d kr||d n|dn|dks|dkrItd}t|d kr||d |dkrd|d<ny|dks|dkr$|t ddSt|dkr6|ddkr |d|d<nt|d kr |d |d<|t|ddS)Nrrsshelverlistrrtrshowrrsclears --cleanupsdroprs spopapplysunshelves--keeprscreatesTnote: Mercurial doesn't have equivalents to the git stash branch or create actions ssaves--namerw)rCrErrxrTryrr1)rrr r!r?r@r"actions rstashrO.sI#Jb*d33JD$ )  CD A T!WW4F E 88H   CJ 7   88H   "CJJ!C N t99q== JJtAw    8   L 7  E t99q== JJtAw     JJ' ( ( ( ( 6  Vx//k"" t99q== JJtAw    X  !C N 9  ) 3 3 :      t99q==Aw'!!!%aITQ!%aIIIuSzzE"""""rcdg}t|||\}}td}|||drd|d<|t |ddS)N)rrNrrrrrwr)rzs rryrybs$Jb*d33JD$ )  CJJt xx E IIuSzzE"""""rc|s!tjtd|d}|tvr$tjtd|z|dd}t|||g|Ri|S)Nsmissing svn commandrsunknown git svn command "%s"r)rrrgitsvncommands)rrr r!svncmds rsvnrTqs 5k!233444 !WF ^##k!;<rns   %$$$$$ #  ) H % %    Am& 777.'''T&'&'&'&'&'&'&'&'R ' ' ' ' ' ' ' '###>!!!###"DDD###)#)#)#X:=#=#=#@###. # # # # # #F2#2#2#j###@   ###: # # # # # #M#M#M#`*#*#*#Z # # ####$ # # ####$###>###@;#;#;#|* # # #F###& P P P ###$###B1#1#1#h # # #===###### # # # # # # ###:% C% 2% e%v %  e % v %%J% e% e%v% T%% e% T%  T!%" C#%%$%%& e'%(9)%*)+%, 2-%. T/%0 T1%2v3%4v5%6 e7%8v9%:(;%< 2=%> T?%@ eA%BvC%D CE%%F I%%% P r