a +bPE@sddlmZddlZddlmZddlmZddlmZm Z m Z m Z ddl m Z Gdd d eZhd ZGd d d e je jZdS) )absolute_importN)_)sha1nodeconstants)configerrorpycompatutil)commonc@s$eZdZddZddZddZdS) submodulecCs||_||_||_dSN)pathnodeurl)selfr rrr7/usr/lib64/python3.9/site-packages/hgext/convert/git.py__init__szsubmodule.__init__cCsd|j|jfS)Ns %s = [git]%s)r rrrrrhgsubszsubmodule.hgsubcCsd|j|jfS)Ns%s %s)rr rrrr hgsubstate szsubmodule.hgsubstateN)__name__ __module__ __qualname__rrrrrrrr sr >parentstreesclose committersbranchauthorcseZdZddZddZddZddZd d Zd d Zd-fdd Z ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd.d+d,ZZS)/ convert_gitcOs|d|jg|Ri|S)Ns --git-dir=%sr )rcmdargskwargsrrr_gitcmd6szconvert_git._gitcmdcOs|j|jg|Ri|Sr )r"Zrun0rr r!rrrgitrun09szconvert_git.gitrun0cOs|j|jg|Ri|Sr )r"runr#rrrgitrun<szconvert_git.gitruncOs|j|jg|Ri|Sr )r"Z runlines0r#rrr gitrunlines0?szconvert_git.gitrunlines0cOs|j|jg|Ri|Sr )r"Zrunlinesr#rrr gitrunlinesBszconvert_git.gitrunlinescOs|j|jg|Ri|Sr )r"Z_run3r#rrrgitpipeEszconvert_git.gitpipeNcsPtt|j||||dtj||dt|}tj |drJ|d7}tj |dslt t d|| dd}|dks|d krtt d |dkrd |g|_|dd }|r|jd | dd}|jd|ng|_tdd||_g|_|dd|_|jdd|_t|jt@}|rTtt dt dt||jdd} d} d} | D]^} | drn| } d}d| vr| dd\} }| dkr|pd} n| dkrn|pd} qn| r| rtt dd| v}d| v}|r|rtt d|r,| r,tt d | s<| sZrepotyper r*Z similarityZfindcopiesharderZ renamelimitZbannedrFmessagedifferent messagealwaysakvZ dropcommitterZ replaceauthor __class__rrrHs                zconvert_git.__init__cCs|jD] }|qdSr )r=close)rfrrrafters zconvert_git.aftercCs|js4|ddd\}}|}|r~ttdnJg}|jD]>}|dd|\}}||dd|r>ttd|q>|S)N rev-parses --branchess --remotesscannot retrieve git headss--verifyscannot retrieve git head "%s")r*r& splitlinesrr8rr;)routputstatusZheadsrevZrawheadretrrrgetheadss zconvert_git.getheadscCs|tjkrt|jd|d|jd|jd}|d|krjt t dt ||ft |d}|jd|}t||krt t d||f|jdd|S)Nr r scannot read %r object at %ss,cannot read %r object at %s: unexpected size)rnullhexIOErrorr=writeflushreadlinerErr8rrbytestrintreadlen)rrVZftypeinfosizedatarrrcatfiles*     zconvert_git.catfilecCs||tjkrdS|dkr4ddd|D}d}n@|dkrZddd|D}d}n||d }|j||f}||fS) N)NN.hgsubrYcSsg|] }|qSr)r.0mrrr z'convert_git.getfile..rm .hgsubstatecSsg|] }|qSr)rrirrrrlrmsblob)rr[rB submoditerrg modecache)rnamerVrfmoderrrgetfiles  zconvert_git.getfileccs2tj}t|jdddD]}|j|kr|VqdS)NcSs|jSr r)prrrrmz(convert_git.submoditer..)key)rr[rCr<r)rZnullrkrrrros zconvert_git.submoditerc Cs|g|_t}|dddd|dD|D]>}t||}d|vr8d|vr8|jt |dd|dq8dS) zParse the formatted .gitmodules file, example file format: [submodule "sub"] path = sub url = git://giturl .gitmodulesrYcss|]}|VqdSr )strip)rjlinerrr rmz.convert_git.parsegitmodules..surlspathrmN) r<rparserBrEZsectionsdictitemsr;r )rZcontentcZsecsrrrparsegitmoduless zconvert_git.parsegitmodulescCs|dd|df\}}|r4|jtd|dSz||Wn*tjyl|jtd|YdS0|jD].}|dd||jf\}}|rqt| |_ qtdS)Nsshows%s:%srws2warning: cannot read submodules config file in %s s+warning: unable to parse .gitmodules in %s rQ) r&r>warnrrrZ ParseErrorr<r rxr)rversionmodulesrWrkrrrrretrievegitmoduless,   zconvert_git.retrievegitmodulescs|rttdi_gdj|g}j|\}}|rPttd|gi}td}dgdg|d}t|} d} j ddfd d } | | kr|| } | d 7} |s| d sqt d d| D}q| } |dddkr | }|| }| d 7} |} |||<| vr6| || d|dddkr|| }| d 7} |vr| ||d| dkr|dkr| ||<d}qdrʈdr dtjfn| d|tfS)Ns(convert from git does not support --full) diff-trees-z--root-m-rcannot read changes in %sFrr+sgit.skipsubmodulescs||d}|ddk}|ddk}| o>|dddk}|dkrrPdSd d<|dd ksh|rd d<d tjfqd n\|dd ks|ddkrsd d<n6|rtj}|rdp|rdpdj||f<||fdS)Nr s100755s120000rRrwTDrh)rhrms160000s:160000xlrm)addr;rr[rp)entryrOZisdesthrtrZ renamesourcechangesseenrZskipsubmodulesZ subdeletedZ subexistsrrr3s(     z#convert_git.getchanges..addr :css|]}t|VqdSr )rr`)rjrtrrrrzSrmz)convert_git.getchanges..rCrTrwrn)rnrm)rr8rrpr9r&r@rErcr>r:rDtupler;rr[r)rrZfullrrTrUZcopiesrZdifftreeZlcountirlrOZcopysrcZcopydestZfdestrrr getchangessl           zconvert_git.getchangesc Cs<||d}|d}||dd}||}|d|}g}d}}i} |ddD]} | dd\} } | dkr| } | dd\}}d| dd}|dd kr|dd }||}| d kr| } | dd\}}d| dd}|dd kr|dd }||}| d kr0|| | |jvr\| | | <q\|jd rVd}n|jdrf|}|r|jd}|jd}|r|d||f7}n |r||kr|d||f7}|ddd|dd|dd}}}t | t |dt |}|dd|}|j dd}t j |||||| |d}|S)Nscommits rZr  rrr:r Zcommit)rrr~endmessagerrrZ committerrenrKrtZtmZtzrHrGZtzsZtzhZtzmrrrrr getcommittsj                 , zconvert_git.getcommitcCs0|dd\}}|r(ttd|jt|S)Nsrev-lists--alls'cannot retrieve number of commits in %s)r(rr8rr rc)rrTrWrrr numcommitss  zconvert_git.numcommitsc Csi}i}|dd|j\}}|r4ttd|jd}|D]d}|}|ds\|drpttd|j|dd\}}||sq<|||t|d<q<|D]@}| dr||||dd <q|d|vrqq||||<q|S) Ns ls-remotes--tagsscannot read tags from %ss refs/tags/serror:sfatal:r s^{}) r(r rr8rrxrDrErcendswith) rtagsZalltagsrTrUprefixryrtagrrrgettagss*   zconvert_git.gettagsc Csg}|durn|dddd|\}}|r8ttd||D].}d|vrJq<|ddd\}}||q.)r(rr8rrEr;) rrrrrTrUrrkrOrrrgetchangedfiless2  zconvert_git.getchangedfilesc Csi}|jdd}d|dfdg}dh}zv|d\}}|D]^}|}|dd\}} |D]<\} } | | r\| |vrxq\d | | t| df} ||| <q\qrr(rxrErDrc Exception) rZ bookmarksZ remoteprefixZreftypesZexcluderTrUryrVrqZ gitprefixZhgprefixrrr getbookmarkss(   zconvert_git.getbookmarks splicemapcCs|||dS)z$git revision string is a 40 byte hexN)Zcheckhexformat)rZrevstrZmapnamerrrcheckrevformatszconvert_git.checkrevformat)N)r)rrrr"r$r&r'r(r)rrPrXrgrsrorrrrrrrrr __classcell__rrrLrr1s*fY;r)Z __future__rr5Zmercurial.i18nrZmercurial.noderZ mercurialrrrrr objectr rAZconverter_sourcer3rrrrrs