Artifact 383bf3739a2794d4f51a2b0b1b85c2c8f68fa47c:
File
tools/cvs2fossil/lib/c2f_frev.tcl
part of check-in
[436f17a5f0]
- Simplified the code for excluding non-trunk revisions a bit, using higher-level methods for some changes. Added missing revision destruction.
by
aku on
2007-10-21 07:08:28.
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 66 6f 72 65 61 63 68 20 62 72 61 6e 63 68 20 .foreach branch
1990: 24 6d 79 62 72 61 6e 63 68 65 73 20 7b 0a 09 20 $mybranches {..
19a0: 20 20 20 24 62 72 61 6e 63 68 20 64 65 73 74 72 $branch destr
19b0: 6f 79 0a 09 7d 0a 09 73 65 74 20 6d 79 62 72 61 oy..}..set mybra
19c0: 6e 63 68 65 73 20 20 20 20 20 20 20 7b 7d 0a 09 nches {}..
19d0: 73 65 74 20 6d 79 62 72 61 6e 63 68 63 68 69 6c set mybranchchil
19e0: 64 72 65 6e 20 7b 7d 0a 09 72 65 74 75 72 6e 0a dren {}..return.
19f0: 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 54 61 67 }.. # Tag
1a00: 20 6c 69 6e 6b 61 67 65 20 5f 5f 5f 5f 5f 5f 5f linkage _______
1a10: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
1a20: 5f 5f 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 61 __.. method a
1a30: 64 64 74 61 67 20 7b 74 61 67 7d 20 7b 0a 09 6c ddtag {tag} {..l
1a40: 61 70 70 65 6e 64 20 6d 79 74 61 67 73 20 24 74 append mytags $t
1a50: 61 67 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d ag..return. }
1a60: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 74 61 67 .. method tag
1a70: 73 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d s {} { return $m
1a80: 79 74 61 67 73 20 7d 0a 0a 20 20 20 20 6d 65 74 ytags }.. met
1a90: 68 6f 64 20 72 65 6d 6f 76 65 61 6c 6c 74 61 67 hod removealltag
1aa0: 73 20 7b 7d 20 7b 0a 09 66 6f 72 65 61 63 68 20 s {} {..foreach
1ab0: 74 61 67 20 24 6d 79 74 61 67 73 20 7b 20 24 74 tag $mytags { $t
1ac0: 61 67 20 64 65 73 74 72 6f 79 20 7d 0a 09 73 65 ag destroy }..se
1ad0: 74 20 6d 79 74 61 67 73 20 7b 7d 0a 09 72 65 74 t mytags {}..ret
1ae0: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d urn. }.. m
1af0: 65 74 68 6f 64 20 6d 6f 76 65 74 61 67 73 74 6f ethod movetagsto
1b00: 20 7b 72 65 76 7d 20 7b 0a 09 73 65 74 20 72 65 {rev} {..set re
1b10: 76 6c 6f 64 20 5b 24 72 65 76 20 6c 6f 64 5d 0a vlod [$rev lod].
1b20: 09 66 6f 72 65 61 63 68 20 74 61 67 20 24 6d 79 .foreach tag $my
1b30: 74 61 67 73 20 7b 0a 09 20 20 20 20 24 72 65 76 tags {.. $rev
1b40: 20 61 64 64 74 61 67 20 24 74 61 67 0a 09 20 20 addtag $tag..
1b50: 20 20 24 74 61 67 20 73 65 74 74 61 67 72 65 76 $tag settagrev
1b60: 20 24 72 65 76 0a 09 20 20 20 20 24 74 61 67 20 $rev.. $tag
1b70: 73 65 74 6c 6f 64 20 24 72 65 76 6c 6f 64 0a 09 setlod $revlod..
1b80: 7d 0a 09 73 65 74 20 6d 79 74 61 67 73 20 7b 7d }..set mytags {}
1b90: 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a ..return. }..
1ba0: 20 20 20 20 23 20 67 65 6e 65 72 61 6c 20 73 79 # general sy
1bb0: 6d 62 6f 6c 20 6f 70 65 72 61 74 69 6f 6e 73 20 mbol operations
1bc0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 ___________..
1bd0: 20 6d 65 74 68 6f 64 20 6d 6f 76 65 73 79 6d 62 method movesymb
1be0: 6f 6c 73 74 6f 20 7b 72 65 76 7d 20 7b 0a 09 23 olsto {rev} {..#
1bf0: 20 4d 6f 76 65 20 74 68 65 20 74 61 67 73 20 61 Move the tags a
1c00: 6e 64 20 62 72 61 6e 63 68 65 73 20 61 74 74 61 nd branches atta
1c10: 63 68 65 64 20 74 6f 20 74 68 69 73 20 72 65 76 ched to this rev
1c20: 69 73 69 6f 6e 20 74 6f 20 74 68 65 0a 09 23 20 ision to the..#
1c30: 64 65 73 74 69 6e 61 74 69 6f 6e 20 61 6e 64 20 destination and
1c40: 66 69 78 20 61 6c 6c 20 70 6f 69 6e 74 65 72 73 fix all pointers
1c50: 2e 0a 0a 09 24 73 65 6c 66 20 6d 6f 76 65 74 61 ....$self moveta
1c60: 67 73 74 6f 20 20 20 20 20 24 72 65 76 0a 09 24 gsto $rev..$
1c70: 73 65 6c 66 20 6d 6f 76 65 62 72 61 6e 63 68 65 self movebranche
1c80: 73 74 6f 20 24 72 65 76 0a 09 72 65 74 75 72 6e sto $rev..return
1c90: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 44 65 . }.. # De
1ca0: 72 69 76 65 64 20 73 74 75 66 66 20 5f 5f 5f 5f rived stuff ____
1cb0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
1cc0: 5f 5f 5f 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 ___.. method
1cd0: 64 65 74 65 72 6d 69 6e 65 6f 70 65 72 61 74 69 determineoperati
1ce0: 6f 6e 20 7b 7d 20 7b 0a 09 23 20 4c 6f 6f 6b 20 on {} {..# Look
1cf0: 61 74 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 at the state of
1d00: 62 6f 74 68 20 74 68 69 73 20 72 65 76 69 73 69 both this revisi
1d10: 6f 6e 20 61 6e 64 20 69 74 73 20 70 61 72 65 6e on and its paren
1d20: 74 20 74 6f 0a 09 23 20 64 65 74 65 72 6d 69 6e t to..# determin
1d30: 65 20 74 68 65 20 74 79 70 65 20 6f 70 66 20 6f e the type opf o
1d40: 70 65 72 61 74 69 6f 6e 20 77 68 69 63 68 20 77 peration which w
1d50: 61 73 20 70 65 72 66 6f 72 6d 65 64 20 28 61 64 as performed (ad
1d60: 64 2c 0a 09 23 20 6d 6f 64 69 66 79 2c 20 64 65 d,..# modify, de
1d70: 6c 65 74 65 2c 20 6e 6f 6e 65 29 2e 0a 09 23 0a lete, none)...#.
1d80: 09 23 20 54 68 65 20 69 6d 70 6f 72 74 61 6e 74 .# The important
1d90: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 information is
1da0: 64 65 61 64 20 76 73 20 6e 6f 74 2d 64 65 61 64 dead vs not-dead
1db0: 20 66 6f 72 20 62 6f 74 68 2c 0a 09 23 20 67 69 for both,..# gi
1dc0: 76 69 6e 67 20 72 69 73 65 20 74 6f 20 66 6f 75 ving rise to fou
1dd0: 72 20 70 6f 73 73 69 62 6c 65 20 74 79 70 65 73 r possible types
1de0: 2e 0a 0a 09 73 65 74 20 73 64 65 61 64 20 5b 65 ....set sdead [e
1df0: 78 70 72 20 7b 24 6d 79 73 74 61 74 65 20 65 71 xpr {$mystate eq
1e00: 20 22 64 65 61 64 22 7d 5d 0a 09 73 65 74 20 70 "dead"}]..set p
1e10: 64 65 61 64 20 5b 65 78 70 72 20 7b 24 6d 79 70 dead [expr {$myp
1e20: 61 72 65 6e 74 20 65 71 20 22 22 20 7c 7c 20 5b arent eq "" || [
1e30: 24 6d 79 70 61 72 65 6e 74 20 73 74 61 74 65 5d $myparent state]
1e40: 20 65 71 20 22 64 65 61 64 22 7d 5d 0a 0a 09 73 eq "dead"}]...s
1e50: 65 74 20 6d 79 6f 70 65 72 61 74 69 6f 6e 20 24 et myoperation $
1e60: 6d 79 6f 70 73 74 61 74 65 28 5b 6c 69 73 74 20 myopstate([list
1e70: 24 70 64 65 61 64 20 24 73 64 65 61 64 5d 29 0a $pdead $sdead]).
1e80: 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 .return. }..
1e90: 20 20 20 6d 65 74 68 6f 64 20 6f 70 65 72 61 74 method operat
1ea0: 69 6f 6e 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 ion {} { return
1eb0: 24 6d 79 6f 70 65 72 61 74 69 6f 6e 20 7d 0a 20 $myoperation }.
1ec0: 20 20 20 6d 65 74 68 6f 64 20 72 65 74 79 70 65 method retype
1ed0: 20 7b 78 7d 20 7b 20 73 65 74 20 6d 79 6f 70 65 {x} { set myope
1ee0: 72 61 74 69 6f 6e 20 24 78 20 3b 20 72 65 74 75 ration $x ; retu
1ef0: 72 6e 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 rn }.. method
1f00: 20 69 73 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e isondefaultbran
1f10: 63 68 20 20 20 20 7b 7d 20 7b 20 72 65 74 75 72 ch {} { retur
1f20: 6e 20 24 6d 79 69 73 6f 6e 64 65 66 61 75 6c 74 n $myisondefault
1f30: 62 72 61 6e 63 68 20 7d 0a 0a 20 20 20 20 6d 65 branch }.. me
1f40: 74 68 6f 64 20 73 65 74 6f 6e 64 65 66 61 75 6c thod setondefaul
1f50: 74 62 72 61 6e 63 68 20 20 20 7b 78 7d 20 7b 20 tbranch {x} {
1f60: 73 65 74 20 6d 79 69 73 6f 6e 64 65 66 61 75 6c set myisondefaul
1f70: 74 62 72 61 6e 63 68 20 24 78 20 3b 20 72 65 74 tbranch $x ; ret
1f80: 75 72 6e 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f urn }.. metho
1f90: 64 20 73 65 74 64 65 66 61 75 6c 74 62 72 61 6e d setdefaultbran
1fa0: 63 68 63 68 69 6c 64 20 20 7b 72 65 76 7d 20 7b chchild {rev} {
1fb0: 20 73 65 74 20 6d 79 64 62 63 68 69 6c 64 20 24 set mydbchild $
1fc0: 72 65 76 20 3b 20 72 65 74 75 72 6e 20 7d 0a 20 rev ; return }.
1fd0: 20 20 20 6d 65 74 68 6f 64 20 73 65 74 64 65 66 method setdef
1fe0: 61 75 6c 74 62 72 61 6e 63 68 70 61 72 65 6e 74 aultbranchparent
1ff0: 20 7b 72 65 76 7d 20 7b 0a 09 73 65 74 20 6d 79 {rev} {..set my
2000: 64 62 70 61 72 65 6e 74 20 24 72 65 76 0a 0a 09 dbparent $rev...
2010: 23 20 52 65 74 79 70 65 20 74 68 65 20 72 65 76 # Retype the rev
2020: 69 73 69 6f 6e 20 28 6d 61 79 20 63 68 61 6e 67 ision (may chang
2030: 65 20 66 72 6f 6d 20 27 61 64 64 27 20 74 6f 20 e from 'add' to
2040: 27 63 68 61 6e 67 65 27 29 2e 0a 0a 09 73 65 74 'change')....set
2050: 20 73 64 65 61 64 20 5b 65 78 70 72 20 7b 24 6d sdead [expr {$m
2060: 79 6f 70 65 72 61 74 69 6f 6e 20 20 20 20 20 6e yoperation n
2070: 65 20 22 63 68 61 6e 67 65 22 7d 5d 0a 09 73 65 e "change"}]..se
2080: 74 20 70 64 65 61 64 20 5b 65 78 70 72 20 7b 5b t pdead [expr {[
2090: 24 72 65 76 20 6f 70 65 72 61 74 69 6f 6e 5d 20 $rev operation]
20a0: 6e 65 20 22 63 68 61 6e 67 65 22 7d 5d 0a 09 73 ne "change"}]..s
20b0: 65 74 20 6d 79 6f 70 65 72 61 74 69 6f 6e 20 24 et myoperation $
20c0: 6d 79 6f 70 73 74 61 74 65 28 5b 6c 69 73 74 20 myopstate([list
20d0: 24 70 64 65 61 64 20 24 73 64 65 61 64 5d 29 0a $pdead $sdead]).
20e0: 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 .return. }..
20f0: 20 20 20 6d 65 74 68 6f 64 20 63 75 74 64 65 66 method cutdef
2100: 61 75 6c 74 62 72 61 6e 63 68 70 61 72 65 6e 74 aultbranchparent
2110: 20 7b 7d 20 7b 20 73 65 74 20 6d 79 64 62 70 61 {} { set mydbpa
2120: 72 65 6e 74 20 22 22 20 3b 20 72 65 74 75 72 6e rent "" ; return
2130: 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 63 75 }. method cu
2140: 74 64 65 66 61 75 6c 74 62 72 61 6e 63 68 63 68 tdefaultbranchch
2150: 69 6c 64 20 20 7b 7d 20 7b 20 73 65 74 20 6d 79 ild {} { set my
2160: 64 62 63 68 69 6c 64 20 20 22 22 20 3b 20 72 65 dbchild "" ; re
2170: 74 75 72 6e 20 7d 0a 0a 20 20 20 20 6d 65 74 68 turn }.. meth
2180: 6f 64 20 64 65 66 61 75 6c 74 62 72 61 6e 63 68 od defaultbranch
2190: 63 68 69 6c 64 20 20 7b 7d 20 7b 20 72 65 74 75 child {} { retu
21a0: 72 6e 20 24 6d 79 64 62 63 68 69 6c 64 20 7d 0a rn $mydbchild }.
21b0: 20 20 20 20 6d 65 74 68 6f 64 20 64 65 66 61 75 method defau
21c0: 6c 74 62 72 61 6e 63 68 70 61 72 65 6e 74 20 7b ltbranchparent {
21d0: 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 64 62 } { return $mydb
21e0: 70 61 72 65 6e 74 20 7d 0a 0a 20 20 20 20 6d 65 parent }.. me
21f0: 74 68 6f 64 20 68 61 73 64 65 66 61 75 6c 74 62 thod hasdefaultb
2200: 72 61 6e 63 68 63 68 69 6c 64 20 20 7b 7d 20 7b ranchchild {} {
2210: 20 72 65 74 75 72 6e 20 5b 65 78 70 72 20 7b 24 return [expr {$
2220: 6d 79 64 62 63 68 69 6c 64 20 20 6e 65 20 22 22 mydbchild ne ""
2230: 7d 5d 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 }] }. method
2240: 68 61 73 64 65 66 61 75 6c 74 62 72 61 6e 63 68 hasdefaultbranch
2250: 70 61 72 65 6e 74 20 7b 7d 20 7b 20 72 65 74 75 parent {} { retu
2260: 72 6e 20 5b 65 78 70 72 20 7b 24 6d 79 64 62 70 rn [expr {$mydbp
2270: 61 72 65 6e 74 20 6e 65 20 22 22 7d 5d 20 7d 0a arent ne ""}] }.
2280: 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23 20 . # # ## ###
2290: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 ##### ######## #
22a0: 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 ############.
22b0: 20 23 23 20 54 79 70 65 20 41 50 49 0a 0a 20 20 ## Type API..
22c0: 20 20 74 79 70 65 6d 65 74 68 6f 64 20 69 73 74 typemethod ist
22d0: 72 75 6e 6b 72 65 76 6e 72 20 7b 72 65 76 6e 72 runkrevnr {revnr
22e0: 7d 20 7b 0a 09 72 65 74 75 72 6e 20 5b 65 78 70 } {..return [exp
22f0: 72 20 7b 5b 6c 6c 65 6e 67 74 68 20 5b 73 70 6c r {[llength [spl
2300: 69 74 20 24 72 65 76 6e 72 20 2e 5d 5d 20 3d 3d it $revnr .]] ==
2310: 20 32 7d 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2}]. }..
2320: 74 79 70 65 6d 65 74 68 6f 64 20 69 73 62 72 61 typemethod isbra
2330: 6e 63 68 72 65 76 6e 72 20 7b 72 65 76 6e 72 20 nchrevnr {revnr
2340: 5f 20 62 76 7d 20 7b 0a 09 69 66 20 7b 5b 72 65 _ bv} {..if {[re
2350: 67 65 78 70 20 24 6d 79 62 72 61 6e 63 68 70 61 gexp $mybranchpa
2360: 74 74 65 72 6e 20 24 72 65 76 6e 72 20 2d 3e 20 ttern $revnr ->
2370: 68 65 61 64 20 74 61 69 6c 5d 7d 20 7b 0a 09 20 head tail]} {..
2380: 20 20 20 75 70 76 61 72 20 31 20 24 62 76 20 62 upvar 1 $bv b
2390: 72 61 6e 63 68 6e 72 0a 09 20 20 20 20 73 65 74 ranchnr.. set
23a0: 20 62 72 61 6e 63 68 6e 72 20 24 7b 68 65 61 64 branchnr ${head
23b0: 7d 24 74 61 69 6c 0a 09 20 20 20 20 72 65 74 75 }$tail.. retu
23c0: 72 6e 20 31 0a 09 7d 0a 09 72 65 74 75 72 6e 20 rn 1..}..return
23d0: 30 0a 20 20 20 20 7d 0a 0a 20 20 20 20 74 79 70 0. }.. typ
23e0: 65 6d 65 74 68 6f 64 20 32 62 72 61 6e 63 68 6e emethod 2branchn
23f0: 72 20 7b 72 65 76 6e 72 7d 20 7b 0a 09 23 20 49 r {revnr} {..# I
2400: 6e 70 75 74 20 69 73 20 61 20 62 72 61 6e 63 68 nput is a branch
2410: 20 72 65 76 69 73 69 6f 6e 20 6e 75 6d 62 65 72 revision number
2420: 2c 20 69 2e 65 2e 20 61 20 72 65 76 69 73 69 6f , i.e. a revisio
2430: 6e 20 6e 75 6d 62 65 72 0a 09 23 20 77 69 74 68 n number..# with
2440: 20 61 6e 20 65 76 65 6e 20 6e 75 6d 62 65 72 20 an even number
2450: 6f 66 20 63 6f 6d 70 6f 6e 65 6e 74 73 3b 20 66 of components; f
2460: 6f 72 20 65 78 61 6d 70 6c 65 20 27 32 2e 39 2e or example '2.9.
2470: 32 2e 31 27 0a 09 23 20 28 6e 65 76 65 72 20 27 2.1'..# (never '
2480: 32 2e 39 2e 32 27 20 6e 6f 72 20 27 32 2e 39 2e 2.9.2' nor '2.9.
2490: 30 2e 32 27 29 2e 20 20 54 68 65 20 72 65 74 75 0.2'). The retu
24a0: 72 6e 20 76 61 6c 75 65 20 69 73 20 74 68 65 0a rn value is the.
24b0: 09 23 20 62 72 61 6e 63 68 20 6e 75 6d 62 65 72 .# branch number
24c0: 20 28 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20 27 (for example, '
24d0: 32 2e 39 2e 32 27 29 2e 20 20 46 6f 72 20 74 72 2.9.2'). For tr
24e0: 75 6e 6b 20 72 65 76 69 73 69 6f 6e 73 2c 0a 09 unk revisions,..
24f0: 23 20 6c 69 6b 65 20 27 33 2e 34 27 2c 20 77 65 # like '3.4', we
2500: 20 72 65 74 75 72 6e 20 74 68 65 20 65 6d 70 74 return the empt
2510: 79 20 73 74 72 69 6e 67 2e 0a 0a 09 69 66 20 7b y string....if {
2520: 5b 24 74 79 70 65 20 69 73 74 72 75 6e 6b 72 65 [$type istrunkre
2530: 76 6e 72 20 24 72 65 76 6e 72 5d 7d 20 7b 0a 09 vnr $revnr]} {..
2540: 20 20 20 20 72 65 74 75 72 6e 20 22 22 0a 09 7d return ""..}
2550: 0a 09 72 65 74 75 72 6e 20 5b 6a 6f 69 6e 20 5b ..return [join [
2560: 6c 72 61 6e 67 65 20 5b 73 70 6c 69 74 20 24 72 lrange [split $r
2570: 65 76 6e 72 20 2e 5d 20 30 20 65 6e 64 2d 31 5d evnr .] 0 end-1]
2580: 20 2e 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 74 .]. }.. t
2590: 79 70 65 6d 65 74 68 6f 64 20 32 62 72 61 6e 63 ypemethod 2branc
25a0: 68 70 61 72 65 6e 74 72 65 76 6e 72 20 7b 62 72 hparentrevnr {br
25b0: 61 6e 63 68 6e 72 7d 20 7b 0a 09 23 20 43 68 6f anchnr} {..# Cho
25c0: 70 20 74 68 65 20 6c 61 73 74 20 73 65 67 6d 65 p the last segme
25d0: 6e 74 20 6f 66 66 0a 09 72 65 74 75 72 6e 20 5b nt off..return [
25e0: 6a 6f 69 6e 20 5b 6c 72 61 6e 67 65 20 5b 73 70 join [lrange [sp
25f0: 6c 69 74 20 24 62 72 61 6e 63 68 6e 72 20 2e 5d lit $branchnr .]
2600: 20 30 20 65 6e 64 2d 31 5d 20 2e 5d 0a 20 20 20 0 end-1] .].
2610: 20 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 }.. # # ## #
2620: 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 ## ##### #######
2630: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 0a # #############.
2640: 20 20 20 20 23 23 20 53 74 61 74 65 0a 0a 20 20 ## State..
2650: 20 20 74 79 70 65 76 61 72 69 61 62 6c 65 20 6d typevariable m
2660: 79 62 72 61 6e 63 68 70 61 74 74 65 72 6e 20 7b ybranchpattern {
2670: 5e 28 28 3f 3a 5c 64 2b 5c 2e 5c 64 2b 5c 2e 29 ^((?:\d+\.\d+\.)
2680: 2b 29 28 3f 3a 30 5c 2e 29 3f 28 5c 64 2b 29 24 +)(?:0\.)?(\d+)$
2690: 7d 0a 20 20 20 20 23 20 46 69 72 73 74 20 61 20 }. # First a
26a0: 6e 6f 6e 7a 65 72 6f 20 65 76 65 6e 20 6e 75 6d nonzero even num
26b0: 62 65 72 20 6f 66 20 64 69 67 69 74 20 67 72 6f ber of digit gro
26c0: 75 70 73 20 77 69 74 68 20 74 72 61 69 6c 69 6e ups with trailin
26d0: 67 20 64 6f 74 0a 20 20 20 20 23 20 43 56 53 20 g dot. # CVS
26e0: 74 68 65 6e 20 73 74 69 63 6b 73 20 61 6e 20 65 then sticks an e
26f0: 78 74 72 61 20 30 20 69 6e 20 68 65 72 65 3b 20 xtra 0 in here;
2700: 52 43 53 20 64 6f 65 73 20 6e 6f 74 2e 0a 20 20 RCS does not..
2710: 20 20 23 20 41 6e 64 20 74 68 65 20 6c 61 73 74 # And the last
2720: 20 64 69 67 69 74 20 67 72 6f 75 70 2e 0a 0a 20 digit group...
2730: 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 72 65 variable myre
2740: 76 6e 72 20 20 20 20 20 7b 7d 20 3b 20 23 20 52 vnr {} ; # R
2750: 65 76 69 73 69 6f 6e 20 6e 75 6d 62 65 72 20 6f evision number o
2760: 66 20 74 68 65 20 72 65 76 69 73 69 6f 6e 2e 0a f the revision..
2770: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 64 variable myd
2780: 61 74 65 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 ate {} ; #
2790: 54 69 6d 65 73 74 61 6d 70 20 6f 66 20 74 68 65 Timestamp of the
27a0: 20 72 65 76 69 73 69 6f 6e 2c 20 73 65 63 6f 6e revision, secon
27b0: 64 73 20 73 69 6e 63 65 20 65 70 6f 63 68 0a 20 ds since epoch.
27c0: 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 6f 72 variable myor
27d0: 69 67 64 61 74 65 20 20 7b 7d 20 3b 20 23 20 4f igdate {} ; # O
27e0: 72 69 67 69 6e 61 6c 20 75 6e 6d 6f 64 69 66 69 riginal unmodifi
27f0: 65 64 20 74 69 6d 65 73 74 61 6d 70 2e 0a 20 20 ed timestamp..
2800: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 73 74 61 variable mysta
2810: 74 65 20 20 20 20 20 7b 7d 20 3b 20 23 20 53 74 te {} ; # St
2820: 61 74 65 20 6f 66 20 74 68 65 20 72 65 76 69 73 ate of the revis
2830: 69 6f 6e 2e 0a 20 20 20 20 76 61 72 69 61 62 6c ion.. variabl
2840: 65 20 6d 79 66 69 6c 65 20 20 20 20 20 20 7b 7d e myfile {}
2850: 20 3b 20 23 20 52 65 66 20 74 6f 20 74 68 65 20 ; # Ref to the
2860: 66 69 6c 65 20 6f 62 6a 65 63 74 20 74 68 65 20 file object the
2870: 72 65 76 69 73 69 6f 6e 20 62 65 6c 6f 6e 67 73 revision belongs
2880: 20 74 6f 2e 0a 20 20 20 20 76 61 72 69 61 62 6c to.. variabl
2890: 65 20 6d 79 74 65 78 74 20 20 20 20 20 20 7b 7d e mytext {}
28a0: 20 3b 20 23 20 52 61 6e 67 65 20 6f 66 20 74 68 ; # Range of th
28b0: 65 20 28 64 65 6c 74 61 29 20 74 65 78 74 20 66 e (delta) text f
28c0: 6f 72 20 74 68 69 73 20 72 65 76 69 73 69 6f 6e or this revision
28d0: 20 69 6e 20 74 68 65 20 66 69 6c 65 2e 0a 20 20 in the file..
28e0: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 6d 65 74 variable mymet
28f0: 61 69 64 20 20 20 20 7b 7d 20 3b 20 23 20 49 64 aid {} ; # Id
2900: 20 6f 66 20 74 68 65 20 6d 65 74 61 20 64 61 74 of the meta dat
2910: 61 20 67 72 6f 75 70 20 74 68 65 20 72 65 76 69 a group the revi
2920: 73 69 6f 6e 0a 09 09 09 20 20 20 20 20 20 23 20 sion.... #
2930: 62 65 6c 6f 6e 67 73 20 74 6f 2e 20 54 68 69 73 belongs to. This
2940: 20 69 73 20 6c 61 74 65 72 20 75 73 65 64 20 74 is later used t
2950: 6f 20 70 75 74 0a 09 09 09 20 20 20 20 20 20 23 o put.... #
2960: 20 74 68 65 20 66 69 6c 65 20 72 65 76 69 73 69 the file revisi
2970: 6f 6e 73 20 69 6e 74 6f 20 70 72 65 6c 69 6d 69 ons into prelimi
2980: 6e 61 72 79 0a 09 09 09 20 20 20 20 20 20 23 20 nary.... #
2990: 63 68 61 6e 67 65 73 65 74 73 20 28 61 6b 61 20 changesets (aka
29a0: 70 72 6f 6a 65 63 74 20 72 65 76 69 73 69 6f 6e project revision
29b0: 73 29 2e 0a 09 09 09 20 20 20 20 20 20 23 20 54 s)..... # T
29c0: 68 69 73 20 69 64 20 65 6e 63 6f 64 65 73 20 34 his id encodes 4
29d0: 20 70 69 65 63 65 73 20 6f 66 20 64 61 74 61 2c pieces of data,
29e0: 0a 09 09 09 20 20 20 20 20 20 23 20 6e 61 6d 65 .... # name
29f0: 6c 79 3a 20 74 68 65 20 70 72 6f 6a 65 63 74 20 ly: the project
2a00: 61 6e 64 20 62 72 61 6e 63 68 20 74 68 65 0a 09 and branch the..
2a10: 09 09 20 20 20 20 20 20 23 20 72 65 76 69 73 69 .. # revisi
2a20: 6f 6e 20 77 61 73 20 63 6f 6d 6d 69 74 74 65 64 on was committed
2a30: 20 74 6f 2c 20 74 68 65 20 61 75 74 68 6f 72 0a to, the author.
2a40: 09 09 09 20 20 20 20 20 20 23 20 77 68 6f 20 64 ... # who d
2a50: 69 64 20 74 68 65 20 63 6f 6d 6d 69 74 2c 20 61 id the commit, a
2a60: 6e 64 20 74 68 65 20 6d 65 73 73 61 67 65 0a 09 nd the message..
2a70: 09 09 20 20 20 20 20 20 23 20 75 73 65 64 2e 0a .. # used..
2a80: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 6c variable myl
2a90: 6f 64 20 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 od {} ; #
2aa0: 52 65 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65 Reference to the
2ab0: 20 6c 69 6e 65 2d 6f 66 2d 64 65 76 65 6c 6f 70 line-of-develop
2ac0: 6d 65 6e 74 0a 09 09 09 20 20 20 20 20 20 23 20 ment.... #
2ad0: 6f 62 6a 65 63 74 20 74 68 65 20 72 65 76 69 73 object the revis
2ae0: 69 6f 6e 20 62 65 6c 6f 6e 67 73 20 74 6f 2e 20 ion belongs to.
2af0: 41 6e 0a 09 09 09 20 20 20 20 20 20 23 20 61 6c An.... # al
2b00: 74 65 72 6e 61 74 69 76 65 20 69 64 69 6f 6d 20 ternative idiom
2b10: 77 6f 75 6c 64 20 62 65 20 74 6f 20 63 61 6c 6c would be to call
2b20: 20 69 74 0a 09 09 09 20 20 20 20 20 20 23 20 74 it.... # t
2b30: 68 65 20 62 72 61 6e 63 68 20 74 68 65 20 72 65 he branch the re
2b40: 76 69 73 69 6f 6e 20 69 73 20 6f 6e 2e 20 54 68 vision is on. Th
2b50: 69 73 0a 09 09 09 20 20 20 20 20 20 23 20 72 65 is.... # re
2b60: 66 65 72 65 6e 63 65 20 69 73 20 74 6f 20 61 20 ference is to a
2b70: 70 72 6f 6a 65 63 74 2d 6c 65 76 65 6c 20 6f 62 project-level ob
2b80: 6a 65 63 74 0a 09 09 09 20 20 20 20 20 20 23 20 ject.... #
2b90: 28 73 79 6d 62 6f 6c 20 6f 72 20 74 72 75 6e 6b (symbol or trunk
2ba0: 29 2e 0a 0a 20 20 20 20 23 20 42 61 73 69 63 20 )... # Basic
2bb0: 70 61 72 65 6e 74 2f 63 68 69 6c 64 20 6c 69 6e parent/child lin
2bc0: 6b 61 67 65 20 28 6c 69 6e 65 73 20 6f 66 20 64 kage (lines of d
2bd0: 65 76 65 6c 6f 70 6d 65 6e 74 29 0a 0a 20 20 20 evelopment)..
2be0: 20 76 61 72 69 61 62 6c 65 20 6d 79 70 61 72 65 variable mypare
2bf0: 6e 74 20 7b 7d 20 3b 20 23 20 52 65 66 20 74 6f nt {} ; # Ref to
2c00: 20 70 61 72 65 6e 74 20 72 65 76 69 73 69 6f 6e parent revision
2c10: 20 6f 62 6a 65 63 74 2e 20 4c 69 6e 6b 20 72 65 object. Link re
2c20: 71 75 69 72 65 64 20 62 65 63 61 75 73 65 20 6f quired because o
2c30: 66 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 f. #
2c40: 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 27 ; # '
2c50: 63 76 73 61 64 6d 69 6e 20 2d 6f 27 2c 20 77 68 cvsadmin -o', wh
2c60: 69 63 68 20 63 61 6e 20 63 72 65 61 74 65 20 61 ich can create a
2c70: 72 62 69 74 72 61 72 79 20 67 61 70 73 20 69 6e rbitrary gaps in
2c80: 20 74 68 65 0a 20 20 20 20 23 20 20 20 20 20 20 the. #
2c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 ;
2ca0: 23 20 6e 75 6d 62 65 72 69 6e 67 20 73 65 71 75 # numbering sequ
2cb0: 65 6e 63 65 2e 20 54 68 69 73 20 69 73 20 69 6e ence. This is in
2cc0: 20 74 68 65 20 73 61 6d 65 20 6c 69 6e 65 20 6f the same line o
2cd0: 66 20 64 65 76 65 6c 6f 70 6d 65 6e 74 0a 20 20 f development.
2ce0: 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 #
2cf0: 20 20 20 20 20 20 20 3b 20 23 20 4e 6f 74 65 3a ; # Note:
2d00: 20 46 6f 72 20 74 68 65 20 66 69 72 73 74 20 72 For the first r
2d10: 65 76 69 73 69 6f 6e 20 6f 6e 20 61 20 62 72 61 evision on a bra
2d20: 6e 63 68 20 74 68 65 20 72 65 76 69 73 69 6f 6e nch the revision
2d30: 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 . #
2d40: 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 69 74 ; # it
2d50: 20 77 61 73 20 73 70 61 77 6e 65 64 20 66 72 6f was spawned fro
2d60: 6d 20 69 73 20 74 68 65 20 70 61 72 65 6e 74 2e m is the parent.
2d70: 20 4f 6e 6c 79 20 74 68 65 20 72 6f 6f 74 20 72 Only the root r
2d80: 65 76 69 73 69 6f 6e 0a 20 20 20 20 23 20 20 20 evision. #
2d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2da0: 20 3b 20 23 20 6f 66 20 6d 79 66 69 6c 65 27 73 ; # of myfile's
2db0: 20 72 65 76 69 73 69 6f 6e 20 74 72 65 65 20 68 revision tree h
2dc0: 61 73 20 6e 6f 74 68 69 6e 67 20 73 65 74 20 68 as nothing set h
2dd0: 65 72 65 2e 0a 20 20 20 20 23 20 20 20 20 20 20 ere.. #
2de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 ;
2df0: 23 0a 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 #.. variable
2e00: 6d 79 63 68 69 6c 64 20 20 7b 7d 20 3b 20 23 20 mychild {} ; #
2e10: 52 65 66 20 74 6f 20 74 68 65 20 70 72 69 6d 61 Ref to the prima
2e20: 72 79 20 63 68 69 6c 64 20 72 65 76 69 73 69 6f ry child revisio
2e30: 6e 20 6f 62 6a 65 63 74 2c 20 69 2e 65 2e 20 74 n object, i.e. t
2e40: 68 65 20 6e 65 78 74 0a 20 20 20 20 23 20 20 20 he next. #
2e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2e60: 20 3b 20 23 20 72 65 76 69 73 69 6f 6e 20 69 6e ; # revision in
2e70: 20 74 68 65 20 73 61 6d 65 20 6c 69 6e 65 20 6f the same line o
2e80: 66 20 64 65 76 65 6c 6f 70 6d 65 6e 74 2e 0a 0a f development...
2e90: 20 20 20 20 23 20 42 72 61 6e 63 68 20 6c 69 6e # Branch lin
2ea0: 6b 61 67 65 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f kage ___________
2eb0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 76 _________.. v
2ec0: 61 72 69 61 62 6c 65 20 6d 79 62 72 61 6e 63 68 ariable mybranch
2ed0: 65 73 20 20 20 20 20 7b 7d 20 3b 20 23 20 4c 69 es {} ; # Li
2ee0: 73 74 20 6f 66 20 74 68 65 20 62 72 61 6e 63 68 st of the branch
2ef0: 65 73 20 28 6f 62 6a 73 29 20 73 70 61 77 6e 65 es (objs) spawne
2f00: 64 20 62 79 20 74 68 69 73 20 72 65 76 69 73 69 d by this revisi
2f10: 6f 6e 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 on.. variable
2f20: 20 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 68 20 myparentbranch
2f30: 7b 7d 20 3b 20 23 20 46 6f 72 20 74 68 65 20 66 {} ; # For the f
2f40: 69 72 73 74 20 72 65 76 69 73 69 6f 6e 20 6f 6e irst revision on
2f50: 20 61 20 62 72 61 6e 63 68 20 74 68 65 20 72 65 a branch the re
2f60: 6c 65 76 61 6e 74 0a 20 20 20 20 23 20 20 20 20 levant. #
2f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2f80: 20 20 20 20 20 20 3b 20 23 20 62 72 61 6e 63 68 ; # branch
2f90: 20 6f 62 6a 65 63 74 2e 20 54 68 69 73 20 61 6c object. This al
2fa0: 73 6f 20 61 6c 6c 6f 77 73 20 75 73 20 74 6f 20 so allows us to
2fb0: 64 65 74 65 72 6d 69 6e 65 20 69 66 0a 20 20 20 determine if.
2fc0: 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #
2fd0: 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 ; #
2fe0: 6d 79 70 61 72 65 6e 74 20 69 73 20 69 6e 20 74 myparent is in t
2ff0: 68 65 20 73 61 6d 65 20 4c 4f 44 2c 20 6f 72 20 he same LOD, or
3000: 74 68 65 20 72 65 76 69 73 69 6f 6e 20 74 68 65 the revision the
3010: 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 . #
3020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3030: 3b 20 23 20 62 72 61 6e 63 68 20 73 70 61 77 6e ; # branch spawn
3040: 65 64 20 66 72 6f 6d 2e 0a 0a 20 20 20 20 23 20 ed from... #
3050: 4c 69 73 74 20 6f 66 20 74 68 65 20 72 65 76 69 List of the revi
3060: 73 69 6f 6e 20 6f 62 6a 65 63 74 73 20 6f 66 20 sion objects of
3070: 74 68 65 20 66 69 72 73 74 20 63 6f 6d 6d 69 74 the first commit
3080: 73 20 6f 6e 20 61 6e 79 0a 20 20 20 20 23 20 62 s on any. # b
3090: 72 61 6e 63 68 65 73 20 73 70 61 77 6e 65 64 20 ranches spawned
30a0: 62 79 20 74 68 69 73 20 72 65 76 69 73 69 6f 6e by this revision
30b0: 20 6f 6e 20 77 68 69 63 68 20 63 6f 6d 6d 69 74 on which commit
30c0: 73 20 6f 63 63 75 72 72 65 64 2e 0a 20 20 20 20 s occurred..
30d0: 23 20 54 68 69 73 20 64 65 70 65 6e 64 65 6e 63 # This dependenc
30e0: 79 20 69 73 20 6b 65 70 74 20 65 78 70 6c 69 63 y is kept explic
30f0: 69 74 6c 79 20 62 65 63 61 75 73 65 20 6f 74 68 itly because oth
3100: 65 72 77 69 73 65 20 61 0a 20 20 20 20 23 20 72 erwise a. # r
3110: 65 76 69 73 69 6f 6e 2d 6f 6e 6c 79 20 74 6f 70 evision-only top
3120: 6f 6c 6f 67 69 63 61 6c 20 73 6f 72 74 20 77 6f ological sort wo
3130: 75 6c 64 20 6d 69 73 73 20 74 68 65 20 64 65 70 uld miss the dep
3140: 65 6e 64 65 6e 63 79 20 74 68 61 74 0a 20 20 20 endency that.
3150: 20 23 20 65 78 69 73 74 73 20 76 69 61 20 2d 3e # exists via ->
3160: 20 6d 79 62 72 61 6e 63 68 65 73 2e 0a 0a 20 20 mybranches...
3170: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 62 72 61 variable mybra
3180: 6e 63 68 63 68 69 6c 64 72 65 6e 20 7b 7d 20 3b nchchildren {} ;
3190: 20 23 20 4c 69 73 74 20 6f 66 20 74 68 65 20 72 # List of the r
31a0: 65 76 69 73 69 6f 6e 73 20 28 6f 62 6a 73 29 20 evisions (objs)
31b0: 77 68 69 63 68 20 61 72 65 20 74 68 65 20 66 69 which are the fi
31c0: 72 73 74 0a 20 20 20 20 23 20 20 20 20 20 20 20 rst. #
31d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
31e0: 20 20 20 20 20 3b 20 23 20 63 6f 6d 6d 69 74 73 ; # commits
31f0: 20 6f 6e 20 61 6e 79 20 6f 66 20 74 68 65 20 62 on any of the b
3200: 72 61 6e 63 68 65 73 20 73 70 61 77 6e 65 64 20 ranches spawned
3210: 66 72 6f 6d 20 74 68 69 73 0a 20 20 20 20 23 20 from this. #
3220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3230: 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 72 ; # r
3240: 65 76 69 73 69 6f 6e 2e 20 54 68 65 20 64 65 70 evision. The dep
3250: 65 6e 64 65 6e 63 79 20 69 73 20 6b 65 70 74 20 endency is kept
3260: 65 78 70 6c 69 63 69 74 6c 79 20 74 6f 0a 20 20 explicitly to.
3270: 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 #
3280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b ;
3290: 20 23 20 65 6e 73 75 72 65 20 74 68 61 74 20 61 # ensure that a
32a0: 20 72 65 76 69 73 69 6f 6e 2d 6f 6e 6c 79 20 74 revision-only t
32b0: 6f 70 6f 6c 6f 67 69 63 61 6c 20 73 6f 72 74 20 opological sort
32c0: 77 69 6c 6c 0a 20 20 20 20 23 20 20 20 20 20 20 will. #
32d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
32e0: 20 20 20 20 20 20 3b 20 23 20 6e 6f 74 20 6d 69 ; # not mi
32f0: 73 73 20 69 74 2c 20 61 73 20 69 74 20 6f 74 68 ss it, as it oth
3300: 65 72 77 69 73 65 20 65 78 69 73 74 73 20 6f 6e erwise exists on
3310: 6c 79 20 76 69 61 0a 20 20 20 20 23 20 20 20 20 ly via. #
3320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3330: 20 20 20 20 20 20 20 20 3b 20 23 20 6d 79 62 72 ; # mybr
3340: 61 6e 63 68 65 73 2e 0a 0a 20 20 20 20 23 20 54 anches... # T
3350: 61 67 20 6c 69 6e 6b 61 67 65 20 5f 5f 5f 5f 5f ag linkage _____
3360: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
3370: 5f 5f 5f 0a 0a 20 20 20 20 76 61 72 69 61 62 6c ___.. variabl
3380: 65 20 6d 79 74 61 67 73 20 7b 7d 20 3b 20 23 20 e mytags {} ; #
3390: 4c 69 73 74 20 6f 66 20 74 61 67 73 20 28 6f 62 List of tags (ob
33a0: 6a 73 29 20 61 73 73 6f 63 69 61 74 65 64 20 77 js) associated w
33b0: 69 74 68 20 74 68 69 73 20 72 65 76 69 73 69 6f ith this revisio
33c0: 6e 2e 0a 0a 20 20 20 20 23 20 4d 6f 72 65 20 64 n... # More d
33d0: 65 72 69 76 65 64 20 64 61 74 61 0a 0a 20 20 20 erived data..
33e0: 20 76 61 72 69 61 62 6c 65 20 6d 79 6f 70 65 72 variable myoper
33f0: 61 74 69 6f 6e 20 20 20 20 20 20 20 20 7b 7d 20 ation {}
3400: 3b 20 23 20 4f 6e 65 20 6f 66 20 27 61 64 64 27 ; # One of 'add'
3410: 2c 20 27 63 68 61 6e 67 65 27 2c 20 27 64 65 6c , 'change', 'del
3420: 65 74 65 27 2c 20 6f 72 0a 09 09 09 20 20 20 20 ete', or....
3430: 20 20 20 20 20 20 20 20 20 23 20 27 6e 6f 74 68 # 'noth
3440: 69 6e 67 27 2e 20 44 65 72 69 76 65 64 20 66 72 ing'. Derived fr
3450: 6f 6d 20 6f 75 72 20 61 6e 64 0a 09 09 09 20 20 om our and....
3460: 20 20 20 20 20 20 20 20 20 20 20 23 20 69 74 73 # its
3470: 20 70 61 72 65 6e 74 27 73 20 73 74 61 74 65 2e parent's state.
3480: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 . variable my
3490: 69 73 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e 63 isondefaultbranc
34a0: 68 20 30 20 3b 20 23 20 42 6f 6f 6c 65 61 6e 20 h 0 ; # Boolean
34b0: 66 6c 61 67 2c 20 73 65 74 20 69 66 20 74 68 65 flag, set if the
34c0: 0a 09 09 09 09 20 20 20 20 20 23 20 72 65 76 69 ..... # revi
34d0: 73 69 6f 6e 20 69 73 20 6f 6e 20 74 68 65 20 6e sion is on the n
34e0: 6f 6e 2d 74 72 75 6e 6b 0a 09 09 09 09 20 20 20 on-trunk.....
34f0: 20 20 23 20 64 65 66 61 75 6c 74 20 62 72 61 6e # default bran
3500: 63 68 2c 20 61 6b 61 20 76 65 6e 64 6f 72 0a 09 ch, aka vendor..
3510: 09 09 09 20 20 20 20 20 23 20 62 72 61 6e 63 68 ... # branch
3520: 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d .. variable m
3530: 79 64 62 70 61 72 65 6e 74 20 20 20 20 20 20 20 ydbparent
3540: 20 20 7b 7d 20 3b 20 23 20 52 65 66 65 72 65 6e {} ; # Referen
3550: 63 65 20 74 6f 20 74 68 65 20 6c 61 73 74 20 72 ce to the last r
3560: 65 76 69 73 69 6f 6e 0a 09 09 09 09 20 20 20 20 evision.....
3570: 20 23 20 6f 6e 20 74 68 65 20 76 65 6e 64 6f 72 # on the vendor
3580: 20 62 72 61 6e 63 68 20 69 66 20 74 68 69 73 20 branch if this
3590: 69 73 0a 09 09 09 09 20 20 20 20 20 23 20 74 68 is..... # th
35a0: 65 20 70 72 69 6d 61 72 79 20 63 68 69 6c 64 20 e primary child
35b0: 6f 66 20 74 68 65 0a 09 09 09 09 20 20 20 20 20 of the.....
35c0: 23 20 72 65 67 75 6c 61 72 20 72 6f 6f 74 2e 0a # regular root..
35d0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 64 variable myd
35e0: 62 63 68 69 6c 64 20 20 20 20 20 20 20 20 20 20 bchild
35f0: 7b 7d 20 3b 20 23 20 52 65 66 65 72 65 6e 63 65 {} ; # Reference
3600: 20 74 6f 20 74 68 65 20 70 72 69 6d 61 72 79 20 to the primary
3610: 63 68 69 6c 64 0a 09 09 09 09 20 20 20 20 20 23 child..... #
3620: 20 6f 66 20 74 68 65 20 72 65 67 75 6c 61 72 20 of the regular
3630: 72 6f 6f 74 20 69 66 20 74 68 69 73 20 69 73 0a root if this is.
3640: 09 09 09 09 20 20 20 20 20 23 20 74 68 65 20 6c .... # the l
3650: 61 73 74 20 72 65 76 69 73 69 6f 6e 20 6f 6e 20 ast revision on
3660: 74 68 65 20 76 65 6e 64 6f 72 0a 09 09 09 09 20 the vendor.....
3670: 20 20 20 20 23 20 62 72 61 6e 63 68 2e 0a 0a 20 # branch...
3680: 20 20 20 23 20 64 65 61 64 28 73 65 6c 66 29 20 # dead(self)
3690: 78 20 64 65 61 64 28 70 61 72 65 6e 74 29 20 2d x dead(parent) -
36a0: 3e 20 6f 70 65 72 61 74 69 6f 6e 0a 20 20 20 20 > operation.
36b0: 74 79 70 65 76 61 72 69 61 62 6c 65 20 6d 79 6f typevariable myo
36c0: 70 73 74 61 74 65 20 2d 61 72 72 61 79 20 7b 0a pstate -array {.
36d0: 09 7b 30 20 30 7d 20 63 68 61 6e 67 65 0a 09 7b .{0 0} change..{
36e0: 30 20 31 7d 20 64 65 6c 65 74 65 0a 09 7b 31 20 0 1} delete..{1
36f0: 30 7d 20 61 64 64 0a 09 7b 31 20 31 7d 20 6e 6f 0} add..{1 1} no
3700: 74 68 69 6e 67 0a 20 20 20 20 7d 0a 0a 20 20 20 thing. }..
3710: 20 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 # # ## ### ####
3720: 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 # ######## #####
3730: 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 ########. ##
3740: 49 6e 74 65 72 6e 61 6c 20 6d 65 74 68 6f 64 73 Internal methods
3750: 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23 .. # # ## ###
3760: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 ##### ########
3770: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 #############.
3780: 20 20 23 23 20 43 6f 6e 66 69 67 75 72 61 74 69 ## Configurati
3790: 6f 6e 0a 0a 20 20 20 20 70 72 61 67 6d 61 20 2d on.. pragma -
37a0: 68 61 73 74 79 70 65 69 6e 66 6f 20 20 20 20 6e hastypeinfo n
37b0: 6f 20 20 3b 20 23 20 6e 6f 20 74 79 70 65 20 69 o ; # no type i
37c0: 6e 74 72 6f 73 70 65 63 74 69 6f 6e 0a 20 20 20 ntrospection.
37d0: 20 70 72 61 67 6d 61 20 2d 68 61 73 69 6e 66 6f pragma -hasinfo
37e0: 20 20 20 20 20 20 20 20 6e 6f 20 20 3b 20 23 20 no ; #
37f0: 6e 6f 20 6f 62 6a 65 63 74 20 69 6e 74 72 6f 73 no object intros
3800: 70 65 63 74 69 6f 6e 0a 20 20 20 20 70 72 61 67 pection. prag
3810: 6d 61 20 2d 73 69 6d 70 6c 65 64 69 73 70 61 74 ma -simpledispat
3820: 63 68 20 79 65 73 20 3b 20 23 20 73 69 6d 70 6c ch yes ; # simpl
3830: 65 20 66 61 73 74 20 64 69 73 70 61 74 63 68 0a e fast dispatch.
3840: 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23 20 . # # ## ###
3850: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 ##### ######## #
3860: 23 23 23 23 23 23 23 23 23 23 23 23 0a 7d 0a 0a ############.}..
3870: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a namespace eval :
3880: 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 :vc::fossil::imp
3890: 6f 72 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 20 7b ort::cvs::file {
38a0: 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 . namespace e
38b0: 78 70 6f 72 74 20 72 65 76 0a 20 20 20 20 6e 61 xport rev. na
38c0: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 72 65 76 mespace eval rev
38d0: 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 6d {..namespace im
38e0: 70 6f 72 74 20 3a 3a 76 63 3a 3a 74 6f 6f 6c 73 port ::vc::tools
38f0: 3a 3a 6d 69 73 63 3a 3a 2a 0a 20 20 20 20 7d 0a ::misc::*. }.
3900: 7d 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 }..# # ## ### ##
3910: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 ### ######## ###
3920: 23 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23 ########## #####
3930: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3940: 0a 23 23 20 52 65 61 64 79 0a 0a 70 61 63 6b 61 .## Ready..packa
3950: 67 65 20 70 72 6f 76 69 64 65 20 76 63 3a 3a 66 ge provide vc::f
3960: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 ossil::import::c
3970: 76 73 3a 3a 66 69 6c 65 3a 3a 72 65 76 20 31 2e vs::file::rev 1.
3980: 30 0a 72 65 74 75 72 6e 0a 0.return.