mò mƒDc@ssdkZdkZdkZdkZdfd„ƒYZdfd„ƒYZdfd„ƒYZd„Zd„ZdS( Nt _walkentrycBstZd„Zd„ZRS(NcCs.||_tii||ƒ|_||_dS(N(trepotselftostpathtjointrcsfilettime(RRRRR((t*/usr/tmp/cvsup/cvs20hg/cvstohg/CVStools.pyt__init__ s cCs|ii|ƒS(N(RRtfile(R((RR s(t__name__t __module__R R (((RR s t TagExpandercBsktZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z RS( Nc Cs¢tii|ƒ|_g}t|ƒD]-}|idƒo||i ddƒq&q&~|_ t t |i |i ƒƒ|_ xüttii|ddƒƒiƒD]Ö}tid|ƒ} | o#| iƒ\} }||i | R@R?RCRERFRGRHRI(((RR s         tCVSrepocBs8tZd„Zd„Zd„Zd„Zdd„ZRS(NcCsH||_tiitii|dƒƒp d‚nt|ƒ|_dS(NRsnot a cvs repo!(RRRRtisdirRR ttagexp(RR((RR Ys " cCs&tidhd|i<d|<ƒS(Ns$cvs -d %(cvsroot)s -R -r %(command)sRtcommand(RtpopenRRRM(RRM((Rt_query_sc gs4x-|D]%}xtitii|i|ƒƒD]ù\}}} d„}|i |idƒo|t |iƒd}nd|jo6|idƒtiitii|dƒ|| ƒnxi| D]a}|idƒpqÃn|d iddƒ}t|||tiitii||ƒƒƒVqÃWq/WqWd S( sl -> iterator (path, name, date) Walks the CVS tree, returning one entry per match. cCsWxP|D]H}tiitii||ƒƒo |itiid|ƒƒqqWdS(NtAttic( tfilesRRRtisfileRtdir_targR-(RTRSRQR((Rt atticwalkerms"t/iRPs,viþÿÿÿsAttic/RN(tpathlistRRtwalkRRRtdirpathtdirnamest filenamesRURR<t cvsreldirR,tfilenametendswithRt rcsfilenameRtgetmtime( RRWR\RURZR]RYR_RR[((RRXcs("     cCs­|itjo |i}ny'titii|i|ƒdƒSWnbt j oVtii tii|i|ƒƒ}titii|dd|dƒdƒSnXdS(s% -> rcsparse.rcsfile s,viRPiN( Rt __class__RtrcsparseRRRRRtIOErrorR*tcpath(RRRd((RR ƒs '$cCs\|i|ƒ}|i|ƒ}|ipddjo#|ii||i ||ƒ}n|S(s" -> file/rev data txtobN( RR RRtcheckoutR7trawdataR=RLtrevs(RRR7RhR((RRg’s #(R R R RORXR tNoneRg(((RRJXs    cCs¾|idƒ|idƒjotSn|iddƒ}|iddƒ}|d|djotSnt|dƒt|dƒjotSnt |dƒt |dƒjotSntS(Nt.iiiÿÿÿÿ( tlhstcounttrhstFalsetrsplittlstrsR<tTruetint(RlRnRrRq((Rt issuccessors!!cCs|idƒ}t|ƒddjoMt|ƒdjo:|ddjo)t|dƒddjo|d }n|ddjoW|ddjodSnt|ƒdjo|d }di|ƒSntd ƒ‚ntt|dƒd ƒ|d