Artifact f56084c1389807968105cf3b4079cc1b5d383842:
File
tools/cvs2fossil/lib/c2f_frev.tcl
part of check-in
[bd131addb9]
- Started to flesh out the handling symbols and revisions coming in from the rcs parser. First fragments of revision object. Type methods for classification of revision numb ers.
by
aku on
2007-10-12 05:56:46.
0000: 23 23 20 2d 2a 2d 20 74 63 6c 20 2d 2a 2d 0a 23 ## -*- tcl -*-.#
0010: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 # ## ### #####
0020: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 ######## #######
0030: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 ###### #########
0040: 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 20 ############.##
0050: 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30 Copyright (c) 20
0060: 30 37 20 41 6e 64 72 65 61 73 20 4b 75 70 72 69 07 Andreas Kupri
0070: 65 73 2e 0a 23 0a 23 20 54 68 69 73 20 73 6f 66 es..#.# This sof
0080: 74 77 61 72 65 20 69 73 20 6c 69 63 65 6e 73 65 tware is license
0090: 64 20 61 73 20 64 65 73 63 72 69 62 65 64 20 69 d as described i
00a0: 6e 20 74 68 65 20 66 69 6c 65 20 4c 49 43 45 4e n the file LICEN
00b0: 53 45 2c 20 77 68 69 63 68 0a 23 20 79 6f 75 20 SE, which.# you
00c0: 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 should have rece
00d0: 69 76 65 64 20 61 73 20 70 61 72 74 20 6f 66 20 ived as part of
00e0: 74 68 69 73 20 64 69 73 74 72 69 62 75 74 69 6f this distributio
00f0: 6e 2e 0a 23 0a 23 20 54 68 69 73 20 73 6f 66 74 n..#.# This soft
0100: 77 61 72 65 20 63 6f 6e 73 69 73 74 73 20 6f 66 ware consists of
0110: 20 76 6f 6c 75 6e 74 61 72 79 20 63 6f 6e 74 72 voluntary contr
0120: 69 62 75 74 69 6f 6e 73 20 6d 61 64 65 20 62 79 ibutions made by
0130: 20 6d 61 6e 79 0a 23 20 69 6e 64 69 76 69 64 75 many.# individu
0140: 61 6c 73 2e 20 20 46 6f 72 20 65 78 61 63 74 20 als. For exact
0150: 63 6f 6e 74 72 69 62 75 74 69 6f 6e 20 68 69 73 contribution his
0160: 74 6f 72 79 2c 20 73 65 65 20 74 68 65 20 72 65 tory, see the re
0170: 76 69 73 69 6f 6e 0a 23 20 68 69 73 74 6f 72 79 vision.# history
0180: 20 61 6e 64 20 6c 6f 67 73 2c 20 61 76 61 69 6c and logs, avail
0190: 61 62 6c 65 20 61 74 20 68 74 74 70 3a 2f 2f 66 able at http://f
01a0: 6f 73 73 69 6c 2d 73 63 6d 2e 68 77 61 63 69 2e ossil-scm.hwaci.
01b0: 63 6f 6d 2f 66 6f 73 73 69 6c 0a 23 20 23 20 23 com/fossil.# # #
01c0: 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 # ### ##### ####
01d0: 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 #### ###########
01e0: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 ## #############
01f0: 23 23 23 23 23 23 23 23 0a 0a 23 23 20 52 65 76 ########..## Rev
0200: 69 73 69 6f 6e 73 20 70 65 72 20 66 69 6c 65 2e isions per file.
0210: 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 23 ..# # ## ### ###
0220: 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 ## ######## ####
0230: 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######### ######
0240: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a ###############.
0250: 23 23 20 52 65 71 75 69 72 65 6d 65 6e 74 73 0a ## Requirements.
0260: 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 .package require
0270: 20 54 63 6c 20 38 2e 34 20 20 20 20 20 20 20 20 Tcl 8.4
0280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0290: 20 20 20 20 20 3b 20 23 20 52 65 71 75 69 72 65 ; # Require
02a0: 64 20 72 75 6e 74 69 6d 65 2e 0a 70 61 63 6b 61 d runtime..packa
02b0: 67 65 20 72 65 71 75 69 72 65 20 73 6e 69 74 20 ge require snit
02c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b ;
02e0: 20 23 20 4f 4f 20 73 79 73 74 65 6d 2e 0a 0a 23 # OO system...#
02f0: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 # ## ### #####
0300: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 ######## #######
0310: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 ###### #########
0320: 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 20 ############.##
0330: 0a 0a 73 6e 69 74 3a 3a 74 79 70 65 20 3a 3a 76 ..snit::type ::v
0340: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor
0350: 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 3a 3a 72 65 t::cvs::file::re
0360: 76 20 7b 0a 20 20 20 20 23 20 23 20 23 23 20 23 v {. # # ## #
0370: 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 ## ##### #######
0380: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 0a # #############.
0390: 20 20 20 20 23 23 20 50 75 62 6c 69 63 20 41 50 ## Public AP
03a0: 49 0a 0a 20 20 20 20 63 6f 6e 73 74 72 75 63 74 I.. construct
03b0: 6f 72 20 7b 64 61 74 65 20 61 75 74 68 6f 72 20 or {date author
03c0: 73 74 61 74 65 20 74 68 65 66 69 6c 65 7d 20 7b state thefile} {
03d0: 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a ..return. }..
03e0: 20 20 20 20 6d 65 74 68 6f 64 20 68 61 73 63 6f method hasco
03f0: 6d 6d 69 74 6d 73 67 20 7b 7d 20 7b 0a 09 23 20 mmitmsg {} {..#
0400: 54 4f 44 4f 3a 20 63 68 65 63 6b 20 74 68 61 74 TODO: check that
0410: 20 77 65 20 68 61 76 65 20 74 68 65 20 63 6f 6d we have the com
0420: 6d 69 74 20 6d 65 73 73 61 67 65 0a 09 72 65 74 mit message..ret
0430: 75 72 6e 20 30 0a 20 20 20 20 7d 0a 0a 20 20 20 urn 0. }..
0440: 20 6d 65 74 68 6f 64 20 73 65 74 63 6f 6d 6d 69 method setcommi
0450: 74 6d 73 67 20 7b 63 6d 7d 20 7b 0a 20 20 20 20 tmsg {cm} {.
0460: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 65 }.. method se
0470: 74 74 65 78 74 20 7b 74 65 78 74 7d 20 7b 0a 20 ttext {text} {.
0480: 20 20 20 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 }.. # # ##
0490: 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 ### ##### #####
04a0: 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 ### ############
04b0: 23 0a 20 20 20 20 23 23 20 54 79 70 65 20 41 50 #. ## Type AP
04c0: 49 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 68 6f I.. typemetho
04d0: 64 20 69 73 74 72 75 6e 6b 72 65 76 6e 72 20 7b d istrunkrevnr {
04e0: 72 65 76 6e 72 7d 20 7b 0a 09 72 65 74 75 72 6e revnr} {..return
04f0: 20 5b 65 78 70 72 20 7b 5b 6c 6c 65 6e 67 74 68 [expr {[llength
0500: 20 5b 73 70 6c 69 74 20 24 72 65 76 6e 72 20 2e [split $revnr .
0510: 5d 5d 20 3d 3d 20 31 7d 5d 0a 20 20 20 20 7d 0a ]] == 1}]. }.
0520: 0a 20 20 20 20 74 79 70 65 6d 65 74 68 6f 64 20 . typemethod
0530: 32 62 72 61 6e 63 68 6e 72 20 7b 72 65 76 6e 72 2branchnr {revnr
0540: 7d 20 7b 0a 09 23 20 49 6e 70 75 74 20 69 73 20 } {..# Input is
0550: 61 20 62 72 61 6e 63 68 20 72 65 76 69 73 69 6f a branch revisio
0560: 6e 20 6e 75 6d 62 65 72 2c 20 69 2e 65 2e 20 61 n number, i.e. a
0570: 20 72 65 76 69 73 69 6f 6e 20 6e 75 6d 62 65 72 revision number
0580: 0a 09 23 20 77 69 74 68 20 61 6e 20 65 76 65 6e ..# with an even
0590: 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6d 70 6f number of compo
05a0: 6e 65 6e 74 73 3b 20 66 6f 72 20 65 78 61 6d 70 nents; for examp
05b0: 6c 65 20 27 32 2e 39 2e 32 2e 31 27 0a 09 23 20 le '2.9.2.1'..#
05c0: 28 6e 65 76 65 72 20 27 32 2e 39 2e 32 27 20 6e (never '2.9.2' n
05d0: 6f 72 20 27 32 2e 39 2e 30 2e 32 27 29 2e 20 20 or '2.9.0.2').
05e0: 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 The return value
05f0: 20 69 73 20 74 68 65 0a 09 23 20 62 72 61 6e 63 is the..# branc
0600: 68 20 6e 75 6d 62 65 72 20 28 66 6f 72 20 65 78 h number (for ex
0610: 61 6d 70 6c 65 2c 20 27 32 2e 39 2e 32 27 29 2e ample, '2.9.2').
0620: 20 20 46 6f 72 20 74 72 75 6e 6b 20 72 65 76 69 For trunk revi
0630: 73 69 6f 6e 73 2c 0a 09 23 20 6c 69 6b 65 20 27 sions,..# like '
0640: 33 2e 34 27 2c 20 77 65 20 72 65 74 75 72 6e 20 3.4', we return
0650: 74 68 65 20 65 6d 70 74 79 20 73 74 72 69 6e 67 the empty string
0660: 2e 0a 0a 09 69 66 20 7b 5b 24 74 79 70 65 20 69 ....if {[$type i
0670: 73 74 72 75 6e 6b 72 65 76 6e 72 20 24 72 65 76 strunkrevnr $rev
0680: 6e 72 5d 7d 20 7b 0a 09 20 20 20 20 72 65 74 75 nr]} {.. retu
0690: 72 6e 20 22 22 0a 09 7d 0a 09 72 65 74 75 72 6e rn ""..}..return
06a0: 20 5b 6a 6f 69 6e 20 5b 6c 72 61 6e 67 65 20 5b [join [lrange [
06b0: 73 70 6c 69 74 20 24 72 65 76 6e 72 20 2e 5d 20 split $revnr .]
06c0: 30 20 65 6e 64 2d 31 5d 20 2e 5d 0a 20 20 20 20 0 end-1] .].
06d0: 7d 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 68 6f }.. typemetho
06e0: 64 20 69 73 62 72 61 6e 63 68 72 65 76 6e 72 20 d isbranchrevnr
06f0: 7b 72 65 76 6e 72 20 5f 20 62 76 7d 20 7b 0a 09 {revnr _ bv} {..
0700: 69 66 20 7b 5b 72 65 67 65 78 70 20 24 6d 79 62 if {[regexp $myb
0710: 72 61 6e 63 68 70 61 74 74 65 72 6e 20 24 72 65 ranchpattern $re
0720: 76 6e 72 20 2d 3e 20 68 65 61 64 20 74 61 69 6c vnr -> head tail
0730: 5d 7d 20 7b 0a 09 20 20 20 20 75 70 76 61 72 20 ]} {.. upvar
0740: 31 20 24 62 76 20 62 72 61 6e 63 68 6e 72 0a 09 1 $bv branchnr..
0750: 20 20 20 20 73 65 74 20 62 72 61 6e 63 68 6e 72 set branchnr
0760: 20 24 7b 68 65 61 64 7d 2e 24 74 61 69 6c 0a 09 ${head}.$tail..
0770: 20 20 20 20 72 65 74 75 72 6e 20 31 0a 09 7d 0a return 1..}.
0780: 09 72 65 74 75 72 6e 20 30 0a 20 20 20 20 7d 0a .return 0. }.
0790: 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23 20 . # # ## ###
07a0: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 ##### ######## #
07b0: 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 ############.
07c0: 20 23 23 20 53 74 61 74 65 0a 0a 20 20 20 20 74 ## State.. t
07d0: 79 70 65 76 61 72 69 61 62 6c 65 20 6d 79 62 72 ypevariable mybr
07e0: 61 6e 63 68 70 61 74 74 65 72 6e 20 7b 5e 28 28 anchpattern {^((
07f0: 3f 3a 5c 64 2b 5c 2e 5c 64 2b 5c 2e 29 2b 29 28 ?:\d+\.\d+\.)+)(
0800: 3f 3a 30 5c 2e 29 3f 28 5c 64 2b 29 24 7d 0a 20 ?:0\.)?(\d+)$}.
0810: 20 20 20 23 20 46 69 72 73 74 20 61 20 6e 6f 6e # First a non
0820: 7a 65 72 6f 20 65 76 65 6e 20 6e 75 6d 62 65 72 zero even number
0830: 20 6f 66 20 64 69 67 69 74 20 67 72 6f 75 70 73 of digit groups
0840: 20 77 69 74 68 20 74 72 61 69 6c 69 6e 67 20 64 with trailing d
0850: 6f 74 0a 20 20 20 20 23 20 43 56 53 20 74 68 65 ot. # CVS the
0860: 6e 20 73 74 69 63 6b 73 20 61 6e 20 65 78 74 72 n sticks an extr
0870: 61 20 30 20 69 6e 20 68 65 72 65 3b 20 52 43 53 a 0 in here; RCS
0880: 20 64 6f 65 73 20 6e 6f 74 2e 0a 20 20 20 20 23 does not.. #
0890: 20 41 6e 64 20 74 68 65 20 6c 61 73 74 20 64 69 And the last di
08a0: 67 69 74 20 67 72 6f 75 70 2e 0a 0a 20 20 20 20 git group...
08b0: 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 # # ## ### #####
08c0: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######## ######
08d0: 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 49 #######. ## I
08e0: 6e 74 65 72 6e 61 6c 20 6d 65 74 68 6f 64 73 0a nternal methods.
08f0: 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23 20 . # # ## ###
0900: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 ##### ######## #
0910: 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 ############.
0920: 20 23 23 20 43 6f 6e 66 69 67 75 72 61 74 69 6f ## Configuratio
0930: 6e 0a 0a 20 20 20 20 70 72 61 67 6d 61 20 2d 68 n.. pragma -h
0940: 61 73 74 79 70 65 69 6e 66 6f 20 20 20 20 6e 6f astypeinfo no
0950: 20 20 3b 20 23 20 6e 6f 20 74 79 70 65 20 69 6e ; # no type in
0960: 74 72 6f 73 70 65 63 74 69 6f 6e 0a 20 20 20 20 trospection.
0970: 70 72 61 67 6d 61 20 2d 68 61 73 69 6e 66 6f 20 pragma -hasinfo
0980: 20 20 20 20 20 20 20 6e 6f 20 20 3b 20 23 20 6e no ; # n
0990: 6f 20 6f 62 6a 65 63 74 20 69 6e 74 72 6f 73 70 o object introsp
09a0: 65 63 74 69 6f 6e 0a 20 20 20 20 23 70 72 61 67 ection. #prag
09b0: 6d 61 20 2d 68 61 73 74 79 70 65 6d 65 74 68 6f ma -hastypemetho
09c0: 64 73 20 6e 6f 20 20 3b 20 23 20 74 79 70 65 20 ds no ; # type
09d0: 69 73 20 6e 6f 74 20 72 65 6c 65 76 61 6e 74 2e is not relevant.
09e0: 0a 20 20 20 20 70 72 61 67 6d 61 20 2d 73 69 6d . pragma -sim
09f0: 70 6c 65 64 69 73 70 61 74 63 68 20 79 65 73 20 pledispatch yes
0a00: 3b 20 23 20 73 69 6d 70 6c 65 20 66 61 73 74 20 ; # simple fast
0a10: 64 69 73 70 61 74 63 68 0a 0a 20 20 20 20 23 20 dispatch.. #
0a20: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 # ## ### ##### #
0a30: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
0a40: 23 23 23 23 23 0a 7d 0a 0a 6e 61 6d 65 73 70 61 #####.}..namespa
0a50: 63 65 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 66 6f ce eval ::vc::fo
0a60: 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 ssil::import::cv
0a70: 73 3a 3a 66 69 6c 65 20 7b 0a 20 20 20 20 6e 61 s::file {. na
0a80: 6d 65 73 70 61 63 65 20 65 78 70 6f 72 74 20 72 mespace export r
0a90: 65 76 0a 7d 0a 0a 23 20 23 20 23 23 20 23 23 23 ev.}..# # ## ###
0aa0: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 ##### ########
0ab0: 23 23 23 23 23 23 23 23 23 23 23 23 23 20 23 23 ############# ##
0ac0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0ad0: 23 23 23 0a 23 23 20 52 65 61 64 79 0a 0a 70 61 ###.## Ready..pa
0ae0: 63 6b 61 67 65 20 70 72 6f 76 69 64 65 20 76 63 ckage provide vc
0af0: 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 ::fossil::import
0b00: 3a 3a 63 76 73 3a 3a 66 69 6c 65 3a 3a 72 65 76 ::cvs::file::rev
0b10: 20 31 2e 30 0a 72 65 74 75 72 6e 0a 1.0.return.