a —+«bmã @s2dZddlmZddlZddlmZddlmZmZddl m Z ddl m Z m Z mZmZmZdd lmZd ZiZe e¡Ze d ¡Ze d ¡Zd d„Zdd„Zdd„Zdd„Zdd„Ze d¡Zedddgedƒedƒfddded ƒed!ƒfd"d#ded$ƒed!ƒfd%d&ded'ƒed!ƒfged(ƒejd)d*d+„ƒZ dS),z-export repositories as git fast-import streamé)Úabsolute_importN)Ú_)ÚhexÚnullrev)Ú stringutil)ÚerrorÚ logcmdutilÚpycompatÚ registrarÚscmutilé)Úconvcmdsships-with-hg-cores[<> "]s[<> ]cCsn| ||¡}t |¡}t |¡}t |¡s4t |¡rFt t dƒ|¡‚|r^d|d|dSd|dSdS)Ns:Unable to parse user into person and email for revision %só"s" <ó>ó<) ÚgetrZpersonZemailÚGIT_EMAIL_PROHIBITEDÚmatchÚGIT_PERSON_PROHIBITEDrÚAbortr)Ú authormapÚuserÚrevZ mapped_userZ user_personZ user_email©rú6/usr/lib64/python3.9/site-packages/hgext/fastexport.pyÚconvert_to_git_user&s   ÿÿÿrcCsp|\}}|dkrdnd}|ddkr8t tdƒ|f¡‚t|ƒd}|d}|d}dt|ƒ|d||fS)Nró+ó-é<s4UTC offset in %b is not an integer number of secondss%d s%02d%02d)rrrÚabsÚint)ÚdateZ timestampZutcoffZtzsignZtzhZtzminrrrÚconvert_to_git_date7s  ÿ r"cCsd|S)Ns refs/heads/r)ÚbranchrrrÚconvert_to_git_refDsr$cCs>| dt|ƒ¡| |¡|r0|dd…dkr:| d¡dS)Nsdata %d éÿÿÿÿó )ÚappendÚlen)ÚbufÚdataZ skip_newlinerrrÚ write_dataIs r+cCsl||}| ¡}||vr*| d|¡dSdd„| ¡Dƒ}|D],}| ¡|vr@| tdƒ||f¡dSq@| ¡D]r} | |vr„qv| | ¡} t|  ¡ƒ} | |vrvt|ƒd} | || <|   ¡} dd| g}t || dƒ|j |d d iŽ~qvt|ƒd} | ||<t |  ¡ƒ}d |d| d t|| ¡|ƒt| ¡ƒfg}t || ¡d ƒ|rh| d ||d ¡¡t|ƒdkr°| d||d ¡¡||d}| ¡ | ¡¡}n| ¡}g}|D]l} | |vrâ| | d| f¡nH| | ¡} |  ¡} |  ¡rdnd}d||t| ƒ| f}| | |f¡qÀ| ¡| dd„|Dƒ¡~| d¡|j |d d iŽ~dS)Ns/warning: revision %s already exported, skipped cSsg|]}| ¡tkr|‘qSr)rr)Ú.0ÚprrrÚ Vóz!export_commit..s8warning: parent %s of %s has not been exported, skipped r sblob s mark :%d FZkeepprogressbarTs commit %s scommitter %s %s s from :%d rés merge :%d sD %s s755s644s M %s :%d %s css|]\}}|VqdS)Nr)r,ÚfnameÚchangedrrrÚ ’r/z export_commit..r&)rÚdebugÚparentsÚwarnrÚfilesÚfilectxZfilenoder(r*r+Úwriter$r#rrr"r!Ú descriptionr'ZmanifestÚdiffZisexecÚsortÚextend)ÚuiÚreporÚmarksrÚctxZrevidr5r-r1r8ZfilerevZmarkr*r)ÚrefZp0ctxr7ZfilebufZfilepermr2rrrÚ export_commitPsz ÿÿ         þÿý     rCs^[0-9a-f]{40}$s fastexportórórevsrevisions to exportsREVóis import-marksr/sold marks file to readsFILEóes export-markssnew marks file to writeóAó authormapsremap usernames using this files[OPTION]... [REV]...)Z helpcategorycOsàt |¡}|t| dg¡ƒ7}|s2t |dg¡}n t ||¡}|sPt t dƒ¡‚| d¡}|rlt   ||¡}ni}| d¡}i}|rît |dƒR}|D]<} |   ¡} t | ¡r°| |vr¾t t dƒ¡‚t|ƒd|| <q’Wd ƒn1sä0Y| ¡|jt d ƒt d ƒt|ƒd 4} |D]} t||| ||ƒ|  ¡qWd ƒn1sN0Y| d ¡} | rÜt | dƒX} d gt|ƒ}| ¡D]\}}|||d<qŠ|D]}|  |d¡q¦Wd ƒn1sÒ0Yd S)aexport repository as git fast-import stream This command lets you dump a repository as a human-readable text stream. It can be piped into corresponding import routines like "git fast-import". Incremental dumps can be created by using marks files. rEó:sno revisions matchedrIs import_marksÚrbsCorrupted marks filer Ns exportings revisions)ZunitÚtotals export_marksÚwbr&)r Z byteskwargsÚtuplerr Zrevrangerrrrr Z readauthormapÚopenÚstripÚisrevrr(r<Z makeprogressrCZ incrementÚitemsr9)r>r?ZrevsZoptsZ authorfilerZ import_marksr@Zimport_marks_fileÚlineZprogressrZ export_marksZexport_marks_fileZ output_marksÚkÚvrrrÚ fastexportœsH     0ÿ,  rV)!Ú__doc__Z __future__rÚreZmercurial.i18nrZmercurial.noderrZmercurial.utilsrZ mercurialrrr r r Zconvertr Z testedwithZcmdtableZcommandÚcompilerrrr"r$r+rCrQZCATEGORY_IMPORT_EXPORTrVrrrrÚsD        I ûü ñ