Artifact 2e41dc7df6083814005dc0e90f0a9235531c91cc:
File
tools/cvs2fossil/lib/c2f_frev.tcl
part of check-in
[a766b08198]
- Reworked object deletion to happen centrally after the file has been processed (drop). Simplified the code restructuring the revision tree as it now doesn't have to think about when and where to remove objects.
by
aku on
2007-10-23 03:29:36.
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 63 68 61 .. method cha
10d0: 6e 67 65 70 61 72 65 6e 74 20 7b 70 61 72 65 6e ngeparent {paren
10e0: 74 7d 20 7b 20 73 65 74 20 6d 79 70 61 72 65 6e t} { set myparen
10f0: 74 20 24 70 61 72 65 6e 74 20 3b 20 72 65 74 75 t $parent ; retu
1100: 72 6e 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 rn }. method
1110: 63 68 61 6e 67 65 63 68 69 6c 64 20 20 7b 63 68 changechild {ch
1120: 69 6c 64 7d 20 20 7b 20 73 65 74 20 6d 79 63 68 ild} { set mych
1130: 69 6c 64 20 20 24 63 68 69 6c 64 20 20 3b 20 72 ild $child ; r
1140: 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 6d 65 74 eturn }.. met
1150: 68 6f 64 20 70 61 72 65 6e 74 20 7b 7d 20 7b 20 hod parent {} {
1160: 72 65 74 75 72 6e 20 24 6d 79 70 61 72 65 6e 74 return $myparent
1170: 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 63 68 }. method ch
1180: 69 6c 64 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e ild {} { return
1190: 20 24 6d 79 63 68 69 6c 64 20 20 7d 0a 0a 20 20 $mychild }..
11a0: 20 20 23 20 42 72 61 6e 63 68 20 6c 69 6e 6b 61 # Branch linka
11b0: 67 65 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ge _____________
11c0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 6d _________.. m
11d0: 65 74 68 6f 64 20 73 65 74 70 61 72 65 6e 74 62 ethod setparentb
11e0: 72 61 6e 63 68 20 7b 62 72 61 6e 63 68 7d 20 7b ranch {branch} {
11f0: 0a 09 69 66 20 7b 24 6d 79 70 61 72 65 6e 74 62 ..if {$myparentb
1200: 72 61 6e 63 68 20 6e 65 20 22 22 7d 20 7b 20 74 ranch ne ""} { t
1210: 72 6f 75 62 6c 65 20 69 6e 74 65 72 6e 61 6c 20 rouble internal
1220: 22 42 72 61 6e 63 68 20 70 61 72 65 6e 74 20 61 "Branch parent a
1230: 6c 72 65 61 64 79 20 64 65 66 69 6e 65 64 22 20 lready defined"
1240: 7d 0a 09 73 65 74 20 6d 79 70 61 72 65 6e 74 62 }..set myparentb
1250: 72 61 6e 63 68 20 24 62 72 61 6e 63 68 0a 09 72 ranch $branch..r
1260: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }..
1270: 20 6d 65 74 68 6f 64 20 68 61 73 70 61 72 65 6e method hasparen
1280: 74 62 72 61 6e 63 68 20 7b 7d 20 7b 20 72 65 74 tbranch {} { ret
1290: 75 72 6e 20 5b 65 78 70 72 20 7b 24 6d 79 70 61 urn [expr {$mypa
12a0: 72 65 6e 74 62 72 61 6e 63 68 20 6e 65 20 22 22 rentbranch ne ""
12b0: 7d 5d 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 }] }. method
12c0: 68 61 73 62 72 61 6e 63 68 65 73 20 20 20 20 20 hasbranches
12d0: 7b 7d 20 7b 20 72 65 74 75 72 6e 20 5b 6c 6c 65 {} { return [lle
12e0: 6e 67 74 68 20 24 6d 79 62 72 61 6e 63 68 65 73 ngth $mybranches
12f0: 5d 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 ] }.. method
1300: 70 61 72 65 6e 74 62 72 61 6e 63 68 20 7b 7d 20 parentbranch {}
1310: 7b 20 72 65 74 75 72 6e 20 24 6d 79 70 61 72 65 { return $mypare
1320: 6e 74 62 72 61 6e 63 68 20 7d 0a 20 20 20 20 6d ntbranch }. m
1330: 65 74 68 6f 64 20 62 72 61 6e 63 68 65 73 20 20 ethod branches
1340: 20 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 {} { return $
1350: 6d 79 62 72 61 6e 63 68 65 73 20 7d 0a 0a 20 20 mybranches }..
1360: 20 20 6d 65 74 68 6f 64 20 61 64 64 62 72 61 6e method addbran
1370: 63 68 20 7b 62 72 61 6e 63 68 7d 20 7b 0a 09 6c ch {branch} {..l
1380: 61 70 70 65 6e 64 20 6d 79 62 72 61 6e 63 68 65 append mybranche
1390: 73 20 24 62 72 61 6e 63 68 0a 09 72 65 74 75 72 s $branch..retur
13a0: 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 n. }.. met
13b0: 68 6f 64 20 61 64 64 63 68 69 6c 64 6f 6e 62 72 hod addchildonbr
13c0: 61 6e 63 68 20 7b 63 68 69 6c 64 7d 20 7b 0a 09 anch {child} {..
13d0: 6c 61 70 70 65 6e 64 20 6d 79 62 72 61 6e 63 68 lappend mybranch
13e0: 63 68 69 6c 64 72 65 6e 20 24 63 68 69 6c 64 0a children $child.
13f0: 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 .return. }..
1400: 20 20 20 6d 65 74 68 6f 64 20 63 75 74 66 72 6f method cutfro
1410: 6d 70 61 72 65 6e 74 62 72 61 6e 63 68 20 7b 7d mparentbranch {}
1420: 20 7b 20 73 65 74 20 6d 79 70 61 72 65 6e 74 62 { set myparentb
1430: 72 61 6e 63 68 20 22 22 20 3b 20 72 65 74 75 72 ranch "" ; retur
1440: 6e 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 n }.. method
1450: 72 65 6d 6f 76 65 62 72 61 6e 63 68 20 7b 62 72 removebranch {br
1460: 61 6e 63 68 7d 20 7b 0a 09 6c 64 65 6c 65 74 65 anch} {..ldelete
1470: 20 6d 79 62 72 61 6e 63 68 65 73 20 24 62 72 61 mybranches $bra
1480: 6e 63 68 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 nch..return.
1490: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 72 65 }.. method re
14a0: 6d 6f 76 65 63 68 69 6c 64 6f 6e 62 72 61 6e 63 movechildonbranc
14b0: 68 20 7b 72 65 76 7d 20 7b 0a 09 6c 64 65 6c 65 h {rev} {..ldele
14c0: 74 65 20 6d 79 62 72 61 6e 63 68 63 68 69 6c 64 te mybranchchild
14d0: 72 65 6e 20 24 72 65 76 0a 09 72 65 74 75 72 6e ren $rev..return
14e0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 . }.. meth
14f0: 6f 64 20 73 6f 72 74 62 72 61 6e 63 68 65 73 20 od sortbranches
1500: 7b 7d 20 7b 0a 09 69 66 20 7b 21 5b 6c 6c 65 6e {} {..if {![llen
1510: 67 74 68 20 24 6d 79 62 72 61 6e 63 68 65 73 5d gth $mybranches]
1520: 7d 20 72 65 74 75 72 6e 0a 0a 09 23 20 53 6f 72 } return...# Sor
1530: 74 20 74 68 65 20 62 72 61 6e 63 68 65 73 20 73 t the branches s
1540: 70 61 77 6e 65 64 20 62 79 20 74 68 69 73 20 72 pawned by this r
1550: 65 76 69 73 69 6f 6e 20 69 6e 20 63 72 65 61 74 evision in creat
1560: 69 6f 6e 0a 09 23 20 6f 72 64 65 72 2e 20 54 6f ion..# order. To
1570: 20 68 65 6c 70 20 69 6e 20 74 68 69 73 20 6f 75 help in this ou
1580: 72 20 66 69 6c 65 20 67 61 76 65 20 61 6c 6c 20 r file gave all
1590: 62 72 61 6e 63 68 65 73 20 61 20 70 6f 73 69 74 branches a posit
15a0: 69 6f 6e 0a 09 23 20 69 64 2c 20 69 6e 20 6f 72 ion..# id, in or
15b0: 64 65 72 20 6f 66 20 74 68 65 69 72 20 64 65 66 der of their def
15c0: 69 6e 69 74 69 6f 6e 20 62 79 20 74 68 65 20 52 inition by the R
15d0: 43 53 20 61 72 63 68 69 76 65 2e 0a 09 23 0a 09 CS archive...#..
15e0: 23 20 54 68 65 20 63 72 65 61 74 69 6f 6e 20 6f # The creation o
15f0: 72 64 65 72 20 69 73 20 28 61 70 70 61 72 65 6e rder is (apparen
1600: 74 6c 79 29 20 74 68 65 20 72 65 76 65 72 73 65 tly) the reverse
1610: 20 6f 66 20 74 68 65 0a 09 23 20 64 65 66 69 6e of the..# defin
1620: 69 74 69 6f 6e 20 6f 72 64 65 72 2e 20 28 49 66 ition order. (If
1630: 20 61 20 62 72 61 6e 63 68 20 69 73 20 63 72 65 a branch is cre
1640: 61 74 65 64 20 74 68 65 6e 20 64 65 6c 65 74 65 ated then delete
1650: 64 2c 20 61 0a 09 23 20 6c 61 74 65 72 20 62 72 d, a..# later br
1660: 61 6e 63 68 20 63 61 6e 20 62 65 20 61 73 73 69 anch can be assi
1670: 67 6e 65 64 20 74 68 65 20 72 65 63 79 63 6c 65 gned the recycle
1680: 64 20 62 72 61 6e 63 68 20 6e 75 6d 62 65 72 3b d branch number;
1690: 0a 09 23 20 74 68 65 72 65 66 6f 72 65 20 62 72 ..# therefore br
16a0: 61 6e 63 68 20 6e 75 6d 62 65 72 73 20 61 72 65 anch numbers are
16b0: 20 6e 6f 74 20 61 6e 20 69 6e 64 69 63 61 74 69 not an indicati
16c0: 6f 6e 20 6f 66 20 63 72 65 61 74 69 6f 6e 0a 09 on of creation..
16d0: 23 20 6f 72 64 65 72 2e 29 0a 0a 09 73 65 74 20 # order.)...set
16e0: 74 6d 70 20 7b 7d 0a 09 66 6f 72 65 61 63 68 20 tmp {}..foreach
16f0: 62 72 61 6e 63 68 20 24 6d 79 62 72 61 6e 63 68 branch $mybranch
1700: 65 73 20 7b 0a 09 20 20 20 20 6c 61 70 70 65 6e es {.. lappen
1710: 64 20 74 6d 70 20 5b 6c 69 73 74 20 24 62 72 61 d tmp [list $bra
1720: 6e 63 68 20 5b 24 62 72 61 6e 63 68 20 70 6f 73 nch [$branch pos
1730: 69 74 69 6f 6e 5d 5d 0a 09 7d 0a 0a 09 73 65 74 ition]]..}...set
1740: 20 6d 79 62 72 61 6e 63 68 65 73 20 7b 7d 0a 09 mybranches {}..
1750: 66 6f 72 65 61 63 68 20 69 74 65 6d 20 5b 6c 73 foreach item [ls
1760: 6f 72 74 20 2d 69 6e 64 65 78 20 31 20 2d 64 65 ort -index 1 -de
1770: 63 72 65 61 73 69 6e 67 20 24 74 6d 70 5d 20 7b creasing $tmp] {
1780: 0a 09 20 20 20 20 73 74 72 75 63 74 3a 3a 6c 69 .. struct::li
1790: 73 74 20 61 73 73 69 67 6e 20 24 69 74 65 6d 20 st assign $item
17a0: 62 72 61 6e 63 68 20 70 6f 73 69 74 69 6f 6e 0a branch position.
17b0: 09 20 20 20 20 6c 61 70 70 65 6e 64 20 6d 79 62 . lappend myb
17c0: 72 61 6e 63 68 65 73 20 24 62 72 61 6e 63 68 0a ranches $branch.
17d0: 09 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d .}..return. }
17e0: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 6d 6f 76 .. method mov
17f0: 65 62 72 61 6e 63 68 65 73 74 6f 20 7b 72 65 76 ebranchesto {rev
1800: 7d 20 7b 0a 09 73 65 74 20 72 65 76 6c 6f 64 20 } {..set revlod
1810: 5b 24 72 65 76 20 6c 6f 64 5d 0a 09 66 6f 72 65 [$rev lod]..fore
1820: 61 63 68 20 62 72 61 6e 63 68 20 24 6d 79 62 72 ach branch $mybr
1830: 61 6e 63 68 65 73 20 7b 0a 09 20 20 20 20 24 72 anches {.. $r
1840: 65 76 20 61 64 64 62 72 61 6e 63 68 20 24 62 72 ev addbranch $br
1850: 61 6e 63 68 0a 09 20 20 20 20 24 62 72 61 6e 63 anch.. $branc
1860: 68 20 73 65 74 70 61 72 65 6e 74 20 24 72 65 76 h setparent $rev
1870: 0a 09 20 20 20 20 24 62 72 61 6e 63 68 20 73 65 .. $branch se
1880: 74 6c 6f 64 20 24 72 65 76 6c 6f 64 0a 09 7d 0a tlod $revlod..}.
1890: 09 66 6f 72 65 61 63 68 20 62 72 61 6e 63 68 72 .foreach branchr
18a0: 65 76 20 24 6d 79 62 72 61 6e 63 68 63 68 69 6c ev $mybranchchil
18b0: 64 72 65 6e 20 7b 0a 09 20 20 20 20 24 72 65 76 dren {.. $rev
18c0: 20 61 64 64 63 68 69 6c 64 6f 6e 62 72 61 6e 63 addchildonbranc
18d0: 68 20 24 62 72 61 6e 63 68 72 65 76 0a 09 20 20 h $branchrev..
18e0: 20 20 24 62 72 61 6e 63 68 72 65 76 20 63 75 74 $branchrev cut
18f0: 66 72 6f 6d 70 61 72 65 6e 74 0a 09 20 20 20 20 fromparent..
1900: 24 62 72 61 6e 63 68 72 65 76 20 73 65 74 70 61 $branchrev setpa
1910: 72 65 6e 74 20 24 72 65 76 0a 09 7d 0a 09 73 65 rent $rev..}..se
1920: 74 20 6d 79 62 72 61 6e 63 68 65 73 20 20 20 20 t mybranches
1930: 20 20 20 7b 7d 0a 09 73 65 74 20 6d 79 62 72 61 {}..set mybra
1940: 6e 63 68 63 68 69 6c 64 72 65 6e 20 7b 7d 0a 09 nchchildren {}..
1950: 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 return. }..
1960: 20 20 6d 65 74 68 6f 64 20 72 65 6d 6f 76 65 61 method removea
1970: 6c 6c 62 72 61 6e 63 68 65 73 20 7b 7d 20 7b 0a llbranches {} {.
1980: 09 73 65 74 20 6d 79 62 72 61 6e 63 68 65 73 20 .set mybranches
1990: 20 20 20 20 20 20 7b 7d 0a 09 73 65 74 20 6d 79 {}..set my
19a0: 62 72 61 6e 63 68 63 68 69 6c 64 72 65 6e 20 7b branchchildren {
19b0: 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a }..return. }.
19c0: 0a 20 20 20 20 23 20 54 61 67 20 6c 69 6e 6b 61 . # Tag linka
19d0: 67 65 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ge _____________
19e0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 ____________..
19f0: 20 20 6d 65 74 68 6f 64 20 61 64 64 74 61 67 20 method addtag
1a00: 7b 74 61 67 7d 20 7b 0a 09 6c 61 70 70 65 6e 64 {tag} {..lappend
1a10: 20 6d 79 74 61 67 73 20 24 74 61 67 0a 09 72 65 mytags $tag..re
1a20: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 turn. }..
1a30: 6d 65 74 68 6f 64 20 74 61 67 73 20 7b 7d 20 7b method tags {} {
1a40: 20 72 65 74 75 72 6e 20 24 6d 79 74 61 67 73 20 return $mytags
1a50: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 72 65 }.. method re
1a60: 6d 6f 76 65 61 6c 6c 74 61 67 73 20 7b 7d 20 7b movealltags {} {
1a70: 0a 09 73 65 74 20 6d 79 74 61 67 73 20 7b 7d 0a ..set mytags {}.
1a80: 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 .return. }..
1a90: 20 20 20 6d 65 74 68 6f 64 20 6d 6f 76 65 74 61 method moveta
1aa0: 67 73 74 6f 20 7b 72 65 76 7d 20 7b 0a 09 73 65 gsto {rev} {..se
1ab0: 74 20 72 65 76 6c 6f 64 20 5b 24 72 65 76 20 6c t revlod [$rev l
1ac0: 6f 64 5d 0a 09 66 6f 72 65 61 63 68 20 74 61 67 od]..foreach tag
1ad0: 20 24 6d 79 74 61 67 73 20 7b 0a 09 20 20 20 20 $mytags {..
1ae0: 24 72 65 76 20 61 64 64 74 61 67 20 24 74 61 67 $rev addtag $tag
1af0: 0a 09 20 20 20 20 24 74 61 67 20 73 65 74 74 61 .. $tag setta
1b00: 67 72 65 76 20 24 72 65 76 0a 09 20 20 20 20 24 grev $rev.. $
1b10: 74 61 67 20 73 65 74 6c 6f 64 20 24 72 65 76 6c tag setlod $revl
1b20: 6f 64 0a 09 7d 0a 09 73 65 74 20 6d 79 74 61 67 od..}..set mytag
1b30: 73 20 7b 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 s {}..return.
1b40: 20 7d 0a 0a 20 20 20 20 23 20 67 65 6e 65 72 61 }.. # genera
1b50: 6c 20 73 79 6d 62 6f 6c 20 6f 70 65 72 61 74 69 l symbol operati
1b60: 6f 6e 73 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a ons ___________.
1b70: 0a 20 20 20 20 6d 65 74 68 6f 64 20 6d 6f 76 65 . method move
1b80: 73 79 6d 62 6f 6c 73 74 6f 20 7b 72 65 76 7d 20 symbolsto {rev}
1b90: 7b 0a 09 23 20 4d 6f 76 65 20 74 68 65 20 74 61 {..# Move the ta
1ba0: 67 73 20 61 6e 64 20 62 72 61 6e 63 68 65 73 20 gs and branches
1bb0: 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 69 73 attached to this
1bc0: 20 72 65 76 69 73 69 6f 6e 20 74 6f 20 74 68 65 revision to the
1bd0: 0a 09 23 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 ..# destination
1be0: 61 6e 64 20 66 69 78 20 61 6c 6c 20 70 6f 69 6e and fix all poin
1bf0: 74 65 72 73 2e 0a 0a 09 24 73 65 6c 66 20 6d 6f ters....$self mo
1c00: 76 65 74 61 67 73 74 6f 20 20 20 20 20 24 72 65 vetagsto $re
1c10: 76 0a 09 24 73 65 6c 66 20 6d 6f 76 65 62 72 61 v..$self movebra
1c20: 6e 63 68 65 73 74 6f 20 24 72 65 76 0a 09 72 65 nchesto $rev..re
1c30: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 turn. }..
1c40: 23 20 44 65 72 69 76 65 64 20 73 74 75 66 66 20 # Derived stuff
1c50: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
1c60: 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 6d 65 74 _______.. met
1c70: 68 6f 64 20 64 65 74 65 72 6d 69 6e 65 6f 70 65 hod determineope
1c80: 72 61 74 69 6f 6e 20 7b 7d 20 7b 0a 09 23 20 4c ration {} {..# L
1c90: 6f 6f 6b 20 61 74 20 74 68 65 20 73 74 61 74 65 ook at the state
1ca0: 20 6f 66 20 62 6f 74 68 20 74 68 69 73 20 72 65 of both this re
1cb0: 76 69 73 69 6f 6e 20 61 6e 64 20 69 74 73 20 70 vision and its p
1cc0: 61 72 65 6e 74 20 74 6f 0a 09 23 20 64 65 74 65 arent to..# dete
1cd0: 72 6d 69 6e 65 20 74 68 65 20 74 79 70 65 20 6f rmine the type o
1ce0: 70 66 20 6f 70 65 72 61 74 69 6f 6e 20 77 68 69 pf operation whi
1cf0: 63 68 20 77 61 73 20 70 65 72 66 6f 72 6d 65 64 ch was performed
1d00: 20 28 61 64 64 2c 0a 09 23 20 6d 6f 64 69 66 79 (add,..# modify
1d10: 2c 20 64 65 6c 65 74 65 2c 20 6e 6f 6e 65 29 2e , delete, none).
1d20: 0a 09 23 0a 09 23 20 54 68 65 20 69 6d 70 6f 72 ..#..# The impor
1d30: 74 61 6e 74 20 69 6e 66 6f 72 6d 61 74 69 6f 6e tant information
1d40: 20 69 73 20 64 65 61 64 20 76 73 20 6e 6f 74 2d is dead vs not-
1d50: 64 65 61 64 20 66 6f 72 20 62 6f 74 68 2c 0a 09 dead for both,..
1d60: 23 20 67 69 76 69 6e 67 20 72 69 73 65 20 74 6f # giving rise to
1d70: 20 66 6f 75 72 20 70 6f 73 73 69 62 6c 65 20 74 four possible t
1d80: 79 70 65 73 2e 0a 0a 09 73 65 74 20 73 64 65 61 ypes....set sdea
1d90: 64 20 5b 65 78 70 72 20 7b 24 6d 79 73 74 61 74 d [expr {$mystat
1da0: 65 20 65 71 20 22 64 65 61 64 22 7d 5d 0a 09 73 e eq "dead"}]..s
1db0: 65 74 20 70 64 65 61 64 20 5b 65 78 70 72 20 7b et pdead [expr {
1dc0: 24 6d 79 70 61 72 65 6e 74 20 65 71 20 22 22 20 $myparent eq ""
1dd0: 7c 7c 20 5b 24 6d 79 70 61 72 65 6e 74 20 73 74 || [$myparent st
1de0: 61 74 65 5d 20 65 71 20 22 64 65 61 64 22 7d 5d ate] eq "dead"}]
1df0: 0a 0a 09 73 65 74 20 6d 79 6f 70 65 72 61 74 69 ...set myoperati
1e00: 6f 6e 20 24 6d 79 6f 70 73 74 61 74 65 28 5b 6c on $myopstate([l
1e10: 69 73 74 20 24 70 64 65 61 64 20 24 73 64 65 61 ist $pdead $sdea
1e20: 64 5d 29 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 d])..return.
1e30: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 6f 70 }.. method op
1e40: 65 72 61 74 69 6f 6e 20 7b 7d 20 7b 20 72 65 74 eration {} { ret
1e50: 75 72 6e 20 24 6d 79 6f 70 65 72 61 74 69 6f 6e urn $myoperation
1e60: 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 72 65 }. method re
1e70: 74 79 70 65 20 7b 78 7d 20 7b 20 73 65 74 20 6d type {x} { set m
1e80: 79 6f 70 65 72 61 74 69 6f 6e 20 24 78 20 3b 20 yoperation $x ;
1e90: 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 6d 65 return }.. me
1ea0: 74 68 6f 64 20 69 73 6f 6e 64 65 66 61 75 6c 74 thod isondefault
1eb0: 62 72 61 6e 63 68 20 20 20 20 7b 7d 20 7b 20 72 branch {} { r
1ec0: 65 74 75 72 6e 20 24 6d 79 69 73 6f 6e 64 65 66 eturn $myisondef
1ed0: 61 75 6c 74 62 72 61 6e 63 68 20 7d 0a 0a 20 20 aultbranch }..
1ee0: 20 20 6d 65 74 68 6f 64 20 73 65 74 6f 6e 64 65 method setonde
1ef0: 66 61 75 6c 74 62 72 61 6e 63 68 20 20 20 7b 78 faultbranch {x
1f00: 7d 20 7b 20 73 65 74 20 6d 79 69 73 6f 6e 64 65 } { set myisonde
1f10: 66 61 75 6c 74 62 72 61 6e 63 68 20 24 78 20 3b faultbranch $x ;
1f20: 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 6d return }.. m
1f30: 65 74 68 6f 64 20 73 65 74 64 65 66 61 75 6c 74 ethod setdefault
1f40: 62 72 61 6e 63 68 63 68 69 6c 64 20 20 7b 72 65 branchchild {re
1f50: 76 7d 20 7b 20 73 65 74 20 6d 79 64 62 63 68 69 v} { set mydbchi
1f60: 6c 64 20 24 72 65 76 20 3b 20 72 65 74 75 72 6e ld $rev ; return
1f70: 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 65 }. method se
1f80: 74 64 65 66 61 75 6c 74 62 72 61 6e 63 68 70 61 tdefaultbranchpa
1f90: 72 65 6e 74 20 7b 72 65 76 7d 20 7b 0a 09 73 65 rent {rev} {..se
1fa0: 74 20 6d 79 64 62 70 61 72 65 6e 74 20 24 72 65 t mydbparent $re
1fb0: 76 0a 0a 09 23 20 52 65 74 79 70 65 20 74 68 65 v...# Retype the
1fc0: 20 72 65 76 69 73 69 6f 6e 20 28 6d 61 79 20 63 revision (may c
1fd0: 68 61 6e 67 65 20 66 72 6f 6d 20 27 61 64 64 27 hange from 'add'
1fe0: 20 74 6f 20 27 63 68 61 6e 67 65 27 29 2e 0a 0a to 'change')...
1ff0: 09 73 65 74 20 73 64 65 61 64 20 5b 65 78 70 72 .set sdead [expr
2000: 20 7b 24 6d 79 6f 70 65 72 61 74 69 6f 6e 20 20 {$myoperation
2010: 20 20 20 6e 65 20 22 63 68 61 6e 67 65 22 7d 5d ne "change"}]
2020: 0a 09 73 65 74 20 70 64 65 61 64 20 5b 65 78 70 ..set pdead [exp
2030: 72 20 7b 5b 24 72 65 76 20 6f 70 65 72 61 74 69 r {[$rev operati
2040: 6f 6e 5d 20 6e 65 20 22 63 68 61 6e 67 65 22 7d on] ne "change"}
2050: 5d 0a 09 73 65 74 20 6d 79 6f 70 65 72 61 74 69 ]..set myoperati
2060: 6f 6e 20 24 6d 79 6f 70 73 74 61 74 65 28 5b 6c on $myopstate([l
2070: 69 73 74 20 24 70 64 65 61 64 20 24 73 64 65 61 ist $pdead $sdea
2080: 64 5d 29 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 d])..return.
2090: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 63 75 }.. method cu
20a0: 74 64 65 66 61 75 6c 74 62 72 61 6e 63 68 70 61 tdefaultbranchpa
20b0: 72 65 6e 74 20 7b 7d 20 7b 20 73 65 74 20 6d 79 rent {} { set my
20c0: 64 62 70 61 72 65 6e 74 20 22 22 20 3b 20 72 65 dbparent "" ; re
20d0: 74 75 72 6e 20 7d 0a 20 20 20 20 6d 65 74 68 6f turn }. metho
20e0: 64 20 63 75 74 64 65 66 61 75 6c 74 62 72 61 6e d cutdefaultbran
20f0: 63 68 63 68 69 6c 64 20 20 7b 7d 20 7b 20 73 65 chchild {} { se
2100: 74 20 6d 79 64 62 63 68 69 6c 64 20 20 22 22 20 t mydbchild ""
2110: 3b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 ; return }..
2120: 6d 65 74 68 6f 64 20 64 65 66 61 75 6c 74 62 72 method defaultbr
2130: 61 6e 63 68 63 68 69 6c 64 20 20 7b 7d 20 7b 20 anchchild {} {
2140: 72 65 74 75 72 6e 20 24 6d 79 64 62 63 68 69 6c return $mydbchil
2150: 64 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 64 d }. method d
2160: 65 66 61 75 6c 74 62 72 61 6e 63 68 70 61 72 65 efaultbranchpare
2170: 6e 74 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 nt {} { return $
2180: 6d 79 64 62 70 61 72 65 6e 74 20 7d 0a 0a 20 20 mydbparent }..
2190: 20 20 6d 65 74 68 6f 64 20 68 61 73 64 65 66 61 method hasdefa
21a0: 75 6c 74 62 72 61 6e 63 68 63 68 69 6c 64 20 20 ultbranchchild
21b0: 7b 7d 20 7b 20 72 65 74 75 72 6e 20 5b 65 78 70 {} { return [exp
21c0: 72 20 7b 24 6d 79 64 62 63 68 69 6c 64 20 20 6e r {$mydbchild n
21d0: 65 20 22 22 7d 5d 20 7d 0a 20 20 20 20 6d 65 74 e ""}] }. met
21e0: 68 6f 64 20 68 61 73 64 65 66 61 75 6c 74 62 72 hod hasdefaultbr
21f0: 61 6e 63 68 70 61 72 65 6e 74 20 7b 7d 20 7b 20 anchparent {} {
2200: 72 65 74 75 72 6e 20 5b 65 78 70 72 20 7b 24 6d return [expr {$m
2210: 79 64 62 70 61 72 65 6e 74 20 6e 65 20 22 22 7d ydbparent ne ""}
2220: 5d 20 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 20 ] }.. # # ##
2230: 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 ### ##### ######
2240: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 ## #############
2250: 0a 20 20 20 20 23 23 20 54 79 70 65 20 41 50 49 . ## Type API
2260: 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 68 6f 64 .. typemethod
2270: 20 69 73 74 72 75 6e 6b 72 65 76 6e 72 20 7b 72 istrunkrevnr {r
2280: 65 76 6e 72 7d 20 7b 0a 09 72 65 74 75 72 6e 20 evnr} {..return
2290: 5b 65 78 70 72 20 7b 5b 6c 6c 65 6e 67 74 68 20 [expr {[llength
22a0: 5b 73 70 6c 69 74 20 24 72 65 76 6e 72 20 2e 5d [split $revnr .]
22b0: 5d 20 3d 3d 20 32 7d 5d 0a 20 20 20 20 7d 0a 0a ] == 2}]. }..
22c0: 20 20 20 20 74 79 70 65 6d 65 74 68 6f 64 20 69 typemethod i
22d0: 73 62 72 61 6e 63 68 72 65 76 6e 72 20 7b 72 65 sbranchrevnr {re
22e0: 76 6e 72 20 5f 20 62 76 7d 20 7b 0a 09 69 66 20 vnr _ bv} {..if
22f0: 7b 5b 72 65 67 65 78 70 20 24 6d 79 62 72 61 6e {[regexp $mybran
2300: 63 68 70 61 74 74 65 72 6e 20 24 72 65 76 6e 72 chpattern $revnr
2310: 20 2d 3e 20 68 65 61 64 20 74 61 69 6c 5d 7d 20 -> head tail]}
2320: 7b 0a 09 20 20 20 20 75 70 76 61 72 20 31 20 24 {.. upvar 1 $
2330: 62 76 20 62 72 61 6e 63 68 6e 72 0a 09 20 20 20 bv branchnr..
2340: 20 73 65 74 20 62 72 61 6e 63 68 6e 72 20 24 7b set branchnr ${
2350: 68 65 61 64 7d 24 74 61 69 6c 0a 09 20 20 20 20 head}$tail..
2360: 72 65 74 75 72 6e 20 31 0a 09 7d 0a 09 72 65 74 return 1..}..ret
2370: 75 72 6e 20 30 0a 20 20 20 20 7d 0a 0a 20 20 20 urn 0. }..
2380: 20 74 79 70 65 6d 65 74 68 6f 64 20 32 62 72 61 typemethod 2bra
2390: 6e 63 68 6e 72 20 7b 72 65 76 6e 72 7d 20 7b 0a nchnr {revnr} {.
23a0: 09 23 20 49 6e 70 75 74 20 69 73 20 61 20 62 72 .# Input is a br
23b0: 61 6e 63 68 20 72 65 76 69 73 69 6f 6e 20 6e 75 anch revision nu
23c0: 6d 62 65 72 2c 20 69 2e 65 2e 20 61 20 72 65 76 mber, i.e. a rev
23d0: 69 73 69 6f 6e 20 6e 75 6d 62 65 72 0a 09 23 20 ision number..#
23e0: 77 69 74 68 20 61 6e 20 65 76 65 6e 20 6e 75 6d with an even num
23f0: 62 65 72 20 6f 66 20 63 6f 6d 70 6f 6e 65 6e 74 ber of component
2400: 73 3b 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 27 s; for example '
2410: 32 2e 39 2e 32 2e 31 27 0a 09 23 20 28 6e 65 76 2.9.2.1'..# (nev
2420: 65 72 20 27 32 2e 39 2e 32 27 20 6e 6f 72 20 27 er '2.9.2' nor '
2430: 32 2e 39 2e 30 2e 32 27 29 2e 20 20 54 68 65 20 2.9.0.2'). The
2440: 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69 73 20 return value is
2450: 74 68 65 0a 09 23 20 62 72 61 6e 63 68 20 6e 75 the..# branch nu
2460: 6d 62 65 72 20 28 66 6f 72 20 65 78 61 6d 70 6c mber (for exampl
2470: 65 2c 20 27 32 2e 39 2e 32 27 29 2e 20 20 46 6f e, '2.9.2'). Fo
2480: 72 20 74 72 75 6e 6b 20 72 65 76 69 73 69 6f 6e r trunk revision
2490: 73 2c 0a 09 23 20 6c 69 6b 65 20 27 33 2e 34 27 s,..# like '3.4'
24a0: 2c 20 77 65 20 72 65 74 75 72 6e 20 74 68 65 20 , we return the
24b0: 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 0a 0a 09 empty string....
24c0: 69 66 20 7b 5b 24 74 79 70 65 20 69 73 74 72 75 if {[$type istru
24d0: 6e 6b 72 65 76 6e 72 20 24 72 65 76 6e 72 5d 7d nkrevnr $revnr]}
24e0: 20 7b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 22 {.. return "
24f0: 22 0a 09 7d 0a 09 72 65 74 75 72 6e 20 5b 6a 6f "..}..return [jo
2500: 69 6e 20 5b 6c 72 61 6e 67 65 20 5b 73 70 6c 69 in [lrange [spli
2510: 74 20 24 72 65 76 6e 72 20 2e 5d 20 30 20 65 6e t $revnr .] 0 en
2520: 64 2d 31 5d 20 2e 5d 0a 20 20 20 20 7d 0a 0a 20 d-1] .]. }..
2530: 20 20 20 74 79 70 65 6d 65 74 68 6f 64 20 32 62 typemethod 2b
2540: 72 61 6e 63 68 70 61 72 65 6e 74 72 65 76 6e 72 ranchparentrevnr
2550: 20 7b 62 72 61 6e 63 68 6e 72 7d 20 7b 0a 09 23 {branchnr} {..#
2560: 20 43 68 6f 70 20 74 68 65 20 6c 61 73 74 20 73 Chop the last s
2570: 65 67 6d 65 6e 74 20 6f 66 66 0a 09 72 65 74 75 egment off..retu
2580: 72 6e 20 5b 6a 6f 69 6e 20 5b 6c 72 61 6e 67 65 rn [join [lrange
2590: 20 5b 73 70 6c 69 74 20 24 62 72 61 6e 63 68 6e [split $branchn
25a0: 72 20 2e 5d 20 30 20 65 6e 64 2d 31 5d 20 2e 5d r .] 0 end-1] .]
25b0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 23 20 . }.. # #
25c0: 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 ## ### ##### ###
25d0: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 ##### ##########
25e0: 23 23 23 0a 20 20 20 20 23 23 20 53 74 61 74 65 ###. ## State
25f0: 0a 0a 20 20 20 20 74 79 70 65 76 61 72 69 61 62 .. typevariab
2600: 6c 65 20 6d 79 62 72 61 6e 63 68 70 61 74 74 65 le mybranchpatte
2610: 72 6e 20 7b 5e 28 28 3f 3a 5c 64 2b 5c 2e 5c 64 rn {^((?:\d+\.\d
2620: 2b 5c 2e 29 2b 29 28 3f 3a 30 5c 2e 29 3f 28 5c +\.)+)(?:0\.)?(\
2630: 64 2b 29 24 7d 0a 20 20 20 20 23 20 46 69 72 73 d+)$}. # Firs
2640: 74 20 61 20 6e 6f 6e 7a 65 72 6f 20 65 76 65 6e t a nonzero even
2650: 20 6e 75 6d 62 65 72 20 6f 66 20 64 69 67 69 74 number of digit
2660: 20 67 72 6f 75 70 73 20 77 69 74 68 20 74 72 61 groups with tra
2670: 69 6c 69 6e 67 20 64 6f 74 0a 20 20 20 20 23 20 iling dot. #
2680: 43 56 53 20 74 68 65 6e 20 73 74 69 63 6b 73 20 CVS then sticks
2690: 61 6e 20 65 78 74 72 61 20 30 20 69 6e 20 68 65 an extra 0 in he
26a0: 72 65 3b 20 52 43 53 20 64 6f 65 73 20 6e 6f 74 re; RCS does not
26b0: 2e 0a 20 20 20 20 23 20 41 6e 64 20 74 68 65 20 .. # And the
26c0: 6c 61 73 74 20 64 69 67 69 74 20 67 72 6f 75 70 last digit group
26d0: 2e 0a 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 ... variable
26e0: 6d 79 72 65 76 6e 72 20 20 20 20 20 7b 7d 20 3b myrevnr {} ;
26f0: 20 23 20 52 65 76 69 73 69 6f 6e 20 6e 75 6d 62 # Revision numb
2700: 65 72 20 6f 66 20 74 68 65 20 72 65 76 69 73 69 er of the revisi
2710: 6f 6e 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 on.. variable
2720: 20 6d 79 64 61 74 65 20 20 20 20 20 20 7b 7d 20 mydate {}
2730: 3b 20 23 20 54 69 6d 65 73 74 61 6d 70 20 6f 66 ; # Timestamp of
2740: 20 74 68 65 20 72 65 76 69 73 69 6f 6e 2c 20 73 the revision, s
2750: 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 65 70 6f econds since epo
2760: 63 68 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 ch. variable
2770: 6d 79 6f 72 69 67 64 61 74 65 20 20 7b 7d 20 3b myorigdate {} ;
2780: 20 23 20 4f 72 69 67 69 6e 61 6c 20 75 6e 6d 6f # Original unmo
2790: 64 69 66 69 65 64 20 74 69 6d 65 73 74 61 6d 70 dified timestamp
27a0: 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d .. variable m
27b0: 79 73 74 61 74 65 20 20 20 20 20 7b 7d 20 3b 20 ystate {} ;
27c0: 23 20 53 74 61 74 65 20 6f 66 20 74 68 65 20 72 # State of the r
27d0: 65 76 69 73 69 6f 6e 2e 0a 20 20 20 20 76 61 72 evision.. var
27e0: 69 61 62 6c 65 20 6d 79 66 69 6c 65 20 20 20 20 iable myfile
27f0: 20 20 7b 7d 20 3b 20 23 20 52 65 66 20 74 6f 20 {} ; # Ref to
2800: 74 68 65 20 66 69 6c 65 20 6f 62 6a 65 63 74 20 the file object
2810: 74 68 65 20 72 65 76 69 73 69 6f 6e 20 62 65 6c the revision bel
2820: 6f 6e 67 73 20 74 6f 2e 0a 20 20 20 20 76 61 72 ongs to.. var
2830: 69 61 62 6c 65 20 6d 79 74 65 78 74 20 20 20 20 iable mytext
2840: 20 20 7b 7d 20 3b 20 23 20 52 61 6e 67 65 20 6f {} ; # Range o
2850: 66 20 74 68 65 20 28 64 65 6c 74 61 29 20 74 65 f the (delta) te
2860: 78 74 20 66 6f 72 20 74 68 69 73 20 72 65 76 69 xt for this revi
2870: 73 69 6f 6e 20 69 6e 20 74 68 65 20 66 69 6c 65 sion in the file
2880: 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d .. variable m
2890: 79 6d 65 74 61 69 64 20 20 20 20 7b 7d 20 3b 20 ymetaid {} ;
28a0: 23 20 49 64 20 6f 66 20 74 68 65 20 6d 65 74 61 # Id of the meta
28b0: 20 64 61 74 61 20 67 72 6f 75 70 20 74 68 65 20 data group the
28c0: 72 65 76 69 73 69 6f 6e 0a 09 09 09 20 20 20 20 revision....
28d0: 20 20 23 20 62 65 6c 6f 6e 67 73 20 74 6f 2e 20 # belongs to.
28e0: 54 68 69 73 20 69 73 20 6c 61 74 65 72 20 75 73 This is later us
28f0: 65 64 20 74 6f 20 70 75 74 0a 09 09 09 20 20 20 ed to put....
2900: 20 20 20 23 20 74 68 65 20 66 69 6c 65 20 72 65 # the file re
2910: 76 69 73 69 6f 6e 73 20 69 6e 74 6f 20 70 72 65 visions into pre
2920: 6c 69 6d 69 6e 61 72 79 0a 09 09 09 20 20 20 20 liminary....
2930: 20 20 23 20 63 68 61 6e 67 65 73 65 74 73 20 28 # changesets (
2940: 61 6b 61 20 70 72 6f 6a 65 63 74 20 72 65 76 69 aka project revi
2950: 73 69 6f 6e 73 29 2e 0a 09 09 09 20 20 20 20 20 sions).....
2960: 20 23 20 54 68 69 73 20 69 64 20 65 6e 63 6f 64 # This id encod
2970: 65 73 20 34 20 70 69 65 63 65 73 20 6f 66 20 64 es 4 pieces of d
2980: 61 74 61 2c 0a 09 09 09 20 20 20 20 20 20 23 20 ata,.... #
2990: 6e 61 6d 65 6c 79 3a 20 74 68 65 20 70 72 6f 6a namely: the proj
29a0: 65 63 74 20 61 6e 64 20 62 72 61 6e 63 68 20 74 ect and branch t
29b0: 68 65 0a 09 09 09 20 20 20 20 20 20 23 20 72 65 he.... # re
29c0: 76 69 73 69 6f 6e 20 77 61 73 20 63 6f 6d 6d 69 vision was commi
29d0: 74 74 65 64 20 74 6f 2c 20 74 68 65 20 61 75 74 tted to, the aut
29e0: 68 6f 72 0a 09 09 09 20 20 20 20 20 20 23 20 77 hor.... # w
29f0: 68 6f 20 64 69 64 20 74 68 65 20 63 6f 6d 6d 69 ho did the commi
2a00: 74 2c 20 61 6e 64 20 74 68 65 20 6d 65 73 73 61 t, and the messa
2a10: 67 65 0a 09 09 09 20 20 20 20 20 20 23 20 75 73 ge.... # us
2a20: 65 64 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ed.. variable
2a30: 20 6d 79 6c 6f 64 20 20 20 20 20 20 20 7b 7d 20 mylod {}
2a40: 3b 20 23 20 52 65 66 65 72 65 6e 63 65 20 74 6f ; # Reference to
2a50: 20 74 68 65 20 6c 69 6e 65 2d 6f 66 2d 64 65 76 the line-of-dev
2a60: 65 6c 6f 70 6d 65 6e 74 0a 09 09 09 20 20 20 20 elopment....
2a70: 20 20 23 20 6f 62 6a 65 63 74 20 74 68 65 20 72 # object the r
2a80: 65 76 69 73 69 6f 6e 20 62 65 6c 6f 6e 67 73 20 evision belongs
2a90: 74 6f 2e 20 41 6e 0a 09 09 09 20 20 20 20 20 20 to. An....
2aa0: 23 20 61 6c 74 65 72 6e 61 74 69 76 65 20 69 64 # alternative id
2ab0: 69 6f 6d 20 77 6f 75 6c 64 20 62 65 20 74 6f 20 iom would be to
2ac0: 63 61 6c 6c 20 69 74 0a 09 09 09 20 20 20 20 20 call it....
2ad0: 20 23 20 74 68 65 20 62 72 61 6e 63 68 20 74 68 # the branch th
2ae0: 65 20 72 65 76 69 73 69 6f 6e 20 69 73 20 6f 6e e revision is on
2af0: 2e 20 54 68 69 73 0a 09 09 09 20 20 20 20 20 20 . This....
2b00: 23 20 72 65 66 65 72 65 6e 63 65 20 69 73 20 74 # reference is t
2b10: 6f 20 61 20 70 72 6f 6a 65 63 74 2d 6c 65 76 65 o a project-leve
2b20: 6c 20 6f 62 6a 65 63 74 0a 09 09 09 20 20 20 20 l object....
2b30: 20 20 23 20 28 73 79 6d 62 6f 6c 20 6f 72 20 74 # (symbol or t
2b40: 72 75 6e 6b 29 2e 0a 0a 20 20 20 20 23 20 42 61 runk)... # Ba
2b50: 73 69 63 20 70 61 72 65 6e 74 2f 63 68 69 6c 64 sic parent/child
2b60: 20 6c 69 6e 6b 61 67 65 20 28 6c 69 6e 65 73 20 linkage (lines
2b70: 6f 66 20 64 65 76 65 6c 6f 70 6d 65 6e 74 29 0a of development).
2b80: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 . variable my
2b90: 70 61 72 65 6e 74 20 7b 7d 20 3b 20 23 20 52 65 parent {} ; # Re
2ba0: 66 20 74 6f 20 70 61 72 65 6e 74 20 72 65 76 69 f to parent revi
2bb0: 73 69 6f 6e 20 6f 62 6a 65 63 74 2e 20 4c 69 6e sion object. Lin
2bc0: 6b 20 72 65 71 75 69 72 65 64 20 62 65 63 61 75 k required becau
2bd0: 73 65 20 6f 66 0a 20 20 20 20 23 20 20 20 20 20 se of. #
2be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b ;
2bf0: 20 23 20 27 63 76 73 61 64 6d 69 6e 20 2d 6f 27 # 'cvsadmin -o'
2c00: 2c 20 77 68 69 63 68 20 63 61 6e 20 63 72 65 61 , which can crea
2c10: 74 65 20 61 72 62 69 74 72 61 72 79 20 67 61 70 te arbitrary gap
2c20: 73 20 69 6e 20 74 68 65 0a 20 20 20 20 23 20 20 s in the. #
2c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2c40: 20 20 3b 20 23 20 6e 75 6d 62 65 72 69 6e 67 20 ; # numbering
2c50: 73 65 71 75 65 6e 63 65 2e 20 54 68 69 73 20 69 sequence. This i
2c60: 73 20 69 6e 20 74 68 65 20 73 61 6d 65 20 6c 69 s in the same li
2c70: 6e 65 20 6f 66 20 64 65 76 65 6c 6f 70 6d 65 6e ne of developmen
2c80: 74 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 t. #
2c90: 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 4e ; # N
2ca0: 6f 74 65 3a 20 46 6f 72 20 74 68 65 20 66 69 72 ote: For the fir
2cb0: 73 74 20 72 65 76 69 73 69 6f 6e 20 6f 6e 20 61 st revision on a
2cc0: 20 62 72 61 6e 63 68 20 74 68 65 20 72 65 76 69 branch the revi
2cd0: 73 69 6f 6e 0a 20 20 20 20 23 20 20 20 20 20 20 sion. #
2ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 ;
2cf0: 23 20 69 74 20 77 61 73 20 73 70 61 77 6e 65 64 # it was spawned
2d00: 20 66 72 6f 6d 20 69 73 20 74 68 65 20 70 61 72 from is the par
2d10: 65 6e 74 2e 20 4f 6e 6c 79 20 74 68 65 20 72 6f ent. Only the ro
2d20: 6f 74 20 72 65 76 69 73 69 6f 6e 0a 20 20 20 20 ot revision.
2d30: 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #
2d40: 20 20 20 20 20 3b 20 23 20 6f 66 20 6d 79 66 69 ; # of myfi
2d50: 6c 65 27 73 20 72 65 76 69 73 69 6f 6e 20 74 72 le's revision tr
2d60: 65 65 20 68 61 73 20 6e 6f 74 68 69 6e 67 20 73 ee has nothing s
2d70: 65 74 20 68 65 72 65 2e 0a 20 20 20 20 23 20 20 et here.. #
2d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2d90: 20 20 3b 20 23 0a 0a 20 20 20 20 76 61 72 69 61 ; #.. varia
2da0: 62 6c 65 20 6d 79 63 68 69 6c 64 20 20 7b 7d 20 ble mychild {}
2db0: 3b 20 23 20 52 65 66 20 74 6f 20 74 68 65 20 70 ; # Ref to the p
2dc0: 72 69 6d 61 72 79 20 63 68 69 6c 64 20 72 65 76 rimary child rev
2dd0: 69 73 69 6f 6e 20 6f 62 6a 65 63 74 2c 20 69 2e ision object, i.
2de0: 65 2e 20 74 68 65 20 6e 65 78 74 0a 20 20 20 20 e. the next.
2df0: 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #
2e00: 20 20 20 20 20 3b 20 23 20 72 65 76 69 73 69 6f ; # revisio
2e10: 6e 20 69 6e 20 74 68 65 20 73 61 6d 65 20 6c 69 n in the same li
2e20: 6e 65 20 6f 66 20 64 65 76 65 6c 6f 70 6d 65 6e ne of developmen
2e30: 74 2e 0a 0a 20 20 20 20 23 20 42 72 61 6e 63 68 t... # Branch
2e40: 20 6c 69 6e 6b 61 67 65 20 5f 5f 5f 5f 5f 5f 5f linkage _______
2e50: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 _____________..
2e60: 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 62 72 variable mybr
2e70: 61 6e 63 68 65 73 20 20 20 20 20 7b 7d 20 3b 20 anches {} ;
2e80: 23 20 4c 69 73 74 20 6f 66 20 74 68 65 20 62 72 # List of the br
2e90: 61 6e 63 68 65 73 20 28 6f 62 6a 73 29 20 73 70 anches (objs) sp
2ea0: 61 77 6e 65 64 20 62 79 20 74 68 69 73 20 72 65 awned by this re
2eb0: 76 69 73 69 6f 6e 2e 0a 20 20 20 20 76 61 72 69 vision.. vari
2ec0: 61 62 6c 65 20 6d 79 70 61 72 65 6e 74 62 72 61 able myparentbra
2ed0: 6e 63 68 20 7b 7d 20 3b 20 23 20 46 6f 72 20 74 nch {} ; # For t
2ee0: 68 65 20 66 69 72 73 74 20 72 65 76 69 73 69 6f he first revisio
2ef0: 6e 20 6f 6e 20 61 20 62 72 61 6e 63 68 20 74 68 n on a branch th
2f00: 65 20 72 65 6c 65 76 61 6e 74 0a 20 20 20 20 23 e relevant. #
2f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2f20: 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 62 72 ; # br
2f30: 61 6e 63 68 20 6f 62 6a 65 63 74 2e 20 54 68 69 anch object. Thi
2f40: 73 20 61 6c 73 6f 20 61 6c 6c 6f 77 73 20 75 73 s also allows us
2f50: 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 to determine if
2f60: 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 . #
2f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2f80: 3b 20 23 20 6d 79 70 61 72 65 6e 74 20 69 73 20 ; # myparent is
2f90: 69 6e 20 74 68 65 20 73 61 6d 65 20 4c 4f 44 2c in the same LOD,
2fa0: 20 6f 72 20 74 68 65 20 72 65 76 69 73 69 6f 6e or the revision
2fb0: 20 74 68 65 0a 20 20 20 20 23 20 20 20 20 20 20 the. #
2fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2fd0: 20 20 20 20 3b 20 23 20 62 72 61 6e 63 68 20 73 ; # branch s
2fe0: 70 61 77 6e 65 64 20 66 72 6f 6d 2e 0a 0a 20 20 pawned from...
2ff0: 20 20 23 20 4c 69 73 74 20 6f 66 20 74 68 65 20 # List of the
3000: 72 65 76 69 73 69 6f 6e 20 6f 62 6a 65 63 74 73 revision objects
3010: 20 6f 66 20 74 68 65 20 66 69 72 73 74 20 63 6f of the first co
3020: 6d 6d 69 74 73 20 6f 6e 20 61 6e 79 0a 20 20 20 mmits on any.
3030: 20 23 20 62 72 61 6e 63 68 65 73 20 73 70 61 77 # branches spaw
3040: 6e 65 64 20 62 79 20 74 68 69 73 20 72 65 76 69 ned by this revi
3050: 73 69 6f 6e 20 6f 6e 20 77 68 69 63 68 20 63 6f sion on which co
3060: 6d 6d 69 74 73 20 6f 63 63 75 72 72 65 64 2e 0a mmits occurred..
3070: 20 20 20 20 23 20 54 68 69 73 20 64 65 70 65 6e # This depen
3080: 64 65 6e 63 79 20 69 73 20 6b 65 70 74 20 65 78 dency is kept ex
3090: 70 6c 69 63 69 74 6c 79 20 62 65 63 61 75 73 65 plicitly because
30a0: 20 6f 74 68 65 72 77 69 73 65 20 61 0a 20 20 20 otherwise a.
30b0: 20 23 20 72 65 76 69 73 69 6f 6e 2d 6f 6e 6c 79 # revision-only
30c0: 20 74 6f 70 6f 6c 6f 67 69 63 61 6c 20 73 6f 72 topological sor
30d0: 74 20 77 6f 75 6c 64 20 6d 69 73 73 20 74 68 65 t would miss the
30e0: 20 64 65 70 65 6e 64 65 6e 63 79 20 74 68 61 74 dependency that
30f0: 0a 20 20 20 20 23 20 65 78 69 73 74 73 20 76 69 . # exists vi
3100: 61 20 2d 3e 20 6d 79 62 72 61 6e 63 68 65 73 2e a -> mybranches.
3110: 0a 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d .. variable m
3120: 79 62 72 61 6e 63 68 63 68 69 6c 64 72 65 6e 20 ybranchchildren
3130: 7b 7d 20 3b 20 23 20 4c 69 73 74 20 6f 66 20 74 {} ; # List of t
3140: 68 65 20 72 65 76 69 73 69 6f 6e 73 20 28 6f 62 he revisions (ob
3150: 6a 73 29 20 77 68 69 63 68 20 61 72 65 20 74 68 js) which are th
3160: 65 20 66 69 72 73 74 0a 20 20 20 20 23 20 20 20 e first. #
3170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3180: 20 20 20 20 20 20 20 20 20 3b 20 23 20 63 6f 6d ; # com
3190: 6d 69 74 73 20 6f 6e 20 61 6e 79 20 6f 66 20 74 mits on any of t
31a0: 68 65 20 62 72 61 6e 63 68 65 73 20 73 70 61 77 he branches spaw
31b0: 6e 65 64 20 66 72 6f 6d 20 74 68 69 73 0a 20 20 ned from this.
31c0: 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 #
31d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b ;
31e0: 20 23 20 72 65 76 69 73 69 6f 6e 2e 20 54 68 65 # revision. The
31f0: 20 64 65 70 65 6e 64 65 6e 63 79 20 69 73 20 6b dependency is k
3200: 65 70 74 20 65 78 70 6c 69 63 69 74 6c 79 20 74 ept explicitly t
3210: 6f 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 o. #
3220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3230: 20 20 20 3b 20 23 20 65 6e 73 75 72 65 20 74 68 ; # ensure th
3240: 61 74 20 61 20 72 65 76 69 73 69 6f 6e 2d 6f 6e at a revision-on
3250: 6c 79 20 74 6f 70 6f 6c 6f 67 69 63 61 6c 20 73 ly topological s
3260: 6f 72 74 20 77 69 6c 6c 0a 20 20 20 20 23 20 20 ort will. #
3270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3280: 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 6e 6f ; # no
3290: 74 20 6d 69 73 73 20 69 74 2c 20 61 73 20 69 74 t miss it, as it
32a0: 20 6f 74 68 65 72 77 69 73 65 20 65 78 69 73 74 otherwise exist
32b0: 73 20 6f 6e 6c 79 20 76 69 61 0a 20 20 20 20 23 s only via. #
32c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
32d0: 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 ; #
32e0: 6d 79 62 72 61 6e 63 68 65 73 2e 0a 0a 20 20 20 mybranches...
32f0: 20 23 20 54 61 67 20 6c 69 6e 6b 61 67 65 20 5f # Tag linkage _
3300: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
3310: 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 76 61 72 _______.. var
3320: 69 61 62 6c 65 20 6d 79 74 61 67 73 20 7b 7d 20 iable mytags {}
3330: 3b 20 23 20 4c 69 73 74 20 6f 66 20 74 61 67 73 ; # List of tags
3340: 20 28 6f 62 6a 73 29 20 61 73 73 6f 63 69 61 74 (objs) associat
3350: 65 64 20 77 69 74 68 20 74 68 69 73 20 72 65 76 ed with this rev
3360: 69 73 69 6f 6e 2e 0a 0a 20 20 20 20 23 20 4d 6f ision... # Mo
3370: 72 65 20 64 65 72 69 76 65 64 20 64 61 74 61 0a re derived data.
3380: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 . variable my
3390: 6f 70 65 72 61 74 69 6f 6e 20 20 20 20 20 20 20 operation
33a0: 20 7b 7d 20 3b 20 23 20 4f 6e 65 20 6f 66 20 27 {} ; # One of '
33b0: 61 64 64 27 2c 20 27 63 68 61 6e 67 65 27 2c 20 add', 'change',
33c0: 27 64 65 6c 65 74 65 27 2c 20 6f 72 0a 09 09 09 'delete', or....
33d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 27 # '
33e0: 6e 6f 74 68 69 6e 67 27 2e 20 44 65 72 69 76 65 nothing'. Derive
33f0: 64 20 66 72 6f 6d 20 6f 75 72 20 61 6e 64 0a 09 d from our and..
3400: 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 23 .. #
3410: 20 69 74 73 20 70 61 72 65 6e 74 27 73 20 73 74 its parent's st
3420: 61 74 65 2e 0a 20 20 20 20 76 61 72 69 61 62 6c ate.. variabl
3430: 65 20 6d 79 69 73 6f 6e 64 65 66 61 75 6c 74 62 e myisondefaultb
3440: 72 61 6e 63 68 20 30 20 3b 20 23 20 42 6f 6f 6c ranch 0 ; # Bool
3450: 65 61 6e 20 66 6c 61 67 2c 20 73 65 74 20 69 66 ean flag, set if
3460: 20 74 68 65 0a 09 09 09 09 20 20 20 20 20 23 20 the..... #
3470: 72 65 76 69 73 69 6f 6e 20 69 73 20 6f 6e 20 74 revision is on t
3480: 68 65 20 6e 6f 6e 2d 74 72 75 6e 6b 0a 09 09 09 he non-trunk....
3490: 09 20 20 20 20 20 23 20 64 65 66 61 75 6c 74 20 . # default
34a0: 62 72 61 6e 63 68 2c 20 61 6b 61 20 76 65 6e 64 branch, aka vend
34b0: 6f 72 0a 09 09 09 09 20 20 20 20 20 23 20 62 72 or..... # br
34c0: 61 6e 63 68 2e 0a 20 20 20 20 76 61 72 69 61 62 anch.. variab
34d0: 6c 65 20 6d 79 64 62 70 61 72 65 6e 74 20 20 20 le mydbparent
34e0: 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 52 65 66 {} ; # Ref
34f0: 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 6c 61 erence to the la
3500: 73 74 20 72 65 76 69 73 69 6f 6e 0a 09 09 09 09 st revision.....
3510: 20 20 20 20 20 23 20 6f 6e 20 74 68 65 20 76 65 # on the ve
3520: 6e 64 6f 72 20 62 72 61 6e 63 68 20 69 66 20 74 ndor branch if t
3530: 68 69 73 20 69 73 0a 09 09 09 09 20 20 20 20 20 his is.....
3540: 23 20 74 68 65 20 70 72 69 6d 61 72 79 20 63 68 # the primary ch
3550: 69 6c 64 20 6f 66 20 74 68 65 0a 09 09 09 09 20 ild of the.....
3560: 20 20 20 20 23 20 72 65 67 75 6c 61 72 20 72 6f # regular ro
3570: 6f 74 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ot.. variable
3580: 20 6d 79 64 62 63 68 69 6c 64 20 20 20 20 20 20 mydbchild
3590: 20 20 20 20 7b 7d 20 3b 20 23 20 52 65 66 65 72 {} ; # Refer
35a0: 65 6e 63 65 20 74 6f 20 74 68 65 20 70 72 69 6d ence to the prim
35b0: 61 72 79 20 63 68 69 6c 64 0a 09 09 09 09 20 20 ary child.....
35c0: 20 20 20 23 20 6f 66 20 74 68 65 20 72 65 67 75 # of the regu
35d0: 6c 61 72 20 72 6f 6f 74 20 69 66 20 74 68 69 73 lar root if this
35e0: 20 69 73 0a 09 09 09 09 20 20 20 20 20 23 20 74 is..... # t
35f0: 68 65 20 6c 61 73 74 20 72 65 76 69 73 69 6f 6e he last revision
3600: 20 6f 6e 20 74 68 65 20 76 65 6e 64 6f 72 0a 09 on the vendor..
3610: 09 09 09 20 20 20 20 20 23 20 62 72 61 6e 63 68 ... # branch
3620: 2e 0a 0a 20 20 20 20 23 20 64 65 61 64 28 73 65 ... # dead(se
3630: 6c 66 29 20 78 20 64 65 61 64 28 70 61 72 65 6e lf) x dead(paren
3640: 74 29 20 2d 3e 20 6f 70 65 72 61 74 69 6f 6e 0a t) -> operation.
3650: 20 20 20 20 74 79 70 65 76 61 72 69 61 62 6c 65 typevariable
3660: 20 6d 79 6f 70 73 74 61 74 65 20 2d 61 72 72 61 myopstate -arra
3670: 79 20 7b 0a 09 7b 30 20 30 7d 20 63 68 61 6e 67 y {..{0 0} chang
3680: 65 0a 09 7b 30 20 31 7d 20 64 65 6c 65 74 65 0a e..{0 1} delete.
3690: 09 7b 31 20 30 7d 20 61 64 64 0a 09 7b 31 20 31 .{1 0} add..{1 1
36a0: 7d 20 6e 6f 74 68 69 6e 67 0a 20 20 20 20 7d 0a } nothing. }.
36b0: 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23 20 . # # ## ###
36c0: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 ##### ######## #
36d0: 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 ############.
36e0: 20 23 23 20 49 6e 74 65 72 6e 61 6c 20 6d 65 74 ## Internal met
36f0: 68 6f 64 73 0a 0a 20 20 20 20 23 20 23 20 23 23 hods.. # # ##
3700: 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 ### ##### #####
3710: 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 ### ############
3720: 23 0a 20 20 20 20 23 23 20 43 6f 6e 66 69 67 75 #. ## Configu
3730: 72 61 74 69 6f 6e 0a 0a 20 20 20 20 70 72 61 67 ration.. prag
3740: 6d 61 20 2d 68 61 73 74 79 70 65 69 6e 66 6f 20 ma -hastypeinfo
3750: 20 20 20 6e 6f 20 20 3b 20 23 20 6e 6f 20 74 79 no ; # no ty
3760: 70 65 20 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e pe introspection
3770: 0a 20 20 20 20 70 72 61 67 6d 61 20 2d 68 61 73 . pragma -has
3780: 69 6e 66 6f 20 20 20 20 20 20 20 20 6e 6f 20 20 info no
3790: 3b 20 23 20 6e 6f 20 6f 62 6a 65 63 74 20 69 6e ; # no object in
37a0: 74 72 6f 73 70 65 63 74 69 6f 6e 0a 20 20 20 20 trospection.
37b0: 70 72 61 67 6d 61 20 2d 73 69 6d 70 6c 65 64 69 pragma -simpledi
37c0: 73 70 61 74 63 68 20 79 65 73 20 3b 20 23 20 73 spatch yes ; # s
37d0: 69 6d 70 6c 65 20 66 61 73 74 20 64 69 73 70 61 imple fast dispa
37e0: 74 63 68 0a 0a 20 20 20 20 23 20 23 20 23 23 20 tch.. # # ##
37f0: 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 ### ##### ######
3800: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 ## #############
3810: 0a 7d 0a 0a 6e 61 6d 65 73 70 61 63 65 20 65 76 .}..namespace ev
3820: 61 6c 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a al ::vc::fossil:
3830: 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 66 69 :import::cvs::fi
3840: 6c 65 20 7b 0a 20 20 20 20 6e 61 6d 65 73 70 61 le {. namespa
3850: 63 65 20 65 78 70 6f 72 74 20 72 65 76 0a 20 20 ce export rev.
3860: 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c namespace eval
3870: 20 72 65 76 20 7b 0a 09 6e 61 6d 65 73 70 61 63 rev {..namespac
3880: 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 74 e import ::vc::t
3890: 6f 6f 6c 73 3a 3a 6d 69 73 63 3a 3a 2a 0a 20 20 ools::misc::*.
38a0: 20 20 7d 0a 7d 0a 0a 23 20 23 20 23 23 20 23 23 }.}..# # ## ##
38b0: 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 # ##### ########
38c0: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 20 23 ############# #
38d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
38e0: 23 23 23 23 0a 23 23 20 52 65 61 64 79 0a 0a 70 ####.## Ready..p
38f0: 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65 20 76 ackage provide v
3900: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor
3910: 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 3a 3a 72 65 t::cvs::file::re
3920: 76 20 31 2e 30 0a 72 65 74 75 72 6e 0a v 1.0.return.