6hSSKJr SSKrSSKrSSKrSSKrSSKJr SSKJ r J r J r J r J r SSKJrJrJr "SS5r"SS \5rS rSS jr"S S 5rSSjrSrg)) annotationsN)_)encodingerrorhookpycompatutil)dateutilprocutil stringutilc$\rSrSrSrSrSrSrg)logentryaBClass logentry has the following attributes: .author - author name as CVS knows it .branch - name of branch this revision is on .branches - revision tuple of branches starting at this revision .comment - commit message .commitid - CVS commitid or None .date - the commit date as a (time, tz) tuple .dead - true if file revision is dead .file - Name of file .lines - a tuple (+lines, -lines) or None .parent - Previous revision of this entry .rcs - name of file as returned from CVS .revision - revision number as tuple .tags - list of tags on the file .synthetic - is this a synthetic "file ... added on ..." revision? .mergepoint - the branch that has been merged from (if present in rlog output) or None .branchpoints - the branches that start at the current entry or empty c HSUlURRU5 gNF) synthetic__dict__updateselfentriess 5/usr/lib/python3/dist-packages/hgext/convert/cvsps.py__init__logentry.__init__3s W%c^U4Sj[TR55n[T5R<SSR U5<S3$)Nc3N># UHo<STRU<3v M g7f)=Nr.0krs r $logentry.__repr__..8s!P:OQAt}}Q/0:Os"%(z, )sortedrtype__name__joinritemss` r__repr__logentry.__repr__7s4P&:OP:.. %0@AAr)rNr* __module__ __qualname____firstlineno____doc__rr.__static_attributes__rrrrs(&Brrc\rSrSrSrg)logerror<r6N)r*r1r2r3r5r6rrr8r8<srr8cURS5nUSRS5nSnUS:waUnUSUSRSU5SnU$)aReturn the repository path from a CVS path. >>> getrepopath(b'/foo/bar') '/foo/bar' >>> getrepopath(b'c:/foo/bar') '/foo/bar' >>> getrepopath(b':pserver:10/foo/bar') '/foo/bar' >>> getrepopath(b':pserver:10c:/foo/bar') '/foo/bar' >>> getrepopath(b':pserver:/foo/bar') '/foo/bar' >>> getrepopath(b':pserver:c:/foo/bar') '/foo/bar' >>> getrepopath(b':pserver:truc@foo.bar:/foo/bar') '/foo/bar' >>> getrepopath(b':pserver:truc@foo.bar:c:/foo/bar') '/foo/bar' >>> getrepopath(b'user@server/path/to/repository') '/path/to/repository' :@r/N)splitfind)cvspathparts atpositionstartrepopaths r getrepopathrF@s[: MM$ Er%J ERRyre467H Orc X)^@0m@U@4SjnUR[S55 /n[R"S5n[R"S5n[R"S5n [R"S5n [R"S5n [R"S5n [R"S 5n [R"S 5n[R"S 5n[R"S 5n[R"S 5n[R"S5n[R"S5nSnUc[ [ R RSS5S5nUR5R5nSSS5 UnUS:XaSnU(a7UR[R5(dU[R- n[R "[ R RSS55R5nU(d ["R$R'SS5n/nSnU(a[ R R)S5n[ R R+U5(d[ R,"U5 UR/S5US/-nUVs/sH2nU(dM SR[R0"SU55PM4 nn[ R RUSRUVs/sHnU(dM UPM sn55nUS:XaUR3[S5W-5 [ US5n6"U5nUHTn[9US 5(a$[9US!5(a[9US"5(aM8UR[S#55 /n O SSS5 UR3[S$5[;U5-5 U(a&US&R>n[@RB"US'5nS(S)/nU(aqURES*U-5 [RF"[IU55nURS+5(dUS+- nU(aU[RF"U5-nOUnURES,S-/U5 U(aURES.U-5 UREU5 0n0n 0n!S/n"S0n#UV$s/sHn$[JRL"U$5PM nn$UR3[S15S2RU5-5 UROS3UX4-5 [JRP"S2RU5S45n%[RR"U%RU55n&U&n'U'S:XaG O[RR"U%RU55n&U'RS65(aU'SS&n'U"S/:XGaIURWU'5n(U((aU(RYS75n)0nU(a[RF"U)SS85n*U*R[U5(aU*[;U5Sn*U*R[S+5(aU*S7Sn*U*R[S95(aU*S:Sn*OU*R]S;S+5n*Sn"GO!U"S>:XGaU RWU'5n(U((aU(RYS<5R/S5V+s/sHn+[_U+5PM n,n+[;U,5n-U-S>:aU-S<-S/:XaU,S8S/:Xa U,SS8U,S&S-n,[aU,5n,U,U;a/UU,'UU,REU(RYS755 U(RYS<5U U(RYS75'GO=URWU'5(aS?n"GO#URWU'5(aS/n"GO U"S@:XaBURWU'5(aS?n"GOURWU'5(a[SA55eGOU"S?:XaURWU'5n(U((d[SB55e[cU"W)5U"W*5[aU(RYS75R/S5V+s/sHn+[_U+5PM sn+5/SSS[e5SC9nS:n"GO*U"S::XGa{URWU'5n(U((d[SD55eU(RYS75n.U.S<S+:XaSEU.-n.[;U.R/55S>:waU.SF-n.[@Rf"U./SGQ5WlU"U(RYS<55Ul4U(RYS>5Rk5SH:HUl6U(RYS?5(arU(RYS:5(a:[_U(RYS?55[_U(RYS:554Ul7Oa[_U(RYS?55S/4Ul7O?U(RYS:5(a"S/[_U(RYS:554Ul7OSUl7U(RYSI5(aU(RYSJ5Ul8U(RYSK5(aU(RYSL5R/S5n/[;U/5S<:XaSMUl9OfSRU/SS8SNU/S8/-5n/U V0s/sHn0U U0U/:XdMU0PM n1n0[;U15S7:XdSOURr-5eU1S/Ul9/Ul:SIn"GOU"SI:XaURWU'5n2U2(a|U2RYS75R/SP5V+V3s/sHEn+[aU+R5R/S5V3s/sHn3[_U35PM sn35PMG sn3n+Wl;SJn"GOURWU'5(aURWU&5(aS?n"S5n#OURWU'5(aS/n"S5n#OWRtREU'5 OU"SJ:XaURWU'5(aTU&n4U4RS65(aU4SS&n4URWU45(aS?n"S5n#ORWRtREU'5 O6URWU'5(aS/n"S5n#OWRtREU'5 U#(aWRl(aURxS&S7:Xap[;URt5S7:XaWURWURtS/5(a4UROSQURzURtS/4-5 S5Ul>U#(Ga"S0n#[UR'WRx/5V+s/sH n+U"U+5PM sn+5Ul@U"S6RURt55Ul:[;URx5n-U-S>:a2U-S<-S/:Xa)UR'URxSS&S/5S/UlAOSUlA[e5n5U R5Hun6n7[aU7R/S5V8s/sHn8[_U85PM sn85n9[;U95S<:aMKU9S8S/:Xa4U9S&S<-S/:Xa(U9SS8URx:XaU5RU65 MMU9SR:XdMU9URv;dMU5RU65 M U5UlDUREU5 URzU!URzR]S;S+5'[;U5SS-S/:XaAUR[R"ST[;U5UR4-SU5S6-5 G MURSVSW9 0n:[USXSW9HYnURzR]S;S+5n)U)U!;a U!U)Ul=URxSS&n6URxU:URzU64'M[ UHdnURxSS&n6U:R'URzU64S5nUcURxSS8nUUlIURxU:URzU64'Mf U(aU(aURSYSW9 U(a4US&R>US/R>:a[[SZ55eUU-nUR3[S[5W-5 [ US\5n"UU5 SSS5 OUnUR[S]5[;U5-5 URS^S_5n;U;(aS`nU;HnU>R[R"U55RSa5U=l:UR(a1UROSbUU<"U=Rx5U=R4-5 M [R"[Se5U<"U=Rx5U=R4-[Sc5Sd9e [R"USSfS5USg9 U$!,(df  GN=f![a [[S55ef=f![a GNf=fs snfs snf!,(df  GN=f![<a(nUR3[S%5U-5 SnAGNSnAff=fs sn$fs sn+fs sn+fs sn0fs sn3fs sn3n+fs sn+fs sn8f!,(df  GN =f![a GM[a7n?[R"[R"U?5[Sc5Sd9eSn?A?ff=f)hzCollect the CVS rlogc&>TRX5$)z#return a shared version of a string) setdefault)s_scaches rscachecreatelog..scacheos!!!''rscollecting CVS rlog sRCS file: (.+)$scvs \[r?log aborted\]: (.+)$scvs (r?log|server): (.+) $s>(Cannot access.+CVSROOT)|(can't create temporary directory.+)$sWorking file: (.+)$ssymbolic names:s (.+): ([\d.]+)$s----------------------------$sN=============================================================================$s(revision ([\d.]+)(\s+locked by:\s+.+;)?$sdate:\s+(.+);\s+author:\s+(.+);\s+state:\s+(.+?);(\s+lines:\s+(\+\d+)?\s+(-\d+)?;)?(\s+commitid:\s+([^;]+);)?(.*mergepoint:\s+([^;]+);)?sbranches: (.+);$s+file [^/]+ was (initially )?added on branchrNsCVSs Repositoryrb.snot a CVS sandboxsRootsCVSROOTs ~/.hg.cvspsr;scache-s\w+updatesreading cvs log cache %s branchpointscommitid mergepointsignoring old cache scache has %d log entries serror reading cache: %r r<%Y/%m/%d %H:%M:%S %1%2scvss-qs-d%sr>slogsrlogs-d>%srFs running %s  sprefix=%r directory=%r root=%r srbT sAttic/s/Attic/s)RCS file must be followed by working files!must have at least some revisionssexpected revision number)rcsfilerevisionbranchesparentrSrTrRs&revision must be followed by date lines19s UTC)s%y/%m/%d %H:%M:%Ss%Y/%m/%d %H:%M:%Ss%Y-%m-%d %H:%M:%Ssdead HEAD0sunknown branch: %s;s#found synthetic revision in %s: %r )rXrXrXd%d %sPc2URUR4$Nr_raxs rcreatelog..sAEE1::.rkeyc2URUR4$rorprqs rrsrts155!***=rcUR$ro)daterqs rrsrts166rs>log cache overlaps with new log entries, re-run without cache.swriting cvs log cache %s wbs%d log entries sconvertscvsps.logencodingcjSR[R"[RU55$)NrO)r+rmaplistbytestr)rs rrevstrcreatelog..revstrs&99X--h.>.>BC Crzutf-8stranscoding by %s: %s of %s s-check convert.cvsps.logencoding configuration)hints6no encoding can transcode CVS log message for %s of %sscvslog)log)Vstatusrrecompileopenospathr+readstripOSErrorr8endswithrossepr readfilerenvironget expanduserexistsmkdirr?findallnotepickleloadhasattrlen Exceptionryr datestrappendnormpathrFr shellquotedebugpopen fromnativeeolreadlinematchgroup startswithreplaceinttuplerset parsedateauthorlowerdeadlinesrSrTcommentrbrar_rr(tagsbranchr-addrRr ellipsisr`sortrcdump configlistdecodesysstrencode debugflagUnicodeDecodeError LookupErrorrAbortr}r)Aui directoryrootrlogcacherLrre_00re_01re_02re_03re_10re_20re_30re_31re_32re_50re_60re_70 file_added_reprefixfoldlogrycachedir cachefilerJfpecmdpr branchmaprcsmapstatestoreargpfppeeklinerr_filenamerrrevrevndmyrevbrbmycpeekrRrrairevpartsversions encodingsrentryrinstrKsA @r createlogrhsE G(IIa()* C JJ) *E JJ8 9E JJ5 6E JJI E JJ- .E JJ) *E JJ, -E JJ7 8E JJ 3 E JJC DE JJ ( E JJ* +EJJNOM F 4bggll6=94@A)AI~ &//(..99 hnn $F ==fg!>?EEGD ##J4F D 77%%n5ww~~h'' HHX JJt$ 8'<< @IO 1Q6TYYrzz'156 OGGLL diiI ;IqI ;<   9 GGA34y@ Ai&"RA>22#Az22#A|44 !$;"<=!# ' GGA34s6{B C ":??D##D*CDD 5/C  7T>" MM+d+ ,zz$ IA v..FFJJ &'  8d?#JJy DI F E E/2 3s8  s #sC 3GGAo $))C. 12HH 0FI3L LM ..3 /C   clln -D  3; !!#,,.1 ==  9D A:KK%Ekk!n#}}S"X6H**622#+CKM#:**400#+AB<**955#+AB<#+#3#3J#EEKK%Eu{{1~..KK%Eu{{1~..{{4  tn$!aZKK%E I!HI I5}}U[[^4HE aZ{{4    aZKK%E',{{1~';';D'AB'A!s1v'AB3x!8aCGqLcr(SX-CCjd? "DIS   Q0,1KKN %++a.)T""T"" aZ{{4   ;;t,,a8/,,aZKK%E 8!78 853KH% A0D0DT0JK0J1A0JKL U AE aZKK%E F!EF F5 AAtt|AI1779~"K''AFekk!n-AH[[^))+w6AF{{1~~;;q>>"5;;q>2C A4GHAG"5;;q>2A6AGQc%++a.12{{1~~"[[^ {{1~~ B--d3u:?#*AL IIeCRjD%)3D&DEE+4N9a ! 8M9HNx=A-- <-$,A;ALAIE aZ D!AWWQZ--d331779??4+@A+@a3q6+@AB3 T""u{{4'8'8T""   & aZ{{4  >>%((!#2JE;;u%%E EII$$T*T""   &  2!#AII!###AIIaL11 HH7155!))A,:OO AK ER0HI0H1VAY0HIJAFuzz!))45AIqzz?DaxTAX!O88AJJsOdV} 2$((03*1::-$((0%6*AN JJqM67eeF155==T2 33x#~" ''CHaff3E(ErJ_ hHH.H/H F = >eemmJ- &=3KAECR$%JJ!%%! ?CR LL!%%$ / 9 3BA$%JJ!%%!   HH)H *&*//SV[[823,C GGA34y@ Ai&" C$'&CIIa#$s3x/0 j*>?I D EmmG$+NN8??13E$F$M$M%EM||< &"8%**EF*kk9enn-uzz: ; KL /@ IIb$ 4S1 J[ A@  41123 3 4   2P ; '& 9 GGA23a7 8 8 9@ 4zCH Lh OBjJ"Hx'&8*"++ ((.Ls- *AN4AN AN$AAN> AO*AO/ AO>AO)AO+?A AO AO0.AO+ AP AP% AP* AP/AP/,AP9>AP4 AP9AP?AQ H,AQ J(A;AQN ANNANNAN;N> AO O AO O AO(O#AO+O+ APO5APPAPP4AP9Q AQQ AR)Q) AR)Q22AR$R$AR)c$\rSrSrSrSrSrSrg) changesetiHaClass changeset has the following attributes: .id - integer identifying this changeset (list index) .author - author name as CVS knows it .branch - name of branch this changeset is on, or None .comment - commit message .commitid - CVS commitid or None .date - the commit date as a (time,tz) tuple .entries - list of logentry objects in this changeset .parents - list of one or two parent changesets .tags - list of tags on this changeset .synthetic - from synthetic revision "file ... added on branch ..." .mergepoint- the branch that has been merged from or None .branchpoints- the branches that start at the current entry or empty c VSUlSUlURRU5 gr)idrrrrs rrchangeset.__init__Xs" W%rc^U4Sj[TR55nS[T5RSR U54-$)Nc3L># UHnSUTRU4-v M g7f)s%s=%rNrr s rr#%changeset.__repr__..^s( 6KH4==+, ,6Ks!$s%s(%s), r'r,s` rr.changeset.__repr__]s@ 6UR@4'M SnTRU;aUTRnO8[CU5H)nTRUUR;aUb OM'UnM+ /Tl"UbUUnUR.(a`[!URD5S::d[S55eURD(aURDSnOSnOUR.(aM`UbTRDRU5 TR(aATRS:XaSTlTRDRXoTR5 U(aURGTR5nU(acURIS5nUS:XaSnXoUnUU;a<TRU:wa,WR.(dTRDRU5 U(aURGTR5nU(aURQ5(aURIS5nUS:XaSnOSnUU;aqTRU:waa[TRUTRSTR-//XoUT/S9nURSUS-U5 US-UU'US- nUS - nGMXTR'US- nUU:aGMSnU[!U5:a,XhR.(aXh OUS- nU[!U5:aM,[U5HunmUS-Tl*M T(a]THWunnURTcMURTcM$URM[S5URTURT4-5 MY UR[S5[!U5-5 [VRV"USSSUS9 U$![JaA URM[S5["RN"U5TR4-5 GNyf=f)zConvert log into changesets.screating changesets c>TRURS5UR=(d SURURUR=(d SUR UR 4$)N)r<rr)rrSrrrryrR)rrmindates rrs!createchangeset..tsM KK G , JJ # II HH HHO FF NN rruNrrX)rrrryrrTrRrSrkrlr[r<rmrWcFURRS5nURRS5n[U5n[U5n[X#5n[ U5H;nUS-U:XaX#:a gUS-U:XaX#:a gXX:a gXX:dM; g g)zMimic cvsps sorting orderr>rXr<r)r`r?rminrange)lr~nlnrnrs r entitycompare&createchangeset..entitycompares FFLL  FFLL  V V KqA1u{rwQ"rc>[UR5[UR5- nU(aU$0nURHnURX4R'M 0nURHnURXTR'M SnURH;nUR "URS5UR :XdM0U(aeSn O URHJnUR URS5UR :XdM/U(aTRX45 Sn O SnU(d/U"[UR5[UR55nU(dQU"URVs/sHoDRPM snURVs/sHoDRPM sn5nU(d/U"[UR5[UR55nU$s snfs snf)NrrXr<cX:X:- $ror6)rrrs rrs0createchangeset..cscmp.. s !%AE*r) sumryrrar_rrcrrr`rR)rr~rlerrcodds rcscmpcreatechangeset..cscmps| K#aff+ % HA BuuI A BuuI AvvaeeT"ahh. u  AvvaeeT"ahh.GGQFO  +#aii.#aii.1A199-9a669- /J 1 /JKA#ann%s1>>':;A ./Js H,H c3<># UHnTUTLdM Uv M g7fror6)r!tagr  globaltagss rr#"createchangeset..&sDtz#!/Cts  s{{mergetobranch ([-\w]+)}}s{{mergefrombranch ([-\w]+)}}s0synthetic changeset cannot have multiple parentsrhsBwarning: CVS commit message references non-existent branch %r: %s s&convert-repo: CVS merge from branch %s)rrryrrrparentss)changeset %d is both before and after %d s%d changeset entries s cvschangesetsT) changesets),rrrSryrrr enumeraterRrrrr`rrTrrrbytereprr rrrr functools cmp_to_keyrrr(rrr_rarrsearchrKeyErrorwarnr}groupsinsertrr)rrfuzz mergefrommergetorrfilesrtrrrrrrbrrr candidaterccrr~r rrrs @@@@rcreatechangesetr'dsIIa()*G  :::zz(&'ff #&)!&&'!**2E&F # HH  J EE A#$ !..0'AJJ!**,DZZ'1::+= QYY.AHH,AHH,QVVAY.FF1Iq 1:FF1Iq 1T9:e+ xxxxVV<<^^ A   a EE:$) O%%aii026  *--a4u<=  !&&u|!))n)Daiil.D.D $ 9// >? %C.`OO ,,U3O4J Avv"# 3 uA KK DtDD 0**W%4 JJy) HH JA A a% MA,-aeeQZZ( )  88x "A#1X 88:i#8#E#EE} & =1 A++199~*AG-*99 ! AA+++}   # <<||w&# II  Z(>? @   +AGGAJ<A  *A; 7I=QXX]9;N;NII$$Y/ qyy)A88:: AG| A=QXX]" xx VV I((!# "!+QK!8! < B%%a!eR0"#a%HQKFAFA Q} a%D A c*o  = " " FA c*o *%11u& DAqttADD$4CDttQTTl#IIa)*S_<=IIb$($:F K GG=$++A. : ;s>b44Ac?>c?cr [R"U5nUS(aSnOUS(aSnOSnUSnU(a/nUHnU[XUSUS9- nM O[XSUS9n[ XUS 5nA[ U5n 0n 0n UGHn US (aU RU ;a|U R(akU RS R(aMXRS RS - RU RS R4XR'U RXR'US(aU R=(d SUS;aMU (GdUR S5 URSU R-5 URS[R"U RS5-5 URSU R-5 URSU R=(d S-5 URSSS/[ U R5S :SR!U R5=(d S4-5 U R"(a6URSSR![%U R"55-5 US(aU R(a[ U R5S :aLURSSR!U RV s/sHn SU R-PM sn 5-5 O+URS U RS R-5 US (aqU Rn/nU(a2XunnUR'S!U=(d SUX4-5 U(aM2U(a#URS"SR!U5-5 URS#5 UR S$U R(-5 URS%5 U R*HnUR,nUR/US&5(aU[ US&5SnUR S'US(R!UR0Vs/sHnSU-PM sn5=(d S)S(R!UR2Vs/sHnSU-PM sn5SS*/UR44-5 M UR S+5 U(a2U (a+US SU R-:XdUS U R;aS,n [ U5S :dGMU (aGMUS SU R-:XdUS U R;dGM g g![anUR S U-5 SnAgSnAff=fs sn fs snfs snf)-zRead CVS rlog for current directory or named path in repository, and convert the log to changesets based on matching commit log entries and dates. s new_cacheswrites update_cacherQNs revisionssroot)rrs%r sfuzzs ancestorsrrXsbranchesrhs--------------------- s PatchSet %d s Date: %s rUs Author: %s s Branch: %s s Tag%s: %s rs,s(none)sBranchpoints: %s rsparentss Parents: %s s%ds Parent: %d s%s:%d:%dsAncestors: %s sLog: s%s s Members: sprefixs %s:%s->%s%s rOsINITIALs(DEAD)rWF)r byteskwargsrr8writer'rrrr writenoi18nr rryrrr+rRr(rrrr`rrcrar)rargsoptsr revisionsrrrroffrb ancestorscsrrr~r rfnrrs r debugcvspsr5s    %D L o \"I  CyT']%HHB']%@C !$w-8J  i.CHI  yy(RZZBJJqM *ZZVV==i11CY023B' ahh"?h519h"?@NJ  "C 1EAI "CDi(0    HHUO | .)A,"''2I y>A cc| .)A,"''2Ie  1l&J2#@"Cs/#U? U?V*V/7V4? V' V""V')NrTN)r9NN) __future__rrrrrmercurial.i18nr mercurialrrrrr mercurial.utilsr r r rrr8rFrrr'r5r6rrr:sk# BB< y %P]@DD8Pf tr