Artifact 590fdb0ca9f8cc8e60eb35b66f62714f920f2ca1:
File
tools/cvs2fossil/lib/c2f_frev.tcl
part of check-in
[886b6f257b]
- Added code able to exclude all non-trunk revisions upon user request.
by
aku on
2007-10-21 06:10:13.
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 70 61 # OO system..pa
02f0: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 76 63 ckage require vc
0300: 3a 3a 74 6f 6f 6c 73 3a 3a 6d 69 73 63 20 20 20 ::tools::misc
0310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0320: 20 20 3b 20 23 20 54 65 78 74 20 66 6f 72 6d 61 ; # Text forma
0330: 74 74 69 6e 67 0a 0a 23 20 23 20 23 23 20 23 23 tting..# # ## ##
0340: 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 # ##### ########
0350: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 20 23 ############# #
0360: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0370: 23 23 23 23 0a 23 23 20 0a 0a 73 6e 69 74 3a 3a ####.## ..snit::
0380: 74 79 70 65 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 type ::vc::fossi
0390: 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a l::import::cvs::
03a0: 66 69 6c 65 3a 3a 72 65 76 20 7b 0a 20 20 20 20 file::rev {.
03b0: 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 # # ## ### #####
03c0: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######## ######
03d0: 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 50 #######. ## P
03e0: 75 62 6c 69 63 20 41 50 49 0a 0a 20 20 20 20 63 ublic API.. c
03f0: 6f 6e 73 74 72 75 63 74 6f 72 20 7b 72 65 76 6e onstructor {revn
0400: 72 20 64 61 74 65 20 73 74 61 74 65 20 74 68 65 r date state the
0410: 66 69 6c 65 7d 20 7b 0a 09 73 65 74 20 6d 79 72 file} {..set myr
0420: 65 76 6e 72 20 20 20 20 24 72 65 76 6e 72 0a 09 evnr $revnr..
0430: 73 65 74 20 6d 79 64 61 74 65 20 20 20 20 20 24 set mydate $
0440: 64 61 74 65 0a 09 73 65 74 20 6d 79 6f 72 69 67 date..set myorig
0450: 64 61 74 65 20 24 64 61 74 65 0a 09 73 65 74 20 date $date..set
0460: 6d 79 73 74 61 74 65 20 20 20 20 24 73 74 61 74 mystate $stat
0470: 65 0a 09 73 65 74 20 6d 79 66 69 6c 65 20 20 20 e..set myfile
0480: 20 20 24 74 68 65 66 69 6c 65 0a 09 72 65 74 75 $thefile..retu
0490: 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 rn. }.. #
04a0: 42 61 73 69 63 20 70 69 65 63 65 73 20 5f 5f 5f Basic pieces ___
04b0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
04c0: 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 6d 65 74 68 6f _____.. metho
04d0: 64 20 68 61 73 6d 65 74 61 20 7b 7d 20 7b 20 72 d hasmeta {} { r
04e0: 65 74 75 72 6e 20 5b 65 78 70 72 20 7b 24 6d 79 eturn [expr {$my
04f0: 6d 65 74 61 69 64 20 6e 65 20 22 22 7d 5d 20 7d metaid ne ""}] }
0500: 0a 20 20 20 20 6d 65 74 68 6f 64 20 68 61 73 74 . method hast
0510: 65 78 74 20 7b 7d 20 7b 0a 09 73 74 72 75 63 74 ext {} {..struct
0520: 3a 3a 6c 69 73 74 20 61 73 73 69 67 6e 20 24 6d ::list assign $m
0530: 79 74 65 78 74 20 73 20 65 0a 09 72 65 74 75 72 ytext s e..retur
0540: 6e 20 5b 65 78 70 72 20 7b 24 73 20 3c 3d 20 24 n [expr {$s <= $
0550: 65 7d 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d e}]. }.. m
0560: 65 74 68 6f 64 20 73 65 74 6d 65 74 61 20 7b 6d ethod setmeta {m
0570: 65 74 61 7d 20 7b 20 73 65 74 20 6d 79 6d 65 74 eta} { set mymet
0580: 61 69 64 20 24 6d 65 74 61 20 3b 20 72 65 74 75 aid $meta ; retu
0590: 72 6e 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 rn }. method
05a0: 73 65 74 74 65 78 74 20 7b 74 65 78 74 7d 20 7b settext {text} {
05b0: 20 73 65 74 20 6d 79 74 65 78 74 20 20 20 24 74 set mytext $t
05c0: 65 78 74 20 3b 20 72 65 74 75 72 6e 20 7d 0a 20 ext ; return }.
05d0: 20 20 20 6d 65 74 68 6f 64 20 73 65 74 6c 6f 64 method setlod
05e0: 20 20 7b 6c 6f 64 7d 20 20 7b 20 73 65 74 20 6d {lod} { set m
05f0: 79 6c 6f 64 20 20 20 20 24 6c 6f 64 20 20 3b 20 ylod $lod ;
0600: 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 6d 65 return }.. me
0610: 74 68 6f 64 20 72 65 76 6e 72 20 7b 7d 20 7b 20 thod revnr {} {
0620: 72 65 74 75 72 6e 20 24 6d 79 72 65 76 6e 72 20 return $myrevnr
0630: 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 74 61 }. method sta
0640: 74 65 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 te {} { return $
0650: 6d 79 73 74 61 74 65 20 7d 0a 20 20 20 20 6d 65 mystate }. me
0660: 74 68 6f 64 20 6c 6f 64 20 20 20 7b 7d 20 7b 20 thod lod {} {
0670: 72 65 74 75 72 6e 20 24 6d 79 6c 6f 64 20 20 20 return $mylod
0680: 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 64 61 74 }. method dat
0690: 65 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 e {} { return $
06a0: 6d 79 64 61 74 65 20 20 7d 0a 0a 20 20 20 20 6d mydate }.. m
06b0: 65 74 68 6f 64 20 69 73 6e 65 65 64 65 64 20 7b ethod isneeded {
06c0: 7d 20 7b 0a 09 69 66 20 7b 24 6d 79 6f 70 65 72 } {..if {$myoper
06d0: 61 74 69 6f 6e 20 6e 65 20 22 6e 6f 74 68 69 6e ation ne "nothin
06e0: 67 22 7d 20 20 20 20 20 20 20 20 20 7b 72 65 74 g"} {ret
06f0: 75 72 6e 20 31 7d 0a 09 69 66 20 7b 24 6d 79 72 urn 1}..if {$myr
0700: 65 76 6e 72 20 6e 65 20 22 31 2e 31 22 7d 20 20 evnr ne "1.1"}
0710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b {
0720: 72 65 74 75 72 6e 20 31 7d 0a 09 69 66 20 7b 21 return 1}..if {!
0730: 5b 24 6d 79 6c 6f 64 20 69 73 74 72 75 6e 6b 5d [$mylod istrunk]
0740: 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 }
0750: 20 20 7b 72 65 74 75 72 6e 20 31 7d 0a 09 69 66 {return 1}..if
0760: 20 7b 21 5b 6c 6c 65 6e 67 74 68 20 24 6d 79 62 {![llength $myb
0770: 72 61 6e 63 68 65 73 5d 7d 20 20 20 20 20 20 20 ranches]}
0780: 20 20 20 20 20 7b 72 65 74 75 72 6e 20 31 7d 0a {return 1}.
0790: 09 73 65 74 20 66 69 72 73 74 62 72 61 6e 63 68 .set firstbranch
07a0: 20 5b 6c 69 6e 64 65 78 20 24 6d 79 62 72 61 6e [lindex $mybran
07b0: 63 68 65 73 20 30 5d 0a 09 69 66 20 7b 21 5b 24 ches 0]..if {![$
07c0: 66 69 72 73 74 62 72 61 6e 63 68 20 68 61 73 63 firstbranch hasc
07d0: 68 69 6c 64 5d 7d 20 20 20 20 20 20 20 20 20 20 hild]}
07e0: 7b 72 65 74 75 72 6e 20 31 7d 0a 09 69 66 20 7b {return 1}..if {
07f0: 24 6d 79 69 73 6f 6e 64 65 66 61 75 6c 74 62 72 $myisondefaultbr
0800: 61 6e 63 68 7d 20 20 20 20 20 20 20 20 20 20 20 anch}
0810: 20 20 20 7b 72 65 74 75 72 6e 20 31 7d 0a 0a 09 {return 1}...
0820: 23 20 46 49 58 3a 20 54 68 69 73 20 6d 65 73 73 # FIX: This mess
0830: 61 67 65 20 77 69 6c 6c 20 6e 6f 74 20 6d 61 74 age will not mat
0840: 63 68 20 69 66 20 74 68 65 20 52 43 53 20 66 69 ch if the RCS fi
0850: 6c 65 20 77 61 73 20 72 65 6e 61 6d 65 64 0a 09 le was renamed..
0860: 23 20 6d 61 6e 75 61 6c 6c 79 20 61 66 74 65 72 # manually after
0870: 20 69 74 20 77 61 73 20 63 72 65 61 74 65 64 2e it was created.
0880: 0a 0a 09 73 65 74 20 67 65 6e 20 22 66 69 6c 65 ...set gen "file
0890: 20 5b 66 69 6c 65 20 74 61 69 6c 20 5b 24 6d 79 [file tail [$my
08a0: 66 69 6c 65 20 75 73 72 70 61 74 68 5d 5d 20 77 file usrpath]] w
08b0: 61 73 20 69 6e 69 74 69 61 6c 6c 79 20 61 64 64 as initially add
08c0: 65 64 20 6f 6e 20 62 72 61 6e 63 68 20 5b 24 66 ed on branch [$f
08d0: 69 72 73 74 62 72 61 6e 63 68 20 6e 61 6d 65 5d irstbranch name]
08e0: 2e 22 0a 09 73 65 74 20 6c 6f 67 20 5b 24 6d 79 ."..set log [$my
08f0: 66 69 6c 65 20 63 6f 6d 6d 69 74 6d 65 73 73 61 file commitmessa
0900: 67 65 6f 66 20 24 6d 79 6d 65 74 61 69 64 5d 0a geof $mymetaid].
0910: 0a 09 72 65 74 75 72 6e 20 5b 65 78 70 72 20 7b ..return [expr {
0920: 24 6c 6f 67 20 6e 65 20 24 67 65 6e 7d 5d 0a 20 $log ne $gen}].
0930: 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 }.. method
0940: 20 69 73 6e 65 65 64 65 64 62 72 61 6e 63 68 64 isneededbranchd
0950: 65 6c 20 7b 7d 20 7b 0a 09 69 66 20 7b 24 6d 79 el {} {..if {$my
0960: 70 61 72 65 6e 74 62 72 61 6e 63 68 20 65 71 20 parentbranch eq
0970: 22 22 7d 20 20 20 20 20 20 20 20 20 20 20 7b 72 ""} {r
0980: 65 74 75 72 6e 20 31 7d 20 3b 20 23 20 6e 6f 74 eturn 1} ; # not
0990: 20 66 69 72 73 74 20 6f 6e 20 61 20 62 72 61 6e first on a bran
09a0: 63 68 2c 20 6e 65 65 64 65 64 0a 09 73 65 74 20 ch, needed..set
09b0: 62 61 73 65 20 5b 24 6d 79 70 61 72 65 6e 74 62 base [$myparentb
09c0: 72 61 6e 63 68 20 70 61 72 65 6e 74 5d 0a 09 69 ranch parent]..i
09d0: 66 20 7b 24 62 61 73 65 20 20 20 20 20 20 20 20 f {$base
09e0: 20 20 20 65 71 20 22 22 7d 20 20 20 20 20 20 20 eq ""}
09f0: 20 20 20 20 7b 72 65 74 75 72 6e 20 31 7d 20 3b {return 1} ;
0a00: 20 23 20 62 72 61 6e 63 68 20 68 61 73 20 70 61 # branch has pa
0a10: 72 65 6e 74 20 6c 6f 64 2c 20 6e 65 65 64 65 64 rent lod, needed
0a20: 0a 09 69 66 20 7b 5b 24 73 65 6c 66 20 4c 4f 44 ..if {[$self LOD
0a30: 4c 65 6e 67 74 68 5d 20 3c 20 32 7d 20 20 20 20 Length] < 2}
0a40: 20 20 20 20 20 20 20 7b 72 65 74 75 72 6e 20 31 {return 1
0a50: 7d 20 3b 20 23 20 6f 75 72 20 6c 6f 64 20 63 6f } ; # our lod co
0a60: 6e 74 61 69 6e 73 20 6f 6e 6c 79 20 6f 75 72 73 ntains only ours
0a70: 65 6c 76 65 73 2c 20 6e 65 65 64 65 64 2e 0a 09 elves, needed...
0a80: 69 66 20 7b 24 6d 79 6f 70 65 72 61 74 69 6f 6e if {$myoperation
0a90: 20 6e 65 20 22 64 65 6c 65 74 65 22 7d 20 20 20 ne "delete"}
0aa0: 20 20 20 20 20 7b 72 65 74 75 72 6e 20 31 7d 20 {return 1}
0ab0: 3b 20 23 20 4e 6f 74 20 61 20 64 65 6c 65 74 69 ; # Not a deleti
0ac0: 6f 6e 2c 20 6e 65 65 64 65 64 0a 09 69 66 20 7b on, needed..if {
0ad0: 5b 6c 6c 65 6e 67 74 68 20 24 6d 79 74 61 67 73 [llength $mytags
0ae0: 5d 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ]}
0af0: 20 7b 72 65 74 75 72 6e 20 31 7d 20 3b 20 23 20 {return 1} ; #
0b00: 48 61 76 65 20 74 61 67 73 2c 20 6e 65 65 64 65 Have tags, neede
0b10: 64 0a 09 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 d..if {[llength
0b20: 24 6d 79 62 72 61 6e 63 68 65 73 5d 7d 20 20 20 $mybranches]}
0b30: 20 20 20 20 20 20 20 20 7b 72 65 74 75 72 6e 20 {return
0b40: 31 7d 20 3b 20 23 20 48 61 76 65 20 6f 74 68 65 1} ; # Have othe
0b50: 72 20 62 72 61 6e 63 68 65 73 2c 20 6e 65 65 64 r branches, need
0b60: 65 64 0a 09 69 66 20 7b 61 62 73 28 24 6d 79 64 ed..if {abs($myd
0b70: 61 74 65 20 2d 20 5b 24 62 61 73 65 20 64 61 74 ate - [$base dat
0b80: 65 5d 29 20 3e 20 32 7d 20 7b 72 65 74 75 72 6e e]) > 2} {return
0b90: 20 31 7d 20 3b 20 23 20 4e 65 78 74 20 72 65 76 1} ; # Next rev
0ba0: 20 3e 20 32 20 73 65 63 6f 6e 64 73 20 61 70 61 > 2 seconds apa
0bb0: 72 74 2c 20 6e 65 65 64 65 64 0a 0a 20 20 20 20 rt, needed..
0bc0: 20 20 20 20 23 20 46 49 58 4d 45 3a 20 54 68 69 # FIXME: Thi
0bd0: 73 20 6d 65 73 73 61 67 65 20 77 69 6c 6c 20 6e s message will n
0be0: 6f 74 20 6d 61 74 63 68 20 69 66 20 74 68 65 20 ot match if the
0bf0: 52 43 53 20 66 69 6c 65 20 77 61 73 0a 20 20 20 RCS file was.
0c00: 20 20 20 20 20 23 20 72 65 6e 61 6d 65 64 20 6d # renamed m
0c10: 61 6e 75 61 6c 6c 79 20 61 66 74 65 72 20 69 74 anually after it
0c20: 20 77 61 73 20 63 72 65 61 74 65 64 2e 0a 0a 09 was created....
0c30: 73 65 74 20 71 66 69 6c 65 20 5b 73 74 72 69 6e set qfile [strin
0c40: 67 20 6d 61 70 20 7b 0a 09 20 20 20 20 2e 20 20 g map {.. .
0c50: 5c 5c 2e 20 20 3f 20 20 5c 5c 3f 20 20 2a 20 20 \\. ? \\? *
0c60: 5c 5c 2a 20 20 5c 5c 20 5c 5c 5c 5c 20 2b 20 20 \\* \\ \\\\ +
0c70: 5c 5c 2b 20 20 5e 20 5c 5c 5e 20 24 20 5c 5c 24 \\+ ^ \\^ $ \\$
0c80: 0a 09 20 20 20 20 5c 5b 20 5c 5c 5c 5b 20 5c 5d .. \[ \\\[ \]
0c90: 20 5c 5c 5c 5d 20 28 20 20 5c 5c 28 20 20 20 29 \\\] ( \\( )
0ca0: 20 5c 5c 29 20 20 5c 7b 20 5c 5c 5c 7b 20 5c 7d \\) \{ \\\{ \}
0cb0: 20 5c 5c 5c 7d 0a 09 7d 20 5b 66 69 6c 65 20 74 \\\}..} [file t
0cc0: 61 69 6c 20 5b 24 6d 79 66 69 6c 65 20 75 73 72 ail [$myfile usr
0cd0: 70 61 74 68 5d 5d 5d 0a 09 73 65 74 20 70 61 74 path]]]..set pat
0ce0: 74 65 72 6e 20 22 66 69 6c 65 20 24 71 66 69 6c tern "file $qfil
0cf0: 65 20 77 61 73 20 61 64 64 65 64 20 6f 6e 20 62 e was added on b
0d00: 72 61 6e 63 68 20 2e 2a 20 6f 6e 20 5c 5c 64 7b ranch .* on \\d{
0d10: 34 7d 2d 5c 5c 64 7b 32 7d 2d 5c 5c 64 7b 32 7d 4}-\\d{2}-\\d{2}
0d20: 20 5c 5c 64 7b 32 7d 3a 5c 5c 64 7b 32 7d 3a 5c \\d{2}:\\d{2}:\
0d30: 5c 64 7b 32 7d 28 20 5c 5b 2b 2d 5c 5d 5c 5c 64 \d{2}( \[+-\]\\d
0d40: 7b 34 7d 29 3f 22 0a 09 73 65 74 20 6c 6f 67 20 {4})?"..set log
0d50: 20 20 20 20 5b 24 6d 79 66 69 6c 65 20 63 6f 6d [$myfile com
0d60: 6d 69 74 6d 65 73 73 61 67 65 6f 66 20 24 6d 79 mitmessageof $my
0d70: 6d 65 74 61 69 64 5d 0a 0a 09 23 20 4e 6f 74 20 metaid]...# Not
0d80: 74 68 65 20 73 70 65 63 69 61 6c 20 6d 65 73 73 the special mess
0d90: 61 67 65 2c 20 6e 65 65 64 65 64 0a 09 69 66 20 age, needed..if
0da0: 7b 21 5b 72 65 67 65 78 70 20 2d 2d 20 24 70 61 {![regexp -- $pa
0db0: 74 74 65 72 6e 20 24 6c 6f 67 5d 7d 20 7b 72 65 ttern $log]} {re
0dc0: 74 75 72 6e 20 31 7d 0a 0a 09 23 20 54 68 69 73 turn 1}...# This
0dd0: 20 69 73 20 61 6e 20 75 6e 6e 65 65 64 65 64 20 is an unneeded
0de0: 69 6e 69 74 69 61 6c 20 62 72 61 6e 63 68 20 64 initial branch d
0df0: 65 6c 65 74 65 2e 0a 09 72 65 74 75 72 6e 20 30 elete...return 0
0e00: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 . }.. meth
0e10: 6f 64 20 4c 4f 44 4c 65 6e 67 74 68 20 7b 7d 20 od LODLength {}
0e20: 7b 0a 09 73 65 74 20 6e 20 31 20 3b 20 23 20 63 {..set n 1 ; # c
0e30: 6f 75 6e 74 20 73 65 6c 66 0a 09 73 65 74 20 72 ount self..set r
0e40: 65 76 20 24 6d 79 63 68 69 6c 64 0a 09 77 68 69 ev $mychild..whi
0e50: 6c 65 20 7b 24 72 65 76 20 6e 65 20 22 22 7d 20 le {$rev ne ""}
0e60: 7b 0a 09 20 20 20 20 69 6e 63 72 20 6e 0a 09 20 {.. incr n..
0e70: 20 20 20 73 65 74 20 72 65 76 20 5b 24 72 65 76 set rev [$rev
0e80: 20 63 68 69 6c 64 5d 0a 09 7d 0a 09 72 65 74 75 child]..}..retu
0e90: 72 6e 20 24 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 rn $n. }..
0ea0: 20 23 20 42 61 73 69 63 20 70 61 72 65 6e 74 2f # Basic parent/
0eb0: 63 68 69 6c 64 20 6c 69 6e 6b 61 67 65 20 5f 5f child linkage __
0ec0: 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 6d 65 ________.. me
0ed0: 74 68 6f 64 20 68 61 73 70 61 72 65 6e 74 20 7b thod hasparent {
0ee0: 7d 20 7b 20 72 65 74 75 72 6e 20 5b 65 78 70 72 } { return [expr
0ef0: 20 7b 24 6d 79 70 61 72 65 6e 74 20 6e 65 20 22 {$myparent ne "
0f00: 22 7d 5d 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 "}] }. method
0f10: 20 68 61 73 63 68 69 6c 64 20 20 7b 7d 20 7b 20 haschild {} {
0f20: 72 65 74 75 72 6e 20 5b 65 78 70 72 20 7b 24 6d return [expr {$m
0f30: 79 63 68 69 6c 64 20 20 6e 65 20 22 22 7d 5d 20 ychild ne ""}]
0f40: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 65 }.. method se
0f50: 74 70 61 72 65 6e 74 20 7b 70 61 72 65 6e 74 7d tparent {parent}
0f60: 20 7b 0a 09 69 66 20 7b 24 6d 79 70 61 72 65 6e {..if {$myparen
0f70: 74 20 6e 65 20 22 22 7d 20 7b 20 74 72 6f 75 62 t ne ""} { troub
0f80: 6c 65 20 69 6e 74 65 72 6e 61 6c 20 22 50 61 72 le internal "Par
0f90: 65 6e 74 20 61 6c 72 65 61 64 79 20 64 65 66 69 ent already defi
0fa0: 6e 65 64 22 20 7d 0a 09 73 65 74 20 6d 79 70 61 ned" }..set mypa
0fb0: 72 65 6e 74 20 24 70 61 72 65 6e 74 0a 09 72 65 rent $parent..re
0fc0: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 turn. }..
0fd0: 6d 65 74 68 6f 64 20 63 75 74 66 72 6f 6d 70 61 method cutfrompa
0fe0: 72 65 6e 74 20 7b 7d 20 7b 20 73 65 74 20 6d 79 rent {} { set my
0ff0: 70 61 72 65 6e 74 20 22 22 20 3b 20 72 65 74 75 parent "" ; retu
1000: 72 6e 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 rn }. method
1010: 63 75 74 66 72 6f 6d 63 68 69 6c 64 20 20 7b 7d cutfromchild {}
1020: 20 7b 20 73 65 74 20 6d 79 63 68 69 6c 64 20 20 { set mychild
1030: 22 22 20 3b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 "" ; return }..
1040: 20 20 20 6d 65 74 68 6f 64 20 73 65 74 63 68 69 method setchi
1050: 6c 64 20 7b 63 68 69 6c 64 7d 20 7b 0a 09 69 66 ld {child} {..if
1060: 20 7b 24 6d 79 63 68 69 6c 64 20 6e 65 20 22 22 {$mychild ne ""
1070: 7d 20 7b 20 74 72 6f 75 62 6c 65 20 69 6e 74 65 } { trouble inte
1080: 72 6e 61 6c 20 22 43 68 69 6c 64 20 61 6c 72 65 rnal "Child alre
1090: 61 64 79 20 64 65 66 69 6e 65 64 22 20 7d 0a 09 ady defined" }..
10a0: 73 65 74 20 6d 79 63 68 69 6c 64 20 24 63 68 69 set mychild $chi
10b0: 6c 64 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d ld..return. }
10c0: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 70 61 72 .. method par
10d0: 65 6e 74 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 ent {} { return
10e0: 24 6d 79 70 61 72 65 6e 74 20 7d 0a 20 20 20 20 $myparent }.
10f0: 6d 65 74 68 6f 64 20 63 68 69 6c 64 20 20 7b 7d method child {}
1100: 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 63 68 69 { return $mychi
1110: 6c 64 20 20 7d 0a 0a 20 20 20 20 23 20 42 72 61 ld }.. # Bra
1120: 6e 63 68 20 6c 69 6e 6b 61 67 65 20 5f 5f 5f 5f nch linkage ____
1130: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
1140: 5f 5f 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 __.. method s
1150: 65 74 70 61 72 65 6e 74 62 72 61 6e 63 68 20 7b etparentbranch {
1160: 62 72 61 6e 63 68 7d 20 7b 0a 09 69 66 20 7b 24 branch} {..if {$
1170: 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 68 20 6e myparentbranch n
1180: 65 20 22 22 7d 20 7b 20 74 72 6f 75 62 6c 65 20 e ""} { trouble
1190: 69 6e 74 65 72 6e 61 6c 20 22 42 72 61 6e 63 68 internal "Branch
11a0: 20 70 61 72 65 6e 74 20 61 6c 72 65 61 64 79 20 parent already
11b0: 64 65 66 69 6e 65 64 22 20 7d 0a 09 73 65 74 20 defined" }..set
11c0: 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 68 20 24 myparentbranch $
11d0: 62 72 61 6e 63 68 0a 09 72 65 74 75 72 6e 0a 20 branch..return.
11e0: 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 }.. method
11f0: 20 68 61 73 70 61 72 65 6e 74 62 72 61 6e 63 68 hasparentbranch
1200: 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 5b 65 78 {} { return [ex
1210: 70 72 20 7b 24 6d 79 70 61 72 65 6e 74 62 72 61 pr {$myparentbra
1220: 6e 63 68 20 6e 65 20 22 22 7d 5d 20 7d 0a 20 20 nch ne ""}] }.
1230: 20 20 6d 65 74 68 6f 64 20 68 61 73 62 72 61 6e method hasbran
1240: 63 68 65 73 20 20 20 20 20 7b 7d 20 7b 20 72 65 ches {} { re
1250: 74 75 72 6e 20 5b 6c 6c 65 6e 67 74 68 20 24 6d turn [llength $m
1260: 79 62 72 61 6e 63 68 65 73 5d 20 7d 0a 0a 20 20 ybranches] }..
1270: 20 20 6d 65 74 68 6f 64 20 70 61 72 65 6e 74 62 method parentb
1280: 72 61 6e 63 68 20 7b 7d 20 7b 20 72 65 74 75 72 ranch {} { retur
1290: 6e 20 24 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 n $myparentbranc
12a0: 68 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 62 h }. method b
12b0: 72 61 6e 63 68 65 73 20 20 20 20 20 7b 7d 20 7b ranches {} {
12c0: 20 72 65 74 75 72 6e 20 24 6d 79 62 72 61 6e 63 return $mybranc
12d0: 68 65 73 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f hes }.. metho
12e0: 64 20 61 64 64 62 72 61 6e 63 68 20 7b 62 72 61 d addbranch {bra
12f0: 6e 63 68 7d 20 7b 0a 09 6c 61 70 70 65 6e 64 20 nch} {..lappend
1300: 6d 79 62 72 61 6e 63 68 65 73 20 24 62 72 61 6e mybranches $bran
1310: 63 68 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d ch..return. }
1320: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 61 64 64 .. method add
1330: 63 68 69 6c 64 6f 6e 62 72 61 6e 63 68 20 7b 63 childonbranch {c
1340: 68 69 6c 64 7d 20 7b 0a 09 6c 61 70 70 65 6e 64 hild} {..lappend
1350: 20 6d 79 62 72 61 6e 63 68 63 68 69 6c 64 72 65 mybranchchildre
1360: 6e 20 24 63 68 69 6c 64 0a 09 72 65 74 75 72 6e n $child..return
1370: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 . }.. meth
1380: 6f 64 20 63 75 74 66 72 6f 6d 70 61 72 65 6e 74 od cutfromparent
1390: 62 72 61 6e 63 68 20 7b 7d 20 7b 20 73 65 74 20 branch {} { set
13a0: 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 68 20 22 myparentbranch "
13b0: 22 20 3b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 " ; return }..
13c0: 20 20 6d 65 74 68 6f 64 20 72 65 6d 6f 76 65 62 method removeb
13d0: 72 61 6e 63 68 20 7b 62 72 61 6e 63 68 7d 20 7b ranch {branch} {
13e0: 0a 09 6c 64 65 6c 65 74 65 20 6d 79 62 72 61 6e ..ldelete mybran
13f0: 63 68 65 73 20 24 62 72 61 6e 63 68 0a 09 72 65 ches $branch..re
1400: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 turn. }..
1410: 6d 65 74 68 6f 64 20 72 65 6d 6f 76 65 63 68 69 method removechi
1420: 6c 64 6f 6e 62 72 61 6e 63 68 20 7b 72 65 76 7d ldonbranch {rev}
1430: 20 7b 0a 09 6c 64 65 6c 65 74 65 20 6d 79 62 72 {..ldelete mybr
1440: 61 6e 63 68 63 68 69 6c 64 72 65 6e 20 24 72 65 anchchildren $re
1450: 76 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a v..return. }.
1460: 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 6f 72 74 . method sort
1470: 62 72 61 6e 63 68 65 73 20 7b 7d 20 7b 0a 09 69 branches {} {..i
1480: 66 20 7b 21 5b 6c 6c 65 6e 67 74 68 20 24 6d 79 f {![llength $my
1490: 62 72 61 6e 63 68 65 73 5d 7d 20 72 65 74 75 72 branches]} retur
14a0: 6e 0a 0a 09 23 20 53 6f 72 74 20 74 68 65 20 62 n...# Sort the b
14b0: 72 61 6e 63 68 65 73 20 73 70 61 77 6e 65 64 20 ranches spawned
14c0: 62 79 20 74 68 69 73 20 72 65 76 69 73 69 6f 6e by this revision
14d0: 20 69 6e 20 63 72 65 61 74 69 6f 6e 0a 09 23 20 in creation..#
14e0: 6f 72 64 65 72 2e 20 54 6f 20 68 65 6c 70 20 69 order. To help i
14f0: 6e 20 74 68 69 73 20 6f 75 72 20 66 69 6c 65 20 n this our file
1500: 67 61 76 65 20 61 6c 6c 20 62 72 61 6e 63 68 65 gave all branche
1510: 73 20 61 20 70 6f 73 69 74 69 6f 6e 0a 09 23 20 s a position..#
1520: 69 64 2c 20 69 6e 20 6f 72 64 65 72 20 6f 66 20 id, in order of
1530: 74 68 65 69 72 20 64 65 66 69 6e 69 74 69 6f 6e their definition
1540: 20 62 79 20 74 68 65 20 52 43 53 20 61 72 63 68 by the RCS arch
1550: 69 76 65 2e 0a 09 23 0a 09 23 20 54 68 65 20 63 ive...#..# The c
1560: 72 65 61 74 69 6f 6e 20 6f 72 64 65 72 20 69 73 reation order is
1570: 20 28 61 70 70 61 72 65 6e 74 6c 79 29 20 74 68 (apparently) th
1580: 65 20 72 65 76 65 72 73 65 20 6f 66 20 74 68 65 e reverse of the
1590: 0a 09 23 20 64 65 66 69 6e 69 74 69 6f 6e 20 6f ..# definition o
15a0: 72 64 65 72 2e 20 28 49 66 20 61 20 62 72 61 6e rder. (If a bran
15b0: 63 68 20 69 73 20 63 72 65 61 74 65 64 20 74 68 ch is created th
15c0: 65 6e 20 64 65 6c 65 74 65 64 2c 20 61 0a 09 23 en deleted, a..#
15d0: 20 6c 61 74 65 72 20 62 72 61 6e 63 68 20 63 61 later branch ca
15e0: 6e 20 62 65 20 61 73 73 69 67 6e 65 64 20 74 68 n be assigned th
15f0: 65 20 72 65 63 79 63 6c 65 64 20 62 72 61 6e 63 e recycled branc
1600: 68 20 6e 75 6d 62 65 72 3b 0a 09 23 20 74 68 65 h number;..# the
1610: 72 65 66 6f 72 65 20 62 72 61 6e 63 68 20 6e 75 refore branch nu
1620: 6d 62 65 72 73 20 61 72 65 20 6e 6f 74 20 61 6e mbers are not an
1630: 20 69 6e 64 69 63 61 74 69 6f 6e 20 6f 66 20 63 indication of c
1640: 72 65 61 74 69 6f 6e 0a 09 23 20 6f 72 64 65 72 reation..# order
1650: 2e 29 0a 0a 09 73 65 74 20 74 6d 70 20 7b 7d 0a .)...set tmp {}.
1660: 09 66 6f 72 65 61 63 68 20 62 72 61 6e 63 68 20 .foreach branch
1670: 24 6d 79 62 72 61 6e 63 68 65 73 20 7b 0a 09 20 $mybranches {..
1680: 20 20 20 6c 61 70 70 65 6e 64 20 74 6d 70 20 5b lappend tmp [
1690: 6c 69 73 74 20 24 62 72 61 6e 63 68 20 5b 24 62 list $branch [$b
16a0: 72 61 6e 63 68 20 70 6f 73 69 74 69 6f 6e 5d 5d ranch position]]
16b0: 0a 09 7d 0a 0a 09 73 65 74 20 6d 79 62 72 61 6e ..}...set mybran
16c0: 63 68 65 73 20 7b 7d 0a 09 66 6f 72 65 61 63 68 ches {}..foreach
16d0: 20 69 74 65 6d 20 5b 6c 73 6f 72 74 20 2d 69 6e item [lsort -in
16e0: 64 65 78 20 31 20 2d 64 65 63 72 65 61 73 69 6e dex 1 -decreasin
16f0: 67 20 24 74 6d 70 5d 20 7b 0a 09 20 20 20 20 73 g $tmp] {.. s
1700: 74 72 75 63 74 3a 3a 6c 69 73 74 20 61 73 73 69 truct::list assi
1710: 67 6e 20 24 69 74 65 6d 20 62 72 61 6e 63 68 20 gn $item branch
1720: 70 6f 73 69 74 69 6f 6e 0a 09 20 20 20 20 6c 61 position.. la
1730: 70 70 65 6e 64 20 6d 79 62 72 61 6e 63 68 65 73 ppend mybranches
1740: 20 24 62 72 61 6e 63 68 0a 09 7d 0a 09 72 65 74 $branch..}..ret
1750: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d urn. }.. m
1760: 65 74 68 6f 64 20 6d 6f 76 65 62 72 61 6e 63 68 ethod movebranch
1770: 65 73 74 6f 20 7b 72 65 76 7d 20 7b 0a 09 73 65 esto {rev} {..se
1780: 74 20 72 65 76 6c 6f 64 20 5b 24 72 65 76 20 6c t revlod [$rev l
1790: 6f 64 5d 0a 09 66 6f 72 65 61 63 68 20 62 72 61 od]..foreach bra
17a0: 6e 63 68 20 24 6d 79 62 72 61 6e 63 68 65 73 20 nch $mybranches
17b0: 7b 0a 09 20 20 20 20 24 72 65 76 20 61 64 64 62 {.. $rev addb
17c0: 72 61 6e 63 68 20 24 62 72 61 6e 63 68 0a 09 20 ranch $branch..
17d0: 20 20 20 24 62 72 61 6e 63 68 20 73 65 74 70 61 $branch setpa
17e0: 72 65 6e 74 20 24 72 65 76 0a 09 20 20 20 20 24 rent $rev.. $
17f0: 62 72 61 6e 63 68 20 73 65 74 6c 6f 64 20 24 72 branch setlod $r
1800: 65 76 6c 6f 64 0a 09 7d 0a 09 66 6f 72 65 61 63 evlod..}..foreac
1810: 68 20 62 72 61 6e 63 68 72 65 76 20 24 6d 79 62 h branchrev $myb
1820: 72 61 6e 63 68 63 68 69 6c 64 72 65 6e 20 7b 0a ranchchildren {.
1830: 09 20 20 20 20 24 72 65 76 20 61 64 64 63 68 69 . $rev addchi
1840: 6c 64 6f 6e 62 72 61 6e 63 68 20 24 62 72 61 6e ldonbranch $bran
1850: 63 68 72 65 76 0a 09 20 20 20 20 24 62 72 61 6e chrev.. $bran
1860: 63 68 72 65 76 20 63 75 74 66 72 6f 6d 70 61 72 chrev cutfrompar
1870: 65 6e 74 0a 09 20 20 20 20 24 62 72 61 6e 63 68 ent.. $branch
1880: 72 65 76 20 73 65 74 70 61 72 65 6e 74 20 24 72 rev setparent $r
1890: 65 76 0a 09 7d 0a 09 73 65 74 20 6d 79 62 72 61 ev..}..set mybra
18a0: 6e 63 68 65 73 20 20 20 20 20 20 20 7b 7d 0a 09 nches {}..
18b0: 73 65 74 20 6d 79 62 72 61 6e 63 68 63 68 69 6c set mybranchchil
18c0: 64 72 65 6e 20 7b 7d 0a 09 72 65 74 75 72 6e 0a dren {}..return.
18d0: 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f }.. metho
18e0: 64 20 72 65 6d 6f 76 65 61 6c 6c 62 72 61 6e 63 d removeallbranc
18f0: 68 65 73 20 7b 7d 20 7b 0a 09 66 6f 72 65 61 63 hes {} {..foreac
1900: 68 20 62 72 61 6e 63 68 20 24 6d 79 62 72 61 6e h branch $mybran
1910: 63 68 65 73 20 7b 0a 09 20 20 20 20 24 62 72 61 ches {.. $bra
1920: 6e 63 68 20 64 65 73 74 72 6f 79 0a 09 7d 0a 09 nch destroy..}..
1930: 73 65 74 20 6d 79 62 72 61 6e 63 68 65 73 20 20 set mybranches
1940: 20 20 20 20 20 7b 7d 0a 09 73 65 74 20 6d 79 62 {}..set myb
1950: 72 61 6e 63 68 63 68 69 6c 64 72 65 6e 20 7b 7d ranchchildren {}
1960: 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a ..return. }..
1970: 20 20 20 20 23 20 54 61 67 20 6c 69 6e 6b 61 67 # Tag linkag
1980: 65 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f e ______________
1990: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 ___________..
19a0: 20 6d 65 74 68 6f 64 20 61 64 64 74 61 67 20 7b method addtag {
19b0: 74 61 67 7d 20 7b 0a 09 6c 61 70 70 65 6e 64 20 tag} {..lappend
19c0: 6d 79 74 61 67 73 20 24 74 61 67 0a 09 72 65 74 mytags $tag..ret
19d0: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d urn. }.. m
19e0: 65 74 68 6f 64 20 74 61 67 73 20 7b 7d 20 7b 20 ethod tags {} {
19f0: 72 65 74 75 72 6e 20 24 6d 79 74 61 67 73 20 7d return $mytags }
1a00: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 72 65 6d .. method rem
1a10: 6f 76 65 61 6c 6c 74 61 67 73 20 7b 7d 20 7b 0a ovealltags {} {.
1a20: 09 66 6f 72 65 61 63 68 20 74 61 67 20 24 6d 79 .foreach tag $my
1a30: 74 61 67 73 20 7b 20 24 74 61 67 20 64 65 73 74 tags { $tag dest
1a40: 72 6f 79 20 7d 0a 09 73 65 74 20 6d 79 74 61 67 roy }..set mytag
1a50: 73 20 7b 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 s {}..return.
1a60: 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 6d }.. method m
1a70: 6f 76 65 74 61 67 73 74 6f 20 7b 72 65 76 7d 20 ovetagsto {rev}
1a80: 7b 0a 09 73 65 74 20 72 65 76 6c 6f 64 20 5b 24 {..set revlod [$
1a90: 72 65 76 20 6c 6f 64 5d 0a 09 66 6f 72 65 61 63 rev lod]..foreac
1aa0: 68 20 74 61 67 20 24 6d 79 74 61 67 73 20 7b 0a h tag $mytags {.
1ab0: 09 20 20 20 20 24 72 65 76 20 61 64 64 74 61 67 . $rev addtag
1ac0: 20 24 74 61 67 0a 09 20 20 20 20 24 74 61 67 20 $tag.. $tag
1ad0: 73 65 74 74 61 67 72 65 76 20 24 72 65 76 0a 09 settagrev $rev..
1ae0: 20 20 20 20 24 74 61 67 20 73 65 74 6c 6f 64 20 $tag setlod
1af0: 24 72 65 76 6c 6f 64 0a 09 7d 0a 09 73 65 74 20 $revlod..}..set
1b00: 6d 79 74 61 67 73 20 7b 7d 0a 09 72 65 74 75 72 mytags {}..retur
1b10: 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 67 n. }.. # g
1b20: 65 6e 65 72 61 6c 20 73 79 6d 62 6f 6c 20 6f 70 eneral symbol op
1b30: 65 72 61 74 69 6f 6e 73 20 5f 5f 5f 5f 5f 5f 5f erations _______
1b40: 5f 5f 5f 5f 0a 0a 20 20 20 20 6d 65 74 68 6f 64 ____.. method
1b50: 20 6d 6f 76 65 73 79 6d 62 6f 6c 73 74 6f 20 7b movesymbolsto {
1b60: 72 65 76 7d 20 7b 0a 09 23 20 4d 6f 76 65 20 74 rev} {..# Move t
1b70: 68 65 20 74 61 67 73 20 61 6e 64 20 62 72 61 6e he tags and bran
1b80: 63 68 65 73 20 61 74 74 61 63 68 65 64 20 74 6f ches attached to
1b90: 20 74 68 69 73 20 72 65 76 69 73 69 6f 6e 20 74 this revision t
1ba0: 6f 20 74 68 65 0a 09 23 20 64 65 73 74 69 6e 61 o the..# destina
1bb0: 74 69 6f 6e 20 61 6e 64 20 66 69 78 20 61 6c 6c tion and fix all
1bc0: 20 70 6f 69 6e 74 65 72 73 2e 0a 0a 09 24 73 65 pointers....$se
1bd0: 6c 66 20 6d 6f 76 65 74 61 67 73 74 6f 20 20 20 lf movetagsto
1be0: 20 20 24 72 65 76 0a 09 24 73 65 6c 66 20 6d 6f $rev..$self mo
1bf0: 76 65 62 72 61 6e 63 68 65 73 74 6f 20 24 72 65 vebranchesto $re
1c00: 76 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a v..return. }.
1c10: 0a 20 20 20 20 23 20 44 65 72 69 76 65 64 20 73 . # Derived s
1c20: 74 75 66 66 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f tuff ___________
1c30: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 ____________..
1c40: 20 20 6d 65 74 68 6f 64 20 64 65 74 65 72 6d 69 method determi
1c50: 6e 65 6f 70 65 72 61 74 69 6f 6e 20 7b 7d 20 7b neoperation {} {
1c60: 0a 09 23 20 4c 6f 6f 6b 20 61 74 20 74 68 65 20 ..# Look at the
1c70: 73 74 61 74 65 20 6f 66 20 62 6f 74 68 20 74 68 state of both th
1c80: 69 73 20 72 65 76 69 73 69 6f 6e 20 61 6e 64 20 is revision and
1c90: 69 74 73 20 70 61 72 65 6e 74 20 74 6f 0a 09 23 its parent to..#
1ca0: 20 64 65 74 65 72 6d 69 6e 65 20 74 68 65 20 74 determine the t
1cb0: 79 70 65 20 6f 70 66 20 6f 70 65 72 61 74 69 6f ype opf operatio
1cc0: 6e 20 77 68 69 63 68 20 77 61 73 20 70 65 72 66 n which was perf
1cd0: 6f 72 6d 65 64 20 28 61 64 64 2c 0a 09 23 20 6d ormed (add,..# m
1ce0: 6f 64 69 66 79 2c 20 64 65 6c 65 74 65 2c 20 6e odify, delete, n
1cf0: 6f 6e 65 29 2e 0a 09 23 0a 09 23 20 54 68 65 20 one)...#..# The
1d00: 69 6d 70 6f 72 74 61 6e 74 20 69 6e 66 6f 72 6d important inform
1d10: 61 74 69 6f 6e 20 69 73 20 64 65 61 64 20 76 73 ation is dead vs
1d20: 20 6e 6f 74 2d 64 65 61 64 20 66 6f 72 20 62 6f not-dead for bo
1d30: 74 68 2c 0a 09 23 20 67 69 76 69 6e 67 20 72 69 th,..# giving ri
1d40: 73 65 20 74 6f 20 66 6f 75 72 20 70 6f 73 73 69 se to four possi
1d50: 62 6c 65 20 74 79 70 65 73 2e 0a 0a 09 73 65 74 ble types....set
1d60: 20 73 64 65 61 64 20 5b 65 78 70 72 20 7b 24 6d sdead [expr {$m
1d70: 79 73 74 61 74 65 20 65 71 20 22 64 65 61 64 22 ystate eq "dead"
1d80: 7d 5d 0a 09 73 65 74 20 70 64 65 61 64 20 5b 65 }]..set pdead [e
1d90: 78 70 72 20 7b 24 6d 79 70 61 72 65 6e 74 20 65 xpr {$myparent e
1da0: 71 20 22 22 20 7c 7c 20 5b 24 6d 79 70 61 72 65 q "" || [$mypare
1db0: 6e 74 20 73 74 61 74 65 5d 20 65 71 20 22 64 65 nt state] eq "de
1dc0: 61 64 22 7d 5d 0a 0a 09 73 65 74 20 6d 79 6f 70 ad"}]...set myop
1dd0: 65 72 61 74 69 6f 6e 20 24 6d 79 6f 70 73 74 61 eration $myopsta
1de0: 74 65 28 5b 6c 69 73 74 20 24 70 64 65 61 64 20 te([list $pdead
1df0: 24 73 64 65 61 64 5d 29 0a 09 72 65 74 75 72 6e $sdead])..return
1e00: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 . }.. meth
1e10: 6f 64 20 6f 70 65 72 61 74 69 6f 6e 20 7b 7d 20 od operation {}
1e20: 7b 20 72 65 74 75 72 6e 20 24 6d 79 6f 70 65 72 { return $myoper
1e30: 61 74 69 6f 6e 20 7d 0a 20 20 20 20 6d 65 74 68 ation }. meth
1e40: 6f 64 20 72 65 74 79 70 65 20 7b 78 7d 20 7b 20 od retype {x} {
1e50: 73 65 74 20 6d 79 6f 70 65 72 61 74 69 6f 6e 20 set myoperation
1e60: 24 78 20 3b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 $x ; return }..
1e70: 20 20 20 6d 65 74 68 6f 64 20 69 73 6f 6e 64 65 method isonde
1e80: 66 61 75 6c 74 62 72 61 6e 63 68 20 20 20 20 7b faultbranch {
1e90: 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 69 73 } { return $myis
1ea0: 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e 63 68 20 ondefaultbranch
1eb0: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 65 }.. method se
1ec0: 74 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e 63 68 tondefaultbranch
1ed0: 20 20 20 7b 78 7d 20 7b 20 73 65 74 20 6d 79 69 {x} { set myi
1ee0: 73 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e 63 68 sondefaultbranch
1ef0: 20 24 78 20 3b 20 72 65 74 75 72 6e 20 7d 0a 0a $x ; return }..
1f00: 20 20 20 20 6d 65 74 68 6f 64 20 73 65 74 64 65 method setde
1f10: 66 61 75 6c 74 62 72 61 6e 63 68 63 68 69 6c 64 faultbranchchild
1f20: 20 20 7b 72 65 76 7d 20 7b 20 73 65 74 20 6d 79 {rev} { set my
1f30: 64 62 63 68 69 6c 64 20 24 72 65 76 20 3b 20 72 dbchild $rev ; r
1f40: 65 74 75 72 6e 20 7d 0a 20 20 20 20 6d 65 74 68 eturn }. meth
1f50: 6f 64 20 73 65 74 64 65 66 61 75 6c 74 62 72 61 od setdefaultbra
1f60: 6e 63 68 70 61 72 65 6e 74 20 7b 72 65 76 7d 20 nchparent {rev}
1f70: 7b 0a 09 73 65 74 20 6d 79 64 62 70 61 72 65 6e {..set mydbparen
1f80: 74 20 24 72 65 76 0a 0a 09 23 20 52 65 74 79 70 t $rev...# Retyp
1f90: 65 20 74 68 65 20 72 65 76 69 73 69 6f 6e 20 28 e the revision (
1fa0: 6d 61 79 20 63 68 61 6e 67 65 20 66 72 6f 6d 20 may change from
1fb0: 27 61 64 64 27 20 74 6f 20 27 63 68 61 6e 67 65 'add' to 'change
1fc0: 27 29 2e 0a 0a 09 73 65 74 20 73 64 65 61 64 20 ')....set sdead
1fd0: 5b 65 78 70 72 20 7b 24 6d 79 6f 70 65 72 61 74 [expr {$myoperat
1fe0: 69 6f 6e 20 20 20 20 20 6e 65 20 22 63 68 61 6e ion ne "chan
1ff0: 67 65 22 7d 5d 0a 09 73 65 74 20 70 64 65 61 64 ge"}]..set pdead
2000: 20 5b 65 78 70 72 20 7b 5b 24 72 65 76 20 6f 70 [expr {[$rev op
2010: 65 72 61 74 69 6f 6e 5d 20 6e 65 20 22 63 68 61 eration] ne "cha
2020: 6e 67 65 22 7d 5d 0a 09 73 65 74 20 6d 79 6f 70 nge"}]..set myop
2030: 65 72 61 74 69 6f 6e 20 24 6d 79 6f 70 73 74 61 eration $myopsta
2040: 74 65 28 5b 6c 69 73 74 20 24 70 64 65 61 64 20 te([list $pdead
2050: 24 73 64 65 61 64 5d 29 0a 09 72 65 74 75 72 6e $sdead])..return
2060: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 . }.. meth
2070: 6f 64 20 63 75 74 64 65 66 61 75 6c 74 62 72 61 od cutdefaultbra
2080: 6e 63 68 70 61 72 65 6e 74 20 7b 7d 20 7b 20 73 nchparent {} { s
2090: 65 74 20 6d 79 64 62 70 61 72 65 6e 74 20 22 22 et mydbparent ""
20a0: 20 3b 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 20 ; return }.
20b0: 6d 65 74 68 6f 64 20 63 75 74 64 65 66 61 75 6c method cutdefaul
20c0: 74 62 72 61 6e 63 68 63 68 69 6c 64 20 20 7b 7d tbranchchild {}
20d0: 20 7b 20 73 65 74 20 6d 79 64 62 63 68 69 6c 64 { set mydbchild
20e0: 20 20 22 22 20 3b 20 72 65 74 75 72 6e 20 7d 0a "" ; return }.
20f0: 0a 20 20 20 20 6d 65 74 68 6f 64 20 64 65 66 61 . method defa
2100: 75 6c 74 62 72 61 6e 63 68 63 68 69 6c 64 20 20 ultbranchchild
2110: 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 64 {} { return $myd
2120: 62 63 68 69 6c 64 20 7d 0a 20 20 20 20 6d 65 74 bchild }. met
2130: 68 6f 64 20 64 65 66 61 75 6c 74 62 72 61 6e 63 hod defaultbranc
2140: 68 70 61 72 65 6e 74 20 7b 7d 20 7b 20 72 65 74 hparent {} { ret
2150: 75 72 6e 20 24 6d 79 64 62 70 61 72 65 6e 74 20 urn $mydbparent
2160: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 68 61 }.. method ha
2170: 73 64 65 66 61 75 6c 74 62 72 61 6e 63 68 63 68 sdefaultbranchch
2180: 69 6c 64 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e ild {} { return
2190: 20 5b 65 78 70 72 20 7b 24 6d 79 64 62 63 68 69 [expr {$mydbchi
21a0: 6c 64 20 20 6e 65 20 22 22 7d 5d 20 7d 0a 20 20 ld ne ""}] }.
21b0: 20 20 6d 65 74 68 6f 64 20 68 61 73 64 65 66 61 method hasdefa
21c0: 75 6c 74 62 72 61 6e 63 68 70 61 72 65 6e 74 20 ultbranchparent
21d0: 7b 7d 20 7b 20 72 65 74 75 72 6e 20 5b 65 78 70 {} { return [exp
21e0: 72 20 7b 24 6d 79 64 62 70 61 72 65 6e 74 20 6e r {$mydbparent n
21f0: 65 20 22 22 7d 5d 20 7d 0a 0a 20 20 20 20 23 20 e ""}] }.. #
2200: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 # ## ### ##### #
2210: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
2220: 23 23 23 23 23 0a 20 20 20 20 23 23 20 54 79 70 #####. ## Typ
2230: 65 20 41 50 49 0a 0a 20 20 20 20 74 79 70 65 6d e API.. typem
2240: 65 74 68 6f 64 20 69 73 74 72 75 6e 6b 72 65 76 ethod istrunkrev
2250: 6e 72 20 7b 72 65 76 6e 72 7d 20 7b 0a 09 72 65 nr {revnr} {..re
2260: 74 75 72 6e 20 5b 65 78 70 72 20 7b 5b 6c 6c 65 turn [expr {[lle
2270: 6e 67 74 68 20 5b 73 70 6c 69 74 20 24 72 65 76 ngth [split $rev
2280: 6e 72 20 2e 5d 5d 20 3d 3d 20 32 7d 5d 0a 20 20 nr .]] == 2}].
2290: 20 20 7d 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 }.. typemet
22a0: 68 6f 64 20 69 73 62 72 61 6e 63 68 72 65 76 6e hod isbranchrevn
22b0: 72 20 7b 72 65 76 6e 72 20 5f 20 62 76 7d 20 7b r {revnr _ bv} {
22c0: 0a 09 69 66 20 7b 5b 72 65 67 65 78 70 20 24 6d ..if {[regexp $m
22d0: 79 62 72 61 6e 63 68 70 61 74 74 65 72 6e 20 24 ybranchpattern $
22e0: 72 65 76 6e 72 20 2d 3e 20 68 65 61 64 20 74 61 revnr -> head ta
22f0: 69 6c 5d 7d 20 7b 0a 09 20 20 20 20 75 70 76 61 il]} {.. upva
2300: 72 20 31 20 24 62 76 20 62 72 61 6e 63 68 6e 72 r 1 $bv branchnr
2310: 0a 09 20 20 20 20 73 65 74 20 62 72 61 6e 63 68 .. set branch
2320: 6e 72 20 24 7b 68 65 61 64 7d 24 74 61 69 6c 0a nr ${head}$tail.
2330: 09 20 20 20 20 72 65 74 75 72 6e 20 31 0a 09 7d . return 1..}
2340: 0a 09 72 65 74 75 72 6e 20 30 0a 20 20 20 20 7d ..return 0. }
2350: 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 68 6f 64 .. typemethod
2360: 20 32 62 72 61 6e 63 68 6e 72 20 7b 72 65 76 6e 2branchnr {revn
2370: 72 7d 20 7b 0a 09 23 20 49 6e 70 75 74 20 69 73 r} {..# Input is
2380: 20 61 20 62 72 61 6e 63 68 20 72 65 76 69 73 69 a branch revisi
2390: 6f 6e 20 6e 75 6d 62 65 72 2c 20 69 2e 65 2e 20 on number, i.e.
23a0: 61 20 72 65 76 69 73 69 6f 6e 20 6e 75 6d 62 65 a revision numbe
23b0: 72 0a 09 23 20 77 69 74 68 20 61 6e 20 65 76 65 r..# with an eve
23c0: 6e 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6d 70 n number of comp
23d0: 6f 6e 65 6e 74 73 3b 20 66 6f 72 20 65 78 61 6d onents; for exam
23e0: 70 6c 65 20 27 32 2e 39 2e 32 2e 31 27 0a 09 23 ple '2.9.2.1'..#
23f0: 20 28 6e 65 76 65 72 20 27 32 2e 39 2e 32 27 20 (never '2.9.2'
2400: 6e 6f 72 20 27 32 2e 39 2e 30 2e 32 27 29 2e 20 nor '2.9.0.2').
2410: 20 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 The return valu
2420: 65 20 69 73 20 74 68 65 0a 09 23 20 62 72 61 6e e is the..# bran
2430: 63 68 20 6e 75 6d 62 65 72 20 28 66 6f 72 20 65 ch number (for e
2440: 78 61 6d 70 6c 65 2c 20 27 32 2e 39 2e 32 27 29 xample, '2.9.2')
2450: 2e 20 20 46 6f 72 20 74 72 75 6e 6b 20 72 65 76 . For trunk rev
2460: 69 73 69 6f 6e 73 2c 0a 09 23 20 6c 69 6b 65 20 isions,..# like
2470: 27 33 2e 34 27 2c 20 77 65 20 72 65 74 75 72 6e '3.4', we return
2480: 20 74 68 65 20 65 6d 70 74 79 20 73 74 72 69 6e the empty strin
2490: 67 2e 0a 0a 09 69 66 20 7b 5b 24 74 79 70 65 20 g....if {[$type
24a0: 69 73 74 72 75 6e 6b 72 65 76 6e 72 20 24 72 65 istrunkrevnr $re
24b0: 76 6e 72 5d 7d 20 7b 0a 09 20 20 20 20 72 65 74 vnr]} {.. ret
24c0: 75 72 6e 20 22 22 0a 09 7d 0a 09 72 65 74 75 72 urn ""..}..retur
24d0: 6e 20 5b 6a 6f 69 6e 20 5b 6c 72 61 6e 67 65 20 n [join [lrange
24e0: 5b 73 70 6c 69 74 20 24 72 65 76 6e 72 20 2e 5d [split $revnr .]
24f0: 20 30 20 65 6e 64 2d 31 5d 20 2e 5d 0a 20 20 20 0 end-1] .].
2500: 20 7d 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 68 }.. typemeth
2510: 6f 64 20 32 62 72 61 6e 63 68 70 61 72 65 6e 74 od 2branchparent
2520: 72 65 76 6e 72 20 7b 62 72 61 6e 63 68 6e 72 7d revnr {branchnr}
2530: 20 7b 0a 09 23 20 43 68 6f 70 20 74 68 65 20 6c {..# Chop the l
2540: 61 73 74 20 73 65 67 6d 65 6e 74 20 6f 66 66 0a ast segment off.
2550: 09 72 65 74 75 72 6e 20 5b 6a 6f 69 6e 20 5b 6c .return [join [l
2560: 72 61 6e 67 65 20 5b 73 70 6c 69 74 20 24 62 72 range [split $br
2570: 61 6e 63 68 6e 72 20 2e 5d 20 30 20 65 6e 64 2d anchnr .] 0 end-
2580: 31 5d 20 2e 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 1] .]. }..
2590: 20 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 # # ## ### ####
25a0: 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 # ######## #####
25b0: 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 ########. ##
25c0: 53 74 61 74 65 0a 0a 20 20 20 20 74 79 70 65 76 State.. typev
25d0: 61 72 69 61 62 6c 65 20 6d 79 62 72 61 6e 63 68 ariable mybranch
25e0: 70 61 74 74 65 72 6e 20 7b 5e 28 28 3f 3a 5c 64 pattern {^((?:\d
25f0: 2b 5c 2e 5c 64 2b 5c 2e 29 2b 29 28 3f 3a 30 5c +\.\d+\.)+)(?:0\
2600: 2e 29 3f 28 5c 64 2b 29 24 7d 0a 20 20 20 20 23 .)?(\d+)$}. #
2610: 20 46 69 72 73 74 20 61 20 6e 6f 6e 7a 65 72 6f First a nonzero
2620: 20 65 76 65 6e 20 6e 75 6d 62 65 72 20 6f 66 20 even number of
2630: 64 69 67 69 74 20 67 72 6f 75 70 73 20 77 69 74 digit groups wit
2640: 68 20 74 72 61 69 6c 69 6e 67 20 64 6f 74 0a 20 h trailing dot.
2650: 20 20 20 23 20 43 56 53 20 74 68 65 6e 20 73 74 # CVS then st
2660: 69 63 6b 73 20 61 6e 20 65 78 74 72 61 20 30 20 icks an extra 0
2670: 69 6e 20 68 65 72 65 3b 20 52 43 53 20 64 6f 65 in here; RCS doe
2680: 73 20 6e 6f 74 2e 0a 20 20 20 20 23 20 41 6e 64 s not.. # And
2690: 20 74 68 65 20 6c 61 73 74 20 64 69 67 69 74 20 the last digit
26a0: 67 72 6f 75 70 2e 0a 0a 20 20 20 20 76 61 72 69 group... vari
26b0: 61 62 6c 65 20 6d 79 72 65 76 6e 72 20 20 20 20 able myrevnr
26c0: 20 7b 7d 20 3b 20 23 20 52 65 76 69 73 69 6f 6e {} ; # Revision
26d0: 20 6e 75 6d 62 65 72 20 6f 66 20 74 68 65 20 72 number of the r
26e0: 65 76 69 73 69 6f 6e 2e 0a 20 20 20 20 76 61 72 evision.. var
26f0: 69 61 62 6c 65 20 6d 79 64 61 74 65 20 20 20 20 iable mydate
2700: 20 20 7b 7d 20 3b 20 23 20 54 69 6d 65 73 74 61 {} ; # Timesta
2710: 6d 70 20 6f 66 20 74 68 65 20 72 65 76 69 73 69 mp of the revisi
2720: 6f 6e 2c 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 on, seconds sinc
2730: 65 20 65 70 6f 63 68 0a 20 20 20 20 76 61 72 69 e epoch. vari
2740: 61 62 6c 65 20 6d 79 6f 72 69 67 64 61 74 65 20 able myorigdate
2750: 20 7b 7d 20 3b 20 23 20 4f 72 69 67 69 6e 61 6c {} ; # Original
2760: 20 75 6e 6d 6f 64 69 66 69 65 64 20 74 69 6d 65 unmodified time
2770: 73 74 61 6d 70 2e 0a 20 20 20 20 76 61 72 69 61 stamp.. varia
2780: 62 6c 65 20 6d 79 73 74 61 74 65 20 20 20 20 20 ble mystate
2790: 7b 7d 20 3b 20 23 20 53 74 61 74 65 20 6f 66 20 {} ; # State of
27a0: 74 68 65 20 72 65 76 69 73 69 6f 6e 2e 0a 20 20 the revision..
27b0: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 66 69 6c variable myfil
27c0: 65 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 52 65 e {} ; # Re
27d0: 66 20 74 6f 20 74 68 65 20 66 69 6c 65 20 6f 62 f to the file ob
27e0: 6a 65 63 74 20 74 68 65 20 72 65 76 69 73 69 6f ject the revisio
27f0: 6e 20 62 65 6c 6f 6e 67 73 20 74 6f 2e 0a 20 20 n belongs to..
2800: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 74 65 78 variable mytex
2810: 74 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 52 61 t {} ; # Ra
2820: 6e 67 65 20 6f 66 20 74 68 65 20 28 64 65 6c 74 nge of the (delt
2830: 61 29 20 74 65 78 74 20 66 6f 72 20 74 68 69 73 a) text for this
2840: 20 72 65 76 69 73 69 6f 6e 20 69 6e 20 74 68 65 revision in the
2850: 20 66 69 6c 65 2e 0a 20 20 20 20 76 61 72 69 61 file.. varia
2860: 62 6c 65 20 6d 79 6d 65 74 61 69 64 20 20 20 20 ble mymetaid
2870: 7b 7d 20 3b 20 23 20 49 64 20 6f 66 20 74 68 65 {} ; # Id of the
2880: 20 6d 65 74 61 20 64 61 74 61 20 67 72 6f 75 70 meta data group
2890: 20 74 68 65 20 72 65 76 69 73 69 6f 6e 0a 09 09 the revision...
28a0: 09 20 20 20 20 20 20 23 20 62 65 6c 6f 6e 67 73 . # belongs
28b0: 20 74 6f 2e 20 54 68 69 73 20 69 73 20 6c 61 74 to. This is lat
28c0: 65 72 20 75 73 65 64 20 74 6f 20 70 75 74 0a 09 er used to put..
28d0: 09 09 20 20 20 20 20 20 23 20 74 68 65 20 66 69 .. # the fi
28e0: 6c 65 20 72 65 76 69 73 69 6f 6e 73 20 69 6e 74 le revisions int
28f0: 6f 20 70 72 65 6c 69 6d 69 6e 61 72 79 0a 09 09 o preliminary...
2900: 09 20 20 20 20 20 20 23 20 63 68 61 6e 67 65 73 . # changes
2910: 65 74 73 20 28 61 6b 61 20 70 72 6f 6a 65 63 74 ets (aka project
2920: 20 72 65 76 69 73 69 6f 6e 73 29 2e 0a 09 09 09 revisions).....
2930: 20 20 20 20 20 20 23 20 54 68 69 73 20 69 64 20 # This id
2940: 65 6e 63 6f 64 65 73 20 34 20 70 69 65 63 65 73 encodes 4 pieces
2950: 20 6f 66 20 64 61 74 61 2c 0a 09 09 09 20 20 20 of data,....
2960: 20 20 20 23 20 6e 61 6d 65 6c 79 3a 20 74 68 65 # namely: the
2970: 20 70 72 6f 6a 65 63 74 20 61 6e 64 20 62 72 61 project and bra
2980: 6e 63 68 20 74 68 65 0a 09 09 09 20 20 20 20 20 nch the....
2990: 20 23 20 72 65 76 69 73 69 6f 6e 20 77 61 73 20 # revision was
29a0: 63 6f 6d 6d 69 74 74 65 64 20 74 6f 2c 20 74 68 committed to, th
29b0: 65 20 61 75 74 68 6f 72 0a 09 09 09 20 20 20 20 e author....
29c0: 20 20 23 20 77 68 6f 20 64 69 64 20 74 68 65 20 # who did the
29d0: 63 6f 6d 6d 69 74 2c 20 61 6e 64 20 74 68 65 20 commit, and the
29e0: 6d 65 73 73 61 67 65 0a 09 09 09 20 20 20 20 20 message....
29f0: 20 23 20 75 73 65 64 2e 0a 20 20 20 20 76 61 72 # used.. var
2a00: 69 61 62 6c 65 20 6d 79 6c 6f 64 20 20 20 20 20 iable mylod
2a10: 20 20 7b 7d 20 3b 20 23 20 52 65 66 65 72 65 6e {} ; # Referen
2a20: 63 65 20 74 6f 20 74 68 65 20 6c 69 6e 65 2d 6f ce to the line-o
2a30: 66 2d 64 65 76 65 6c 6f 70 6d 65 6e 74 0a 09 09 f-development...
2a40: 09 20 20 20 20 20 20 23 20 6f 62 6a 65 63 74 20 . # object
2a50: 74 68 65 20 72 65 76 69 73 69 6f 6e 20 62 65 6c the revision bel
2a60: 6f 6e 67 73 20 74 6f 2e 20 41 6e 0a 09 09 09 20 ongs to. An....
2a70: 20 20 20 20 20 23 20 61 6c 74 65 72 6e 61 74 69 # alternati
2a80: 76 65 20 69 64 69 6f 6d 20 77 6f 75 6c 64 20 62 ve idiom would b
2a90: 65 20 74 6f 20 63 61 6c 6c 20 69 74 0a 09 09 09 e to call it....
2aa0: 20 20 20 20 20 20 23 20 74 68 65 20 62 72 61 6e # the bran
2ab0: 63 68 20 74 68 65 20 72 65 76 69 73 69 6f 6e 20 ch the revision
2ac0: 69 73 20 6f 6e 2e 20 54 68 69 73 0a 09 09 09 20 is on. This....
2ad0: 20 20 20 20 20 23 20 72 65 66 65 72 65 6e 63 65 # reference
2ae0: 20 69 73 20 74 6f 20 61 20 70 72 6f 6a 65 63 74 is to a project
2af0: 2d 6c 65 76 65 6c 20 6f 62 6a 65 63 74 0a 09 09 -level object...
2b00: 09 20 20 20 20 20 20 23 20 28 73 79 6d 62 6f 6c . # (symbol
2b10: 20 6f 72 20 74 72 75 6e 6b 29 2e 0a 0a 20 20 20 or trunk)...
2b20: 20 23 20 42 61 73 69 63 20 70 61 72 65 6e 74 2f # Basic parent/
2b30: 63 68 69 6c 64 20 6c 69 6e 6b 61 67 65 20 28 6c child linkage (l
2b40: 69 6e 65 73 20 6f 66 20 64 65 76 65 6c 6f 70 6d ines of developm
2b50: 65 6e 74 29 0a 0a 20 20 20 20 76 61 72 69 61 62 ent).. variab
2b60: 6c 65 20 6d 79 70 61 72 65 6e 74 20 7b 7d 20 3b le myparent {} ;
2b70: 20 23 20 52 65 66 20 74 6f 20 70 61 72 65 6e 74 # Ref to parent
2b80: 20 72 65 76 69 73 69 6f 6e 20 6f 62 6a 65 63 74 revision object
2b90: 2e 20 4c 69 6e 6b 20 72 65 71 75 69 72 65 64 20 . Link required
2ba0: 62 65 63 61 75 73 65 20 6f 66 0a 20 20 20 20 23 because of. #
2bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2bc0: 20 20 20 20 3b 20 23 20 27 63 76 73 61 64 6d 69 ; # 'cvsadmi
2bd0: 6e 20 2d 6f 27 2c 20 77 68 69 63 68 20 63 61 6e n -o', which can
2be0: 20 63 72 65 61 74 65 20 61 72 62 69 74 72 61 72 create arbitrar
2bf0: 79 20 67 61 70 73 20 69 6e 20 74 68 65 0a 20 20 y gaps in the.
2c00: 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 #
2c10: 20 20 20 20 20 20 20 3b 20 23 20 6e 75 6d 62 65 ; # numbe
2c20: 72 69 6e 67 20 73 65 71 75 65 6e 63 65 2e 20 54 ring sequence. T
2c30: 68 69 73 20 69 73 20 69 6e 20 74 68 65 20 73 61 his is in the sa
2c40: 6d 65 20 6c 69 6e 65 20 6f 66 20 64 65 76 65 6c me line of devel
2c50: 6f 70 6d 65 6e 74 0a 20 20 20 20 23 20 20 20 20 opment. #
2c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2c70: 3b 20 23 20 4e 6f 74 65 3a 20 46 6f 72 20 74 68 ; # Note: For th
2c80: 65 20 66 69 72 73 74 20 72 65 76 69 73 69 6f 6e e first revision
2c90: 20 6f 6e 20 61 20 62 72 61 6e 63 68 20 74 68 65 on a branch the
2ca0: 20 72 65 76 69 73 69 6f 6e 0a 20 20 20 20 23 20 revision. #
2cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2cc0: 20 20 20 3b 20 23 20 69 74 20 77 61 73 20 73 70 ; # it was sp
2cd0: 61 77 6e 65 64 20 66 72 6f 6d 20 69 73 20 74 68 awned from is th
2ce0: 65 20 70 61 72 65 6e 74 2e 20 4f 6e 6c 79 20 74 e parent. Only t
2cf0: 68 65 20 72 6f 6f 74 20 72 65 76 69 73 69 6f 6e he root revision
2d00: 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 . #
2d10: 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 6f 66 ; # of
2d20: 20 6d 79 66 69 6c 65 27 73 20 72 65 76 69 73 69 myfile's revisi
2d30: 6f 6e 20 74 72 65 65 20 68 61 73 20 6e 6f 74 68 on tree has noth
2d40: 69 6e 67 20 73 65 74 20 68 65 72 65 2e 0a 20 20 ing set here..
2d50: 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 #
2d60: 20 20 20 20 20 20 20 3b 20 23 0a 0a 20 20 20 20 ; #..
2d70: 76 61 72 69 61 62 6c 65 20 6d 79 63 68 69 6c 64 variable mychild
2d80: 20 20 7b 7d 20 3b 20 23 20 52 65 66 20 74 6f 20 {} ; # Ref to
2d90: 74 68 65 20 70 72 69 6d 61 72 79 20 63 68 69 6c the primary chil
2da0: 64 20 72 65 76 69 73 69 6f 6e 20 6f 62 6a 65 63 d revision objec
2db0: 74 2c 20 69 2e 65 2e 20 74 68 65 20 6e 65 78 74 t, i.e. the next
2dc0: 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 . #
2dd0: 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 72 65 ; # re
2de0: 76 69 73 69 6f 6e 20 69 6e 20 74 68 65 20 73 61 vision in the sa
2df0: 6d 65 20 6c 69 6e 65 20 6f 66 20 64 65 76 65 6c me line of devel
2e00: 6f 70 6d 65 6e 74 2e 0a 0a 20 20 20 20 23 20 42 opment... # B
2e10: 72 61 6e 63 68 20 6c 69 6e 6b 61 67 65 20 5f 5f ranch linkage __
2e20: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
2e30: 5f 5f 0a 0a 20 20 20 20 76 61 72 69 61 62 6c 65 __.. variable
2e40: 20 6d 79 62 72 61 6e 63 68 65 73 20 20 20 20 20 mybranches
2e50: 7b 7d 20 3b 20 23 20 4c 69 73 74 20 6f 66 20 74 {} ; # List of t
2e60: 68 65 20 62 72 61 6e 63 68 65 73 20 28 6f 62 6a he branches (obj
2e70: 73 29 20 73 70 61 77 6e 65 64 20 62 79 20 74 68 s) spawned by th
2e80: 69 73 20 72 65 76 69 73 69 6f 6e 2e 0a 20 20 20 is revision..
2e90: 20 76 61 72 69 61 62 6c 65 20 6d 79 70 61 72 65 variable mypare
2ea0: 6e 74 62 72 61 6e 63 68 20 7b 7d 20 3b 20 23 20 ntbranch {} ; #
2eb0: 46 6f 72 20 74 68 65 20 66 69 72 73 74 20 72 65 For the first re
2ec0: 76 69 73 69 6f 6e 20 6f 6e 20 61 20 62 72 61 6e vision on a bran
2ed0: 63 68 20 74 68 65 20 72 65 6c 65 76 61 6e 74 0a ch the relevant.
2ee0: 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20 #
2ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b ;
2f00: 20 23 20 62 72 61 6e 63 68 20 6f 62 6a 65 63 74 # branch object
2f10: 2e 20 54 68 69 73 20 61 6c 73 6f 20 61 6c 6c 6f . This also allo
2f20: 77 73 20 75 73 20 74 6f 20 64 65 74 65 72 6d 69 ws us to determi
2f30: 6e 65 20 69 66 0a 20 20 20 20 23 20 20 20 20 20 ne if. #
2f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2f50: 20 20 20 20 20 3b 20 23 20 6d 79 70 61 72 65 6e ; # myparen
2f60: 74 20 69 73 20 69 6e 20 74 68 65 20 73 61 6d 65 t is in the same
2f70: 20 4c 4f 44 2c 20 6f 72 20 74 68 65 20 72 65 76 LOD, or the rev
2f80: 69 73 69 6f 6e 20 74 68 65 0a 20 20 20 20 23 20 ision the. #
2f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2fa0: 20 20 20 20 20 20 20 20 20 3b 20 23 20 62 72 61 ; # bra
2fb0: 6e 63 68 20 73 70 61 77 6e 65 64 20 66 72 6f 6d nch spawned from
2fc0: 2e 0a 0a 20 20 20 20 23 20 4c 69 73 74 20 6f 66 ... # List of
2fd0: 20 74 68 65 20 72 65 76 69 73 69 6f 6e 20 6f 62 the revision ob
2fe0: 6a 65 63 74 73 20 6f 66 20 74 68 65 20 66 69 72 jects of the fir
2ff0: 73 74 20 63 6f 6d 6d 69 74 73 20 6f 6e 20 61 6e st commits on an
3000: 79 0a 20 20 20 20 23 20 62 72 61 6e 63 68 65 73 y. # branches
3010: 20 73 70 61 77 6e 65 64 20 62 79 20 74 68 69 73 spawned by this
3020: 20 72 65 76 69 73 69 6f 6e 20 6f 6e 20 77 68 69 revision on whi
3030: 63 68 20 63 6f 6d 6d 69 74 73 20 6f 63 63 75 72 ch commits occur
3040: 72 65 64 2e 0a 20 20 20 20 23 20 54 68 69 73 20 red.. # This
3050: 64 65 70 65 6e 64 65 6e 63 79 20 69 73 20 6b 65 dependency is ke
3060: 70 74 20 65 78 70 6c 69 63 69 74 6c 79 20 62 65 pt explicitly be
3070: 63 61 75 73 65 20 6f 74 68 65 72 77 69 73 65 20 cause otherwise
3080: 61 0a 20 20 20 20 23 20 72 65 76 69 73 69 6f 6e a. # revision
3090: 2d 6f 6e 6c 79 20 74 6f 70 6f 6c 6f 67 69 63 61 -only topologica
30a0: 6c 20 73 6f 72 74 20 77 6f 75 6c 64 20 6d 69 73 l sort would mis
30b0: 73 20 74 68 65 20 64 65 70 65 6e 64 65 6e 63 79 s the dependency
30c0: 20 74 68 61 74 0a 20 20 20 20 23 20 65 78 69 73 that. # exis
30d0: 74 73 20 76 69 61 20 2d 3e 20 6d 79 62 72 61 6e ts via -> mybran
30e0: 63 68 65 73 2e 0a 0a 20 20 20 20 76 61 72 69 61 ches... varia
30f0: 62 6c 65 20 6d 79 62 72 61 6e 63 68 63 68 69 6c ble mybranchchil
3100: 64 72 65 6e 20 7b 7d 20 3b 20 23 20 4c 69 73 74 dren {} ; # List
3110: 20 6f 66 20 74 68 65 20 72 65 76 69 73 69 6f 6e of the revision
3120: 73 20 28 6f 62 6a 73 29 20 77 68 69 63 68 20 61 s (objs) which a
3130: 72 65 20 74 68 65 20 66 69 72 73 74 0a 20 20 20 re the first.
3140: 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #
3150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 ;
3160: 23 20 63 6f 6d 6d 69 74 73 20 6f 6e 20 61 6e 79 # commits on any
3170: 20 6f 66 20 74 68 65 20 62 72 61 6e 63 68 65 73 of the branches
3180: 20 73 70 61 77 6e 65 64 20 66 72 6f 6d 20 74 68 spawned from th
3190: 69 73 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 is. #
31a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
31b0: 20 20 20 20 3b 20 23 20 72 65 76 69 73 69 6f 6e ; # revision
31c0: 2e 20 54 68 65 20 64 65 70 65 6e 64 65 6e 63 79 . The dependency
31d0: 20 69 73 20 6b 65 70 74 20 65 78 70 6c 69 63 69 is kept explici
31e0: 74 6c 79 20 74 6f 0a 20 20 20 20 23 20 20 20 20 tly to. #
31f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3200: 20 20 20 20 20 20 20 20 3b 20 23 20 65 6e 73 75 ; # ensu
3210: 72 65 20 74 68 61 74 20 61 20 72 65 76 69 73 69 re that a revisi
3220: 6f 6e 2d 6f 6e 6c 79 20 74 6f 70 6f 6c 6f 67 69 on-only topologi
3230: 63 61 6c 20 73 6f 72 74 20 77 69 6c 6c 0a 20 20 cal sort will.
3240: 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 #
3250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b ;
3260: 20 23 20 6e 6f 74 20 6d 69 73 73 20 69 74 2c 20 # not miss it,
3270: 61 73 20 69 74 20 6f 74 68 65 72 77 69 73 65 20 as it otherwise
3280: 65 78 69 73 74 73 20 6f 6e 6c 79 20 76 69 61 0a exists only via.
3290: 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20 #
32a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
32b0: 20 3b 20 23 20 6d 79 62 72 61 6e 63 68 65 73 2e ; # mybranches.
32c0: 0a 0a 20 20 20 20 23 20 54 61 67 20 6c 69 6e 6b .. # Tag link
32d0: 61 67 65 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f age ____________
32e0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 ____________..
32f0: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 74 61 67 variable mytag
3300: 73 20 7b 7d 20 3b 20 23 20 4c 69 73 74 20 6f 66 s {} ; # List of
3310: 20 74 61 67 73 20 28 6f 62 6a 73 29 20 61 73 73 tags (objs) ass
3320: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 69 ociated with thi
3330: 73 20 72 65 76 69 73 69 6f 6e 2e 0a 0a 20 20 20 s revision...
3340: 20 23 20 4d 6f 72 65 20 64 65 72 69 76 65 64 20 # More derived
3350: 64 61 74 61 0a 0a 20 20 20 20 76 61 72 69 61 62 data.. variab
3360: 6c 65 20 6d 79 6f 70 65 72 61 74 69 6f 6e 20 20 le myoperation
3370: 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 4f 6e 65 {} ; # One
3380: 20 6f 66 20 27 61 64 64 27 2c 20 27 63 68 61 6e of 'add', 'chan
3390: 67 65 27 2c 20 27 64 65 6c 65 74 65 27 2c 20 6f ge', 'delete', o
33a0: 72 0a 09 09 09 20 20 20 20 20 20 20 20 20 20 20 r....
33b0: 20 20 23 20 27 6e 6f 74 68 69 6e 67 27 2e 20 44 # 'nothing'. D
33c0: 65 72 69 76 65 64 20 66 72 6f 6d 20 6f 75 72 20 erived from our
33d0: 61 6e 64 0a 09 09 09 20 20 20 20 20 20 20 20 20 and....
33e0: 20 20 20 20 23 20 69 74 73 20 70 61 72 65 6e 74 # its parent
33f0: 27 73 20 73 74 61 74 65 2e 0a 20 20 20 20 76 61 's state.. va
3400: 72 69 61 62 6c 65 20 6d 79 69 73 6f 6e 64 65 66 riable myisondef
3410: 61 75 6c 74 62 72 61 6e 63 68 20 30 20 3b 20 23 aultbranch 0 ; #
3420: 20 42 6f 6f 6c 65 61 6e 20 66 6c 61 67 2c 20 73 Boolean flag, s
3430: 65 74 20 69 66 20 74 68 65 0a 09 09 09 09 20 20 et if the.....
3440: 20 20 20 23 20 72 65 76 69 73 69 6f 6e 20 69 73 # revision is
3450: 20 6f 6e 20 74 68 65 20 6e 6f 6e 2d 74 72 75 6e on the non-trun
3460: 6b 0a 09 09 09 09 20 20 20 20 20 23 20 64 65 66 k..... # def
3470: 61 75 6c 74 20 62 72 61 6e 63 68 2c 20 61 6b 61 ault branch, aka
3480: 20 76 65 6e 64 6f 72 0a 09 09 09 09 20 20 20 20 vendor.....
3490: 20 23 20 62 72 61 6e 63 68 2e 0a 20 20 20 20 76 # branch.. v
34a0: 61 72 69 61 62 6c 65 20 6d 79 64 62 70 61 72 65 ariable mydbpare
34b0: 6e 74 20 20 20 20 20 20 20 20 20 7b 7d 20 3b 20 nt {} ;
34c0: 23 20 52 65 66 65 72 65 6e 63 65 20 74 6f 20 74 # Reference to t
34d0: 68 65 20 6c 61 73 74 20 72 65 76 69 73 69 6f 6e he last revision
34e0: 0a 09 09 09 09 20 20 20 20 20 23 20 6f 6e 20 74 ..... # on t
34f0: 68 65 20 76 65 6e 64 6f 72 20 62 72 61 6e 63 68 he vendor branch
3500: 20 69 66 20 74 68 69 73 20 69 73 0a 09 09 09 09 if this is.....
3510: 20 20 20 20 20 23 20 74 68 65 20 70 72 69 6d 61 # the prima
3520: 72 79 20 63 68 69 6c 64 20 6f 66 20 74 68 65 0a ry child of the.
3530: 09 09 09 09 20 20 20 20 20 23 20 72 65 67 75 6c .... # regul
3540: 61 72 20 72 6f 6f 74 2e 0a 20 20 20 20 76 61 72 ar root.. var
3550: 69 61 62 6c 65 20 6d 79 64 62 63 68 69 6c 64 20 iable mydbchild
3560: 20 20 20 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 {} ; #
3570: 52 65 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65 Reference to the
3580: 20 70 72 69 6d 61 72 79 20 63 68 69 6c 64 0a 09 primary child..
3590: 09 09 09 20 20 20 20 20 23 20 6f 66 20 74 68 65 ... # of the
35a0: 20 72 65 67 75 6c 61 72 20 72 6f 6f 74 20 69 66 regular root if
35b0: 20 74 68 69 73 20 69 73 0a 09 09 09 09 20 20 20 this is.....
35c0: 20 20 23 20 74 68 65 20 6c 61 73 74 20 72 65 76 # the last rev
35d0: 69 73 69 6f 6e 20 6f 6e 20 74 68 65 20 76 65 6e ision on the ven
35e0: 64 6f 72 0a 09 09 09 09 20 20 20 20 20 23 20 62 dor..... # b
35f0: 72 61 6e 63 68 2e 0a 0a 20 20 20 20 23 20 64 65 ranch... # de
3600: 61 64 28 73 65 6c 66 29 20 78 20 64 65 61 64 28 ad(self) x dead(
3610: 70 61 72 65 6e 74 29 20 2d 3e 20 6f 70 65 72 61 parent) -> opera
3620: 74 69 6f 6e 0a 20 20 20 20 74 79 70 65 76 61 72 tion. typevar
3630: 69 61 62 6c 65 20 6d 79 6f 70 73 74 61 74 65 20 iable myopstate
3640: 2d 61 72 72 61 79 20 7b 0a 09 7b 30 20 30 7d 20 -array {..{0 0}
3650: 63 68 61 6e 67 65 0a 09 7b 30 20 31 7d 20 64 65 change..{0 1} de
3660: 6c 65 74 65 0a 09 7b 31 20 30 7d 20 61 64 64 0a lete..{1 0} add.
3670: 09 7b 31 20 31 7d 20 6e 6f 74 68 69 6e 67 0a 20 .{1 1} nothing.
3680: 20 20 20 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 }.. # # ##
3690: 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 ### ##### #####
36a0: 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 ### ############
36b0: 23 0a 20 20 20 20 23 23 20 49 6e 74 65 72 6e 61 #. ## Interna
36c0: 6c 20 6d 65 74 68 6f 64 73 0a 0a 20 20 20 20 23 l methods.. #
36d0: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 # ## ### #####
36e0: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 ######## #######
36f0: 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 43 6f ######. ## Co
3700: 6e 66 69 67 75 72 61 74 69 6f 6e 0a 0a 20 20 20 nfiguration..
3710: 20 70 72 61 67 6d 61 20 2d 68 61 73 74 79 70 65 pragma -hastype
3720: 69 6e 66 6f 20 20 20 20 6e 6f 20 20 3b 20 23 20 info no ; #
3730: 6e 6f 20 74 79 70 65 20 69 6e 74 72 6f 73 70 65 no type introspe
3740: 63 74 69 6f 6e 0a 20 20 20 20 70 72 61 67 6d 61 ction. pragma
3750: 20 2d 68 61 73 69 6e 66 6f 20 20 20 20 20 20 20 -hasinfo
3760: 20 6e 6f 20 20 3b 20 23 20 6e 6f 20 6f 62 6a 65 no ; # no obje
3770: 63 74 20 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e ct introspection
3780: 0a 20 20 20 20 70 72 61 67 6d 61 20 2d 73 69 6d . pragma -sim
3790: 70 6c 65 64 69 73 70 61 74 63 68 20 79 65 73 20 pledispatch yes
37a0: 3b 20 23 20 73 69 6d 70 6c 65 20 66 61 73 74 20 ; # simple fast
37b0: 64 69 73 70 61 74 63 68 0a 0a 20 20 20 20 23 20 dispatch.. #
37c0: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 # ## ### ##### #
37d0: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
37e0: 23 23 23 23 23 0a 7d 0a 0a 6e 61 6d 65 73 70 61 #####.}..namespa
37f0: 63 65 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 66 6f ce eval ::vc::fo
3800: 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 ssil::import::cv
3810: 73 3a 3a 66 69 6c 65 20 7b 0a 20 20 20 20 6e 61 s::file {. na
3820: 6d 65 73 70 61 63 65 20 65 78 70 6f 72 74 20 72 mespace export r
3830: 65 76 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 65 ev. namespace
3840: 20 65 76 61 6c 20 72 65 76 20 7b 0a 09 6e 61 6d eval rev {..nam
3850: 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a espace import ::
3860: 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6d 69 73 63 3a vc::tools::misc:
3870: 3a 2a 0a 20 20 20 20 7d 0a 7d 0a 0a 23 20 23 20 :*. }.}..# #
3880: 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 ## ### ##### ###
3890: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 ##### ##########
38a0: 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 ### ############
38b0: 23 23 23 23 23 23 23 23 23 0a 23 23 20 52 65 61 #########.## Rea
38c0: 64 79 0a 0a 70 61 63 6b 61 67 65 20 70 72 6f 76 dy..package prov
38d0: 69 64 65 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a ide vc::fossil::
38e0: 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 66 69 6c import::cvs::fil
38f0: 65 3a 3a 72 65 76 20 31 2e 30 0a 72 65 74 75 72 e::rev 1.0.retur
3900: 6e 0a n.