a —+«b¸ã%@sbdZddlmZddlZddlZddlmZddlmZm Z m Z m Z m Z m Z ddlmZdZiZe  e¡Zdd „Zed ged ƒejd d dd„ƒZdd„ZGdd„deƒZGdd„deƒZdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Z d$d%„Z!d&d'„Z"d(d)„Z#d*d+„Z$d,d-„Z%d.d/„Z&d0d1„Z'd2d3„Z(d4d5„Z)d6d7„Z*d8d9„Z+d:d;„Z,dd?„Z.d@dA„Z/dBdC„Z0dDdE„Z1dFdG„Z2dHdI„Z3dJdK„Z4dLdM„Z5dNdO„Z6dPdQ„Z7dRdS„Z8dTdU„Z9dVdW„Z:dXdY„Z;dZd[„Zd`da„Z?dbdc„Z@ddde„ZAdfdg„ZBeeeeeee!e"e#e$e%e'e(e)e*e+e,e-e.e/e0e1e2e3e4e5e6e7e8e9e:e;ee?e@eAdiœZDdS)jzötry 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. é)Úabsolute_importN)Ú_)ÚencodingÚerrorÚ fancyoptsÚpycompatÚ registrarÚscmutil)Úprocutilsships-with-hg-corecCs<| d¡r|dd…Sd|vr*| dd¡}t dd|¡}|S)Nsorigin/ésHEADó.s~$s~1)Ú startswithÚreplaceÚreÚsub)Ús©rú3/usr/lib64/python3.9/site-packages/hgext/githelp.pyÚconvert,s    rs githelp|gits hg githelpT)Z helpcategoryZ helpbasiccOsžt|ƒdks$t|ƒdkr2|ddkr2t tdƒ¡‚|ddkrJ|dd…}|d}|tvrlt tdƒ|¡‚| d¡|dd…}t|||g|¢Ri|¤ŽS)zgsuggests the Mercurial equivalent of the given git command Usage: hg githelp -- résgits8missing git command - usage: hg githelp -- Nserror: unknown git command %ssgithelp)ÚlenrÚAbortrÚ gitcommandsZpager)ÚuiÚrepoÚargsÚkwargsÚcmdrrrÚgithelp6s $ÿ    rc Csft|ƒ}i}t|ƒ}zt t|ƒ||d¡}Wq4Wqtjy0}zâd|jvrR‚d|j|jvrtdt |j¡}nsóz parseoptions..cSs.g|]&\}}t|tƒr"|t|ƒfn||f‘qSr)Ú isinstanceÚbytesr)r$ÚkÚvrrrr&usÿ)ÚlistrÚgetoptÚ GetoptErrorÚmsgÚoptrZbytestrrrrÚremoveÚ ExceptionÚwarnÚdictÚ iteritems)rÚ cmdoptionsrÚoptsÚexÚflagr/r"rrrÚ parseoptionsTsB  ÿþ *þÿr:c@sFeZdZdd„Zdd„Ze e¡Zdd„Zdd„Z d d „Z d d „Z d S)ÚCommandcCs||_g|_i|_dS©N)Únamerr7)Úselfr=rrrÚ__init__szCommand.__init__cCsŽd|j}|jrltt |j¡ƒD]J\}}|D]<}|rZt|tƒrDd}nd}||||f7}q,|d|f7}q,q |jrŠ|d7}|d |j¡7}|S)Nshg s %s %ds %s %ss %só ) r=r7Úsortedrr5r(ÚintrÚjoin)r>rr*Úvaluesr+ZfmtrrrÚ __bytes__„s  zCommand.__bytes__cCs|j |¡dSr<)rÚappend)r>ÚvaluerrrrF™szCommand.appendcCs|j |¡dSr<)rÚextend)r>rDrrrrHœszCommand.extendcCs|j |g¡}| |¡dSr<)r7Ú setdefaultrF)r>ÚkeyrGrDrrrÚ __setitem__ŸszCommand.__setitem__cCs t||ƒSr<©Ú AndCommand©r>ÚotherrrrÚ__and__£szCommand.__and__N) Ú__name__Ú __module__Ú __qualname__r?rErZ strmethodÚ__str__rFrHrKrPrrrrr;~s r;c@s$eZdZdd„Zdd„Zdd„ZdS)rMcCs||_||_dSr<©ÚleftÚright)r>rVrWrrrr?¨szAndCommand.__init__cCsd|j|jfS)Ns%s && %srU)r>rrrrT¬szAndCommand.__str__cCs t||ƒSr<rLrNrrrrP¯szAndCommand.__and__N)rQrRrSr?rTrPrrrrrM§srMcOszddg}t|||ƒ\}}| d¡r:| tdƒ¡tdƒ}n,tdƒ}| d¡sX| |¡n| tdƒ¡| t|ƒd ¡dS) N)óAóallNr'©ópópatchNr'r\sUnote: Mercurial will commit when complete, as there is no staging area in Mercurial ócommit --interactiveóaddrYs?note: use hg addremove to remove files that have been deleted ó )r:ÚgetÚstatusrr;rHr)©rrrrr6r7rrrrÚadd³s(þ ÿÿ   ÿÿrccOs,g}t|||ƒtdƒ}| t|ƒd¡dS)Nsimportr_©r:r;rar)©rrrrr6rrrrÚamÒs rfcOsvddtdfdg}t|||ƒ\}}tdƒ}| d¡r@| d¡|d<| d¡rX| d¡|d<| |¡| t|ƒd¡dS) Nr[r')r'ó directoryr'r'simport --no-commitó-prgs--prefixr_)rBr:r;r`rHrar)rbrrrÚapplyÙs þ   ricOs| tdƒ¡dS)Ns,see 'hg help bisect' for how to use bisect ©rar©rrrrrrrÚbisectêsrlcOsDg}t|||ƒ\}}tdƒ}| dd„|Dƒ¡| t|ƒd¡dS)Ns annotate -udlcSsg|] }t|ƒ‘qSrr#)r$r+rrrr&òr'zblame..r_©r:r;rHrar)rbrrrÚblameîs rnc Os*gd¢}t|||ƒ\}}tdƒ}| d¡s4| d¡rF| tdƒ¡dS| d¡rttdƒ}|D] }||d<q\d|d<n¢| d ¡rÒt|ƒd kr¨t|ƒd kr¢| d ¡}q¶d }nt td ƒ¡‚|d } ||d<|  | ¡nDt|ƒd krú|d |d<|  |d ¡nt|ƒd kr|  |d ¡| t |ƒd¡dS)N))r's set-upstreamNr')r'sset-upstream-tor'r'©ódódeleteNr')óDrqNr')ómómoveNr')óMrtNr'óbookmarks set_upstreamsset_upstream_tos.Mercurial has no concept of upstream branches rqsstripó-Brtrrs"`hg log -T"{activebookmark}" -r .`smissing newbranch argumentó-mó-rr_) r:r;r`rarrÚpoprrrFr)) rrrrr6r7rÚbranchÚoldÚnewrrrr{ös4          r{cCsht ||¡rdS| ¡}|dkr&|}n |d|}|j |¡}|rFdS|d ¡}||vpb| |¡}|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 Z isrevsymbolÚgetcwdZwvfsÚexistsÚmanifestZhasdir)rÚstringÚcwdZrepopathr€rZdidexistrrrÚispath"s    r„c Osägd¢}g}d|vr@| d¡}| ||dd…¡|d|…}t|||ƒ\}}d}|rpt||dƒrp||}n|rŒ|d}|dd…|}tdƒ} | d¡r®|s¦|r®d| d<| d¡rÈtd ƒ} d| d <| d ¡r*t|ƒdkrútd ƒ} |  | d ¡¡n.|  |d¡td ƒ} |  | d ¡¡| | @} n¦t|ƒdkr|| t d ƒ¡td ƒ} | d¡rbd| d <|rp|| d<|  |¡nT|r¤| d¡r˜|| d<n |  |¡n,| d¡rÂtd ƒ} d| d<nt   t dƒ¡‚| t | ƒd¡dS)N)©óbóbranchr'r')óBr‡r'r'©ófóforceNr'rZrrróupdater‹s-Cr\órevertó-ir‡rvs5note: use --no-backup to avoid creating .orig files ryó--allsa commit must be specifiedr_) ÚindexrHr:r„r;r`rrFrarrrr)) rrrrr6ÚpathsZsepindexr7ZrevrZbookcmdrrrÚcheckout?sZ               r’cOs€gd¢}t|||ƒ\}}tdƒ}| d¡r2d|d<| d¡rFd|d<n&| d¡rb| tdƒ¡dS| |¡| t|ƒd ¡dS) N)©r'ócontinueNr'©r'óabortNr')óeóeditNr'sgraftr˜s--editr”ó --continuer–s&note: hg graft does not have --abort r_©r:r;r`rarrHr)rbrrrÚ cherrypicks     r›cOsPgd¢}t|||ƒ\}}tdƒ}| d¡r2d|d<| |¡| t|ƒd¡dS)N))rprpNr'r‰)óxrœNr'spurgerœrr_)r:r;r`rHrar)rbrrrÚclean–s  rcOsÔgd¢}t|||ƒ\}}t|ƒdkr2t tdƒ¡‚tdƒ}| |d¡t|ƒdkrb| |d¡| d¡r„d|d<| tdƒ¡n| d ¡r–d|d<| d ¡rÀtd ƒ}| | d ¡¡||@}| t |ƒd ¡dS) N))r'óbareNr')óns no-checkoutNr'r…rs'a repository to clone must be specifiedóclonerržs-Usanote: Mercurial does not have bare clones. -U will clone the repo without checking out a commit s no_checkoutr‡rŒr_) r:rrrrr;rFr`rar))rrrrr6r7rZcocmdrrrÚclone¦s,   ÿÿ  r¡cOs gd¢}t|||ƒ\}}tdƒ}| d¡r2tdƒ}| d¡rX| d¡rPtdƒ}nd|d<| d¡rp| d¡|d <| d ¡rŽd | d ¡f|d <| d ¡r¦| tdƒ¡| d¡r¾| d¡|d<| d¡rÖ| d¡|d<| d¡rî| d¡|d<| |¡| t|ƒd¡dS)N) ©óarYNr')rsómessager'r'rZ)óCs reuse-messager'r')óFófiler'r')r'óauthorr'r')r'ódater'r')r'óamendNr')r'sno-editNr'ócommitr\r]rªsno_edits--amends reuse_messages-Mr¤s'%s'rxrYsqnote: Mercurial doesn't have a staging area, so there is no --all. -A will add and remove files for you though. r§ó-lr¨s-ur©ó-dr_ršrbrrrÚcommitÉs6        ÿÿ    r®cOs| tdƒ¡dS)NsXthis command has been deprecated in the git project, thus isn't supported by this tool )r3rrkrrrÚ deprecatedþs ÿÿr¯c Osªgd¢}t|||ƒ\}}tdƒ}| d¡r8| tdƒ¡| d¡rJd|d<t|ƒD]B}| |¡z| |¡||d<WqRty’|  |¡YqR0qR| t |ƒd¡dS) N)r¢)r'ócachedNr')óRóreverseNr'ódiffr°sLnote: Mercurial has no concept of a staging area, so --cached does nothing r²s --reverseryr_) r:r;r`rarr,r1Zrevsr2rFr))rrrrr6r7rÚarrrÚdiffs& ÿÿ      rµcOs| tdƒ¡dS)NsMercurial does not enable external difftool by default. You need to enable the extdiff extension in your .hgrc file by adding extdiff = to the [extensions] section and then running hg extdiff -p See 'hg help extdiff' and 'hg help -e extdiff' for more information. rjrkrrrÚdifftool's ÿÿr¶cOs–ddg}t|||ƒ\}}tdƒ}t|ƒdkr‚| |d¡t|ƒdkr‚| tdƒ¡|dd…D] }||jvrx||d<q`||d<q`| t|ƒd ¡dS) N©r'rYNr'r‰ópullrrónote: 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. rwryr_©r:r;rrFrarÚ _bookmarksr)©rrrrr6r7rr+rrrÚfetch5s$þ  ÿÿ   r½cOs:g}t|||ƒ\}}tdƒ}| |¡| t|ƒd¡dS)Nógrepr_rmrbrrrÚgrepRs  r¿cOsJg}t|||ƒ\}}tdƒ}t|ƒdkr6| |d¡| t|ƒd¡dS)Nóinitrr_©r:r;rrFrar)rbrrrÚinit_s  rÂc Os¬gd¢}t|||ƒ\}}| d¡p*| d¡}|rVtdƒ}||d<| dt|ƒ¡dS| tdƒ¡| tdƒ¡td ƒ}d|d <| d ¡rš| d ¡|d <| d ¡r¬d |d <| d¡r¾d|d<| d¡rÐd|d<| d¡râd|d<| d¡s| d¡s| d¡rJ| dd¡}d|vr4| tdƒ¡d|d<n| tdƒ¡d|d<t|ƒdkr˜d|dvrŽ|d d¡\} } d | | f|d!<|d=| |¡| t|ƒd"¡dS)#N) )r'sfollowNr')r'sdecorateNr')rŸónumberr'r')ó1rÄNr'©r'óprettyr'r')r'óformatr'r')r'óonelineNr')r'óstatNr')r'ógraphNr'rZ)óGs grep-diffr'r')óSs pickaxe-regexr'r's grep_diffs pickaxe_regexr¾s--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-vrÃr¬rÄrÉó--statrÊs-Gr\rhrÆrÇrÈr'óformat: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'ryr_) r:r`r;rar)rrÚsplitrH) rrrrr6r7Zgrep_patrÚformatZsinceZuntilrrrÚlogkshÿÿÿÿ     $  ÿÿ ÿÿ rÒcOsúgd¢}t|||ƒ\}}| d¡s@| d¡s@| d¡s@| d¡r’tdƒ}| d¡rZd|d<| d¡rld|d<| d¡r~d|d <| d¡ršd|d <ntd ƒ}| d ¡r²| td ƒ¡| d¡rÄd|d<| d¡|D]}t |¡|d<qÒ| t|ƒd¡dS)N))ócr°Nr')rpódeletedNr')rsómodifiedNr')óoóothersNr')óióignoredNr')ósóstageNr')ózó_zeroNr'rÕrÔr×rÙóstatusr­rxs-orŽsfilesrÛs>note: Mercurial doesn't have a staging area, ignoring --stage rÝs-0r s-Ir_) r:r`r;rarrFr Z shellquoter))rrrrr6r7rZincluderrrÚlsfiles»s@ ÿþýü      ÿÿ  rßcOsRg}t|||ƒ\}}tdƒ}t|ƒdkr>| |t|ƒd¡| t|ƒd¡dS)Nómergerrr_rÁrbrrrÚmergeès  rácOshg}t|||ƒ\}}t|ƒdkr(ddg}td|d|dfƒ}| tdƒtdƒ¡| t|ƒd ¡dS) NérXrˆs&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') r_)r:rr;rarr)rbrrrÚ mergebaseôs ÿþrãcOsNg}t|||ƒ\}}tdƒ}t|ƒdkr0d|d<| |¡| t|ƒd¡dS)Nsresolverrr_)r:r;rrHrar)rbrrrÚ mergetools  räcOsbddg}t|||ƒ\}}tdƒ}| |¡| d¡r -s r­râs(expected format: git rebase --onto X Y Zs '::%s - ::%s'rs-ss-b) r:r`rarr;rr)rrrrbrrrÚrebasecsR ÿÿ ÿÿ   ÿÿ"rôcOsldg}t|||ƒ\}}tdƒ}| d¡r0d|d<t|ƒdkrJ| |d¡| t|ƒd¡| tdƒ¡dS)Nr·sjournalrYrrs sHnote: in hg commits can be deleted from repo but we always have backups )r:r;r`rrFrar)rrbrrrÚreflog¡sÿ  ÿÿrõc Os¢gd¢}t|||ƒ\}}tt|ƒdkr.|dndƒ}| d¡}| d¡rV| tdƒ¡| d¡rn| tdƒ¡td ƒ}|r„| d ¡| |¡| t|ƒd ¡dS) N))r'ósoftNr')r'óhardNr')r'ómixedNr'rr 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 rŒs--cleanr_) r:rrr`rarr;rFr)) rrrrr6r7r®ZhardrrrrÚreset¶s*  ÿÿ ÿÿ  rùcOs\g}t|||ƒ\}}t|ƒdkr.| tdƒ¡tdƒ}|rH| |d¡| t|ƒd¡dS)Nrs;note: hg backout doesn't support multiple commits at once sbackoutrr_)r:rrarr;rFr)rbrrrÚrevertÙs ÿÿrúcOspddg}t|||ƒ\}}| d¡s,| d¡r^tdƒ}| d¡rL| tdƒ¡| t|ƒd¡n| tdƒ¡dS) N)r's show-cdupNr')r's show-toplevelNr's show_cdups show_toplevelsroots1note: hg root prints the root of the repository r_s5note: see hg help revset for how to refer to commits )r:r`r;rarr)rbrrrÚrevparseìsþ rûcOsbddg}t|||ƒ\}}tdƒ}| |¡| d¡rspopóapplysunshelves--keepr‡screatesTnote: Mercurial doesn't have equivalents to the git stash branch or create actions ssaves--namer_)r:r;rr`rFrarr))rrrrr6r7rÚactionrrrÚstash/sRÿ          ÿÿ rcOsNdg}t|||ƒ\}}tdƒ}| |¡| d¡r:d|d<| t|ƒd¡dS)N)r'rÙNr'rÞrÙrŽr_rêrbrrrracsÿ  racOs\|st tdƒ¡‚|d}|tvr4t tdƒ|¡‚|dd…}t|||g|¢Ri|¤ŽS)Nsmissing svn commandrsunknown git svn command "%s"r)rrrÚgitsvncommands)rrrrZsvncmdrrrÚsvnrs rcOs,g}t|||ƒtdƒ}| t|ƒd¡dS)Nrïr_rdrerrrÚ svndcommit}s rcOs6g}t|||ƒtdƒ}| d¡| t|ƒd¡dS)Nr¸ó default-pushr_©r:r;rFrar)rerrrÚsvnfetch†s   r cOsNg}t|||ƒ\}}|s&t tdƒ¡‚tdƒ}|d|d<| t|ƒd¡dS)Nsmissing find-rev argumentrÍrryr_)r:rrrr;rar)rbrrrÚ svnfindrevs r cOsRdg}t|||ƒtdƒ}| d¡tdƒ}| d¡||@}| t|ƒd¡dS)N)ólslocalNr'r¸rrístipr_r )rrrrr6ZpullcmdZ rebasecmdrrrrÚ svnrebasesÿ   r cOs¤gd¢}t|||ƒ\}}| d¡r,tdƒ}ndtdƒ}|sFt tdƒ¡‚| |d¡t|ƒdkrl|d|d<| d ¡r~d|d <| d ¡rd|d <| t |ƒd ¡dS)N)r‰)r rNr'rorstagsótagsmissing tag argumentrrryrqs--remover‹rçr_) r:r`r;rrrrFrrar)rbrrrÚtag­s      r)$r^samrsbisectsblamer‡scheckouts cherry-pickscleanr r«r³sdifftoolófetchr¾rÀrÍsls-filesràs merge-bases mergetoolrær¸rïrísreflogsresetrs rev-parserürsstashrÞssvnrs whatchanged)sdcommitrsfind-revrí)EÚ__doc__Z __future__rr-rZmercurial.i18nrZ mercurialrrrrrr Zmercurial.utilsr Z testedwithZcmdtableZcommandrZ CATEGORY_HELPrr:Úobjectr;rMrcrfrirlrnr{r„r’r›rr¡r®r¯rµr¶r½r¿rÂrÒrßrárãrärërîrðrôrõrùrúrûrýrÿrrarrr r r rrrrrrrÚsÐ      û *) ,@#5    P-   >#!4    Ü(ü