o ^UbN4@sddlmZddlZddlZddlZddlZddlmZddlm Z m Z m Z m Z m Z ddlmZmZddlmZGdd d ejejZdS) )absolute_importN)_)encodingerrormailpycompatutil)dateutilprocutil)commoncseZdZGdddeZd(fdd ZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'ZZS))gnuarch_sourcec@seZdZddZdS)zgnuarch_source.gnuarch_revcCs@||_d|_d|_d|_d|_g|_g|_g|_i|_i|_ dS)N) revsummarydateauthorcontinuationof add_files mod_files del_files ren_filesren_dirs)selfrr7/usr/lib/python3/dist-packages/hgext/convert/gnuarch.py__init__ s z#gnuarch_source.gnuarch_rev.__init__N)__name__ __module__ __qualname__rrrrr gnuarch_revs r Ncstt|j||||dtjtj|ds tt d|d|_ t dr,d|_ nt dr5d|_ n t t dt ddtj|||j tj||_d|_d|_d|_i|_i|_i|_tj|_g|_dS)N)revs{arch}s+%s does not look like a GNU Arch repositorysbaztlascannot find a GNU Arch tools (try installing the %s package))superr rospathexistsjoinr NoReporexecmdr findexerAbort commandlinerealpathtmppath treeversionlastrevchangesparentstagsrarchives)ruirepotyper&r! __class__rrr,s.      zgnuarch_source.__init__c Csdd|ddD|_|jdkr|d|j}n|dd|j}||_|jd}tj t t d |d |_g|jd<|j}d}|r|jtd ||dd }||jvrk|jtd |dS|ddd|\}}||d|d}|D]X}|}|||j|<g|j|<|dd|j|\} }|r|d|} || ||j|||}|j|jrd |j|jddd}n |dddkrnq|sIdSdS)NcSsg|]}|dqS) )rstrip).0irrr Ns z)gnuarch_source.before..sarchivess-nr#s tree-version-d/shg-%sr sanalyzing tree version %s... rsItree analysis stopped because it points to an unregistered archive %s... s revisionss-rs-fs"failed retrieving revisions for %sscat-logscat-archive-logs--isbase-0) runlines0r5r*run0r&stripr0splitr%r(rfsencodetempfile gettempdirr/r3r6statusrrunlines checkexitr r2run _parsecatlogappendr) routputversionr0childarchiverIlrcatlogrrrbeforeLsh           zgnuarch_source.beforecCs&|jd|jtj|jdddS)Nscleaning up %s T ignore_errors)r6debugr/shutilrmtreerrrrafterszgnuarch_source.aftercCs |jdSN)r3r[rrrgetheadss zgnuarch_source.getheadscCs@||jkr ttdtjtj|j|sdS| ||S)Nsinternal calling inconsistency)NN) r1rr,rr%r&lexistsr(r/_getfile)rnamerrrrgetfiles  zgnuarch_source.getfilec s6|r ttd|g}i}|jjD] }||fq|jjD] }||fq(|jjD] }||fq8|jj D]}|jj |}||f||f|||<qH|jj D]"}|jj |}| ||\}} |fdd|D7}| | qk|_ tt||tfS)Ns)convert from arch does not support --fullcsg|]}|fqSrrr<frrrr>sz-gnuarch_source.getchanges..)rr,r_updater2rrNrrrr_rendirchangesupdater1sortedset) rrfullr2copiesrdsrctochgscpsrrer getchangess.   zgnuarch_source.getchangescCs*|j|}tj|j|j|j|j||dS)N)rrdescr3r)r2r commitrrrr3)rrr2rrr getcommits zgnuarch_source.getcommitcCs|jSr])r4r[rrrgettagsszgnuarch_source.gettagscOsh|j|g}||7}dd|D}ttj}|d|d|g7}d|}|j|dtt t j |S)NcSsg|]}t|qSr)r shellquote)r<argrrrr>sz+gnuarch_source._execute..>s2> r:) r*rbytestrr%devnullr(r6rXsystemrapplyr tonativestr)rcmdargskwargscmdlinebdevnullrrr_executes   zgnuarch_source._executecCsz|jd||dd|j|\}}|r$tj|jdd||dS|j|d}|jd||f|||dS)Nsapplying revision %s... sreplayr?TrVrs)computing changeset between %s and %s... ) r6rXrJr/rYrZ_obtainrevisionr3_parsechangeset)rr changesetrIold_revrrrrfs zgnuarch_source._updatecCsttj|j|j}t|r*t tj|j|}|r$d}||fSd}||fSt tj|j|}|d@r;dpsz0gnuarch_source._readcontents..) r%listdirlenpopr&r(risdirrN)rr&filescontentsprrr _readcontentss       zgnuarch_source._readcontentsc Cshg}i}|tj|j|}|D]}tj||}tj||}|||||||<q||fSr])rr%r&r(r/rN) rrmdestr2rlrrdsdrrrrgs   zgnuarch_source._rendirchangescCs^|jd||d||j}|||jd|||j}|j|j|7_dS)Nsobtaining revision %s... sgetsanalyzing revision %s... )r6rXrr/rKrr2r)rrrOrrrrrs   zgnuarch_source._obtainrevisioncCs|dr |ddS|S)Ns./) startswith)rr&rrr_stripbasepath's  zgnuarch_source._stripbasepathcCszVt|}tt|dd|j|_||d|j|_d ||d|| f|j|_ ||j|j |j|_ d|vrT||d|j|_ WdSWdSt yfttd|w)Nz Standard-dates%Y-%m-%d %H:%M:%SCreators SummaryzContinuation-ofscould not parse cat-log of %s)r parsebytesr datestrstrdater2rrecoderr( get_payloadrr Exceptionrr,r)rrrrTrrrrM,s(      zgnuarch_source._parsecatlogc Cs|D]S}|}|dr-|ds-||dd}||s,|j|j|q|drQ|dsQ||dd}||sP|j|j|q|drp||dd}||so|j|j|q|dr||d d}||s|j|j|q|d r||dd}||s|j|j|q|d r|dd d }t |dkr|dd d }||d}||d}||s||s||j|j |<q|dr||dd}||s|j|j|q|drV|dd d }t |dkr4|dd d }||d}||d}||sV||sV||j|j |<qdS)NAsA/r DsD/sMbrsM->Ms=>ry rschs/>) rDrrrr2rrNrrrErrr) rrrrSfilerrmdstdirsrrrrIsf              zgnuarch_source._parsechangesetr])rrrobjectr rrUr\r^rbrqrtrurrfr`rrrgrrrMr __classcell__rrr8rr s(  O     r ) __future__rr%rYrrGmercurial.i18nr mercurialrrrrrmercurial.utilsr r r converter_sourcer-r rrrrs