o ]Lbm @s2dZddlmZddlZddlmZddlmZmZddl m Z ddl m Z m Z mZmZmZdd lmZd ZiZeeZed Zed Zd dZddZddZddZddZedZedddgededfddded 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)_)hexnullrev) stringutil)error logcmdutilpycompat registrarscmutil)convcmdsships-with-hg-cores[<> "]s[<> ]cCsj|||}t|}t|}t|st|r#tt d||r/d|d|dSd|dS)Ns:Unable to parse user into person and email for revision %s"s" <><) getrpersonemailGIT_EMAIL_PROHIBITEDmatchGIT_PERSON_PROHIBITEDrAbortr) authormapuserrev mapped_user user_person user_emailr2/usr/lib/python3/dist-packages/hgext/fastexport.pyconvert_to_git_user&s    r cCsp|\}}|dkr dnd}|ddkrttd|ft|d}|d}|d}dt||d||fS)Nr+-<s4UTC offset in %b is not an integer number of secondss%d s%02d%02d)rrrabsint)date timestamputcofftzsigntzhtzminrrrconvert_to_git_date7s   r,cCsd|S)Ns refs/heads/r)branchrrrconvert_to_git_refDsr.cCsB|dt||||r|dddkr|ddSdS)Nsdata %d  )appendlen)bufdata skip_newlinerrr write_dataIs  r6cCsb||}|}||vr|d|dSdd|D}|D]}||vr6|td||fdSq |D]9} | |vrBq;|| } t| } | |vrtt|d} | || <| } dd| g}t || d|j |d d i~q;t|d} | ||<t | }d |d| d t|||t|fg}t ||d |r|d ||dt|dkr|d||d||d}||}n|}g}|D]3} | |vr|| d| fq|| } | } | rdnd}d||t| | f}|| |fq||dd|D~|d|j |d d i~dS)Ns/warning: revision %s already exported, skipped cSsg|] }|tkr|qSr)rr).0prrr Vsz!export_commit..s8warning: parent %s of %s has not been exported, skipped r sblob s mark :%d FkeepprogressbarTs commit %s scommitter %s %s s from :%d rs merge :%d sD %s s755s644s M %s :%d %s css|]\}}|VqdS)Nr)r7fnamechangedrrr sz export_commit..r0)rdebugparentswarnrfilesfilectxfilenoder2r4r6writer.r-r rr,r& descriptionr1manifestdiffisexecsortextend)uirepormarksrctxrevidr@r8r<rCfilerevmarkr4r3refp0ctxrBfilebuffilepermr=rrr export_commitPs~               rWs^[0-9a-f]{40}$s fastexportrrevsrevisions to exportsREVis import-markssold marks file to readsFILEes export-markssnew marks file to writeA authormapsremap usernames using this files[OPTION]... [REV]...) helpcategorycOst|}|t|dg7}|st|dg}nt||}|s(tt d|d}|r6t ||}ni}|d}i}|rwt |d)}|D]} | } t| rX| |vr_tt dt|d|| <qIWd n1srwY||jt d t d t|d } |D]} t||| ||| qWd n1swY|d } | rt | d+} d gt|}|D] \}}|||d<q|D] }| |dqWd d S1swYd Sd 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. rY:sno revisions matchedr^s import_marksrbsCorrupted marks filer Ns exportings revisions)unittotals export_markswbr0)r byteskwargstuplerr revrangerrrrr readauthormapopenstripisrevrr2rJ makeprogressrW incrementitemsrE)rLrMrevsopts authorfiler import_marksrNimport_marks_filelineprogressr export_marksexport_marks_file output_markskvrrr fastexportsV        "r{)!__doc__ __future__rremercurial.i18nrmercurial.noderrmercurial.utilsr mercurialrrr r r convertr testedwithcmdtablecommandcompilerrr r,r.r6rWrkCATEGORY_IMPORT_EXPORTr{rrrrsF         I