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 70 61 63 6b 61 67 65 20 72 65 tting.package re
0340: 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 73 69 6c quire vc::fossil
0350: 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 73 ::import::cvs::s
0360: 74 61 74 65 20 20 20 20 20 20 3b 20 23 20 53 74 tate ; # St
0370: 61 74 65 20 73 74 6f 72 61 67 65 2e 0a 70 61 63 ate storage..pac
0380: 6b 61 67 65 20 72 65 71 75 69 72 65 20 76 63 3a kage require vc:
0390: 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a :fossil::import:
03a0: 3a 63 76 73 3a 3a 69 6e 74 65 67 72 69 74 79 20 :cvs::integrity
03b0: 20 3b 20 23 20 53 74 61 74 65 20 69 6e 74 65 67 ; # State integ
03c0: 72 69 74 79 20 63 68 65 63 6b 73 2e 0a 0a 23 20 rity checks...#
03d0: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 # ## ### ##### #
03e0: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
03f0: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 ##### ##########
0400: 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 0a 0a ###########.##..
0410: 73 6e 69 74 3a 3a 74 79 70 65 20 3a 3a 76 63 3a snit::type ::vc:
0420: 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a :fossil::import:
0430: 3a 63 76 73 3a 3a 66 69 6c 65 3a 3a 72 65 76 20 :cvs::file::rev
0440: 7b 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23 {. # # ## ###
0450: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 ##### ########
0460: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 #############.
0470: 20 20 23 23 20 50 75 62 6c 69 63 20 41 50 49 0a ## Public API.
0480: 0a 20 20 20 20 63 6f 6e 73 74 72 75 63 74 6f 72 . constructor
0490: 20 7b 72 65 76 6e 72 20 64 61 74 65 20 73 74 61 {revnr date sta
04a0: 74 65 20 74 68 65 66 69 6c 65 7d 20 7b 0a 09 73 te thefile} {..s
04b0: 65 74 20 6d 79 72 65 76 6e 72 20 20 20 20 24 72 et myrevnr $r
04c0: 65 76 6e 72 0a 09 73 65 74 20 6d 79 64 61 74 65 evnr..set mydate
04d0: 20 20 20 20 20 24 64 61 74 65 0a 09 73 65 74 20 $date..set
04e0: 6d 79 6f 72 69 67 64 61 74 65 20 24 64 61 74 65 myorigdate $date
04f0: 0a 09 73 65 74 20 6d 79 73 74 61 74 65 20 20 20 ..set mystate
0500: 20 24 73 74 61 74 65 0a 09 73 65 74 20 6d 79 66 $state..set myf
0510: 69 6c 65 20 20 20 20 20 24 74 68 65 66 69 6c 65 ile $thefile
0520: 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a ..return. }..
0530: 20 20 20 20 6d 65 74 68 6f 64 20 64 65 66 69 64 method defid
0540: 20 7b 7d 20 7b 0a 09 73 65 74 20 6d 79 69 64 20 {} {..set myid
0550: 5b 69 6e 63 72 20 6d 79 69 64 63 6f 75 6e 74 65 [incr myidcounte
0560: 72 5d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d r]..return. }
0570: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 69 64 20 .. method id
0580: 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 69 {} { return $myi
0590: 64 20 7d 0a 0a 20 20 20 20 23 20 42 61 73 69 63 d }.. # Basic
05a0: 20 70 69 65 63 65 73 20 5f 5f 5f 5f 5f 5f 5f 5f pieces ________
05b0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
05c0: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 68 61 73 .. method has
05d0: 6d 65 74 61 20 7b 7d 20 7b 20 72 65 74 75 72 6e meta {} { return
05e0: 20 5b 65 78 70 72 20 7b 24 6d 79 6d 65 74 61 69 [expr {$mymetai
05f0: 64 20 6e 65 20 22 22 7d 5d 20 7d 0a 20 20 20 20 d ne ""}] }.
0600: 6d 65 74 68 6f 64 20 68 61 73 74 65 78 74 20 7b method hastext {
0610: 7d 20 7b 0a 09 73 74 72 75 63 74 3a 3a 6c 69 73 } {..struct::lis
0620: 74 20 61 73 73 69 67 6e 20 24 6d 79 74 65 78 74 t assign $mytext
0630: 20 73 20 65 0a 09 72 65 74 75 72 6e 20 5b 65 78 s e..return [ex
0640: 70 72 20 7b 24 73 20 3c 3d 20 24 65 7d 5d 0a 20 pr {$s <= $e}].
0650: 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 }.. method
0660: 20 73 65 74 6d 65 74 61 20 7b 6d 65 74 61 7d 20 setmeta {meta}
0670: 7b 20 73 65 74 20 6d 79 6d 65 74 61 69 64 20 24 { set mymetaid $
0680: 6d 65 74 61 20 3b 20 72 65 74 75 72 6e 20 7d 0a meta ; return }.
0690: 20 20 20 20 6d 65 74 68 6f 64 20 73 65 74 74 65 method sette
06a0: 78 74 20 7b 74 65 78 74 7d 20 7b 20 73 65 74 20 xt {text} { set
06b0: 6d 79 74 65 78 74 20 20 20 24 74 65 78 74 20 3b mytext $text ;
06c0: 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 20 6d 65 return }. me
06d0: 74 68 6f 64 20 73 65 74 6c 6f 64 20 20 7b 6c 6f thod setlod {lo
06e0: 64 7d 20 20 7b 20 73 65 74 20 6d 79 6c 6f 64 20 d} { set mylod
06f0: 20 20 20 24 6c 6f 64 20 20 3b 20 72 65 74 75 72 $lod ; retur
0700: 6e 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 n }.. method
0710: 72 65 76 6e 72 20 7b 7d 20 7b 20 72 65 74 75 72 revnr {} { retur
0720: 6e 20 24 6d 79 72 65 76 6e 72 20 7d 0a 20 20 20 n $myrevnr }.
0730: 20 6d 65 74 68 6f 64 20 73 74 61 74 65 20 7b 7d method state {}
0740: 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 73 74 61 { return $mysta
0750: 74 65 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 te }. method
0760: 6c 6f 64 20 20 20 7b 7d 20 7b 20 72 65 74 75 72 lod {} { retur
0770: 6e 20 24 6d 79 6c 6f 64 20 20 20 7d 0a 20 20 20 n $mylod }.
0780: 20 6d 65 74 68 6f 64 20 64 61 74 65 20 20 7b 7d method date {}
0790: 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 64 61 74 { return $mydat
07a0: 65 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 e }.. method
07b0: 20 69 73 6e 65 65 64 65 64 20 7b 7d 20 7b 0a 09 isneeded {} {..
07c0: 69 66 20 7b 24 6d 79 6f 70 65 72 61 74 69 6f 6e if {$myoperation
07d0: 20 6e 65 20 22 6e 6f 74 68 69 6e 67 22 7d 20 20 ne "nothing"}
07e0: 20 20 20 20 20 20 20 7b 72 65 74 75 72 6e 20 31 {return 1
07f0: 7d 0a 09 69 66 20 7b 24 6d 79 72 65 76 6e 72 20 }..if {$myrevnr
0800: 6e 65 20 22 31 2e 31 22 7d 20 20 20 20 20 20 20 ne "1.1"}
0810: 20 20 20 20 20 20 20 20 20 20 7b 72 65 74 75 72 {retur
0820: 6e 20 31 7d 0a 09 69 66 20 7b 21 5b 24 6d 79 6c n 1}..if {![$myl
0830: 6f 64 20 69 73 74 72 75 6e 6b 5d 7d 20 20 20 20 od istrunk]}
0840: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 72 65 {re
0850: 74 75 72 6e 20 31 7d 0a 09 69 66 20 7b 21 5b 6c turn 1}..if {![l
0860: 6c 65 6e 67 74 68 20 24 6d 79 62 72 61 6e 63 68 length $mybranch
0870: 65 73 5d 7d 20 20 20 20 20 20 20 20 20 20 20 20 es]}
0880: 7b 72 65 74 75 72 6e 20 31 7d 0a 09 73 65 74 20 {return 1}..set
0890: 66 69 72 73 74 62 72 61 6e 63 68 20 5b 6c 69 6e firstbranch [lin
08a0: 64 65 78 20 24 6d 79 62 72 61 6e 63 68 65 73 20 dex $mybranches
08b0: 30 5d 0a 09 69 66 20 7b 21 5b 24 66 69 72 73 74 0]..if {![$first
08c0: 62 72 61 6e 63 68 20 68 61 73 63 68 69 6c 64 5d branch haschild]
08d0: 7d 20 20 20 20 20 20 20 20 20 20 7b 72 65 74 75 } {retu
08e0: 72 6e 20 31 7d 0a 09 69 66 20 7b 24 6d 79 69 73 rn 1}..if {$myis
08f0: 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e 63 68 7d ondefaultbranch}
0900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 72 {r
0910: 65 74 75 72 6e 20 31 7d 0a 0a 09 23 20 46 49 58 eturn 1}...# FIX
0920: 3a 20 54 68 69 73 20 6d 65 73 73 61 67 65 20 77 : This message w
0930: 69 6c 6c 20 6e 6f 74 20 6d 61 74 63 68 20 69 66 ill not match if
0940: 20 74 68 65 20 52 43 53 20 66 69 6c 65 20 77 61 the RCS file wa
0950: 73 20 72 65 6e 61 6d 65 64 0a 09 23 20 6d 61 6e s renamed..# man
0960: 75 61 6c 6c 79 20 61 66 74 65 72 20 69 74 20 77 ually after it w
0970: 61 73 20 63 72 65 61 74 65 64 2e 0a 0a 09 73 65 as created....se
0980: 74 20 67 65 6e 20 22 66 69 6c 65 20 5b 66 69 6c t gen "file [fil
0990: 65 20 74 61 69 6c 20 5b 24 6d 79 66 69 6c 65 20 e tail [$myfile
09a0: 75 73 72 70 61 74 68 5d 5d 20 77 61 73 20 69 6e usrpath]] was in
09b0: 69 74 69 61 6c 6c 79 20 61 64 64 65 64 20 6f 6e itially added on
09c0: 20 62 72 61 6e 63 68 20 5b 24 66 69 72 73 74 62 branch [$firstb
09d0: 72 61 6e 63 68 20 6e 61 6d 65 5d 2e 22 0a 09 73 ranch name]."..s
09e0: 65 74 20 6c 6f 67 20 5b 24 6d 79 66 69 6c 65 20 et log [$myfile
09f0: 63 6f 6d 6d 69 74 6d 65 73 73 61 67 65 6f 66 20 commitmessageof
0a00: 24 6d 79 6d 65 74 61 69 64 5d 0a 0a 09 72 65 74 $mymetaid]...ret
0a10: 75 72 6e 20 5b 65 78 70 72 20 7b 24 6c 6f 67 20 urn [expr {$log
0a20: 6e 65 20 24 67 65 6e 7d 5d 0a 20 20 20 20 7d 0a ne $gen}]. }.
0a30: 0a 20 20 20 20 6d 65 74 68 6f 64 20 69 73 6e 65 . method isne
0a40: 65 64 65 64 62 72 61 6e 63 68 64 65 6c 20 7b 7d ededbranchdel {}
0a50: 20 7b 0a 09 69 66 20 7b 24 6d 79 70 61 72 65 6e {..if {$myparen
0a60: 74 62 72 61 6e 63 68 20 65 71 20 22 22 7d 20 20 tbranch eq ""}
0a70: 20 20 20 20 20 20 20 20 20 7b 72 65 74 75 72 6e {return
0a80: 20 31 7d 20 3b 20 23 20 6e 6f 74 20 66 69 72 73 1} ; # not firs
0a90: 74 20 6f 6e 20 61 20 62 72 61 6e 63 68 2c 20 6e t on a branch, n
0aa0: 65 65 64 65 64 0a 09 73 65 74 20 62 61 73 65 20 eeded..set base
0ab0: 5b 24 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 68 [$myparentbranch
0ac0: 20 70 61 72 65 6e 74 5d 0a 09 69 66 20 7b 24 62 parent]..if {$b
0ad0: 61 73 65 20 20 20 20 20 20 20 20 20 20 20 65 71 ase eq
0ae0: 20 22 22 7d 20 20 20 20 20 20 20 20 20 20 20 7b ""} {
0af0: 72 65 74 75 72 6e 20 31 7d 20 3b 20 23 20 62 72 return 1} ; # br
0b00: 61 6e 63 68 20 68 61 73 20 70 61 72 65 6e 74 20 anch has parent
0b10: 6c 6f 64 2c 20 6e 65 65 64 65 64 0a 09 69 66 20 lod, needed..if
0b20: 7b 5b 24 73 65 6c 66 20 4c 4f 44 4c 65 6e 67 74 {[$self LODLengt
0b30: 68 5d 20 3c 20 32 7d 20 20 20 20 20 20 20 20 20 h] < 2}
0b40: 20 20 7b 72 65 74 75 72 6e 20 31 7d 20 3b 20 23 {return 1} ; #
0b50: 20 6f 75 72 20 6c 6f 64 20 63 6f 6e 74 61 69 6e our lod contain
0b60: 73 20 6f 6e 6c 79 20 6f 75 72 73 65 6c 76 65 73 s only ourselves
0b70: 2c 20 6e 65 65 64 65 64 2e 0a 09 69 66 20 7b 24 , needed...if {$
0b80: 6d 79 6f 70 65 72 61 74 69 6f 6e 20 6e 65 20 22 myoperation ne "
0b90: 64 65 6c 65 74 65 22 7d 20 20 20 20 20 20 20 20 delete"}
0ba0: 7b 72 65 74 75 72 6e 20 31 7d 20 3b 20 23 20 4e {return 1} ; # N
0bb0: 6f 74 20 61 20 64 65 6c 65 74 69 6f 6e 2c 20 6e ot a deletion, n
0bc0: 65 65 64 65 64 0a 09 69 66 20 7b 5b 6c 6c 65 6e eeded..if {[llen
0bd0: 67 74 68 20 24 6d 79 74 61 67 73 5d 7d 20 20 20 gth $mytags]}
0be0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 72 65 74 {ret
0bf0: 75 72 6e 20 31 7d 20 3b 20 23 20 48 61 76 65 20 urn 1} ; # Have
0c00: 74 61 67 73 2c 20 6e 65 65 64 65 64 0a 09 69 66 tags, needed..if
0c10: 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 6d 79 62 72 {[llength $mybr
0c20: 61 6e 63 68 65 73 5d 7d 20 20 20 20 20 20 20 20 anches]}
0c30: 20 20 20 7b 72 65 74 75 72 6e 20 31 7d 20 3b 20 {return 1} ;
0c40: 23 20 48 61 76 65 20 6f 74 68 65 72 20 62 72 61 # Have other bra
0c50: 6e 63 68 65 73 2c 20 6e 65 65 64 65 64 0a 09 69 nches, needed..i
0c60: 66 20 7b 61 62 73 28 24 6d 79 64 61 74 65 20 2d f {abs($mydate -
0c70: 20 5b 24 62 61 73 65 20 64 61 74 65 5d 29 20 3e [$base date]) >
0c80: 20 32 7d 20 7b 72 65 74 75 72 6e 20 31 7d 20 3b 2} {return 1} ;
0c90: 20 23 20 4e 65 78 74 20 72 65 76 20 3e 20 32 20 # Next rev > 2
0ca0: 73 65 63 6f 6e 64 73 20 61 70 61 72 74 2c 20 6e seconds apart, n
0cb0: 65 65 64 65 64 0a 0a 20 20 20 20 20 20 20 20 23 eeded.. #
0cc0: 20 46 49 58 4d 45 3a 20 54 68 69 73 20 6d 65 73 FIXME: This mes
0cd0: 73 61 67 65 20 77 69 6c 6c 20 6e 6f 74 20 6d 61 sage will not ma
0ce0: 74 63 68 20 69 66 20 74 68 65 20 52 43 53 20 66 tch if the RCS f
0cf0: 69 6c 65 20 77 61 73 0a 20 20 20 20 20 20 20 20 ile was.
0d00: 23 20 72 65 6e 61 6d 65 64 20 6d 61 6e 75 61 6c # renamed manual
0d10: 6c 79 20 61 66 74 65 72 20 69 74 20 77 61 73 20 ly after it was
0d20: 63 72 65 61 74 65 64 2e 0a 0a 09 73 65 74 20 71 created....set q
0d30: 66 69 6c 65 20 5b 73 74 72 69 6e 67 20 6d 61 70 file [string map
0d40: 20 7b 0a 09 20 20 20 20 2e 20 20 5c 5c 2e 20 20 {.. . \\.
0d50: 3f 20 20 5c 5c 3f 20 20 2a 20 20 5c 5c 2a 20 20 ? \\? * \\*
0d60: 5c 5c 20 5c 5c 5c 5c 20 2b 20 20 5c 5c 2b 20 20 \\ \\\\ + \\+
0d70: 5e 20 5c 5c 5e 20 24 20 5c 5c 24 0a 09 20 20 20 ^ \\^ $ \\$..
0d80: 20 5c 5b 20 5c 5c 5c 5b 20 5c 5d 20 5c 5c 5c 5d \[ \\\[ \] \\\]
0d90: 20 28 20 20 5c 5c 28 20 20 20 29 20 5c 5c 29 20 ( \\( ) \\)
0da0: 20 5c 7b 20 5c 5c 5c 7b 20 5c 7d 20 5c 5c 5c 7d \{ \\\{ \} \\\}
0db0: 0a 09 7d 20 5b 66 69 6c 65 20 74 61 69 6c 20 5b ..} [file tail [
0dc0: 24 6d 79 66 69 6c 65 20 75 73 72 70 61 74 68 5d $myfile usrpath]
0dd0: 5d 5d 0a 09 73 65 74 20 70 61 74 74 65 72 6e 20 ]]..set pattern
0de0: 22 66 69 6c 65 20 24 71 66 69 6c 65 20 77 61 73 "file $qfile was
0df0: 20 61 64 64 65 64 20 6f 6e 20 62 72 61 6e 63 68 added on branch
0e00: 20 2e 2a 20 6f 6e 20 5c 5c 64 7b 34 7d 2d 5c 5c .* on \\d{4}-\\
0e10: 64 7b 32 7d 2d 5c 5c 64 7b 32 7d 20 5c 5c 64 7b d{2}-\\d{2} \\d{
0e20: 32 7d 3a 5c 5c 64 7b 32 7d 3a 5c 5c 64 7b 32 7d 2}:\\d{2}:\\d{2}
0e30: 28 20 5c 5b 2b 2d 5c 5d 5c 5c 64 7b 34 7d 29 3f ( \[+-\]\\d{4})?
0e40: 22 0a 09 73 65 74 20 6c 6f 67 20 20 20 20 20 5b "..set log [
0e50: 24 6d 79 66 69 6c 65 20 63 6f 6d 6d 69 74 6d 65 $myfile commitme
0e60: 73 73 61 67 65 6f 66 20 24 6d 79 6d 65 74 61 69 ssageof $mymetai
0e70: 64 5d 0a 0a 09 23 20 4e 6f 74 20 74 68 65 20 73 d]...# Not the s
0e80: 70 65 63 69 61 6c 20 6d 65 73 73 61 67 65 2c 20 pecial message,
0e90: 6e 65 65 64 65 64 0a 09 69 66 20 7b 21 5b 72 65 needed..if {![re
0ea0: 67 65 78 70 20 2d 2d 20 24 70 61 74 74 65 72 6e gexp -- $pattern
0eb0: 20 24 6c 6f 67 5d 7d 20 7b 72 65 74 75 72 6e 20 $log]} {return
0ec0: 31 7d 0a 0a 09 23 20 54 68 69 73 20 69 73 20 61 1}...# This is a
0ed0: 6e 20 75 6e 6e 65 65 64 65 64 20 69 6e 69 74 69 n unneeded initi
0ee0: 61 6c 20 62 72 61 6e 63 68 20 64 65 6c 65 74 65 al branch delete
0ef0: 2e 0a 09 72 65 74 75 72 6e 20 30 0a 20 20 20 20 ...return 0.
0f00: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 4c 4f }.. method LO
0f10: 44 4c 65 6e 67 74 68 20 7b 7d 20 7b 0a 09 73 65 DLength {} {..se
0f20: 74 20 6e 20 31 20 3b 20 23 20 63 6f 75 6e 74 20 t n 1 ; # count
0f30: 73 65 6c 66 0a 09 73 65 74 20 72 65 76 20 24 6d self..set rev $m
0f40: 79 63 68 69 6c 64 0a 09 77 68 69 6c 65 20 7b 24 ychild..while {$
0f50: 72 65 76 20 6e 65 20 22 22 7d 20 7b 0a 09 20 20 rev ne ""} {..
0f60: 20 20 69 6e 63 72 20 6e 0a 09 20 20 20 20 73 65 incr n.. se
0f70: 74 20 72 65 76 20 5b 24 72 65 76 20 63 68 69 6c t rev [$rev chil
0f80: 64 5d 0a 09 7d 0a 09 72 65 74 75 72 6e 20 24 6e d]..}..return $n
0f90: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 42 61 . }.. # Ba
0fa0: 73 69 63 20 70 61 72 65 6e 74 2f 63 68 69 6c 64 sic parent/child
0fb0: 20 6c 69 6e 6b 61 67 65 20 5f 5f 5f 5f 5f 5f 5f linkage _______
0fc0: 5f 5f 5f 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 ___.. method
0fd0: 68 61 73 70 61 72 65 6e 74 20 7b 7d 20 7b 20 72 hasparent {} { r
0fe0: 65 74 75 72 6e 20 5b 65 78 70 72 20 7b 24 6d 79 eturn [expr {$my
0ff0: 70 61 72 65 6e 74 20 6e 65 20 22 22 7d 5d 20 7d parent ne ""}] }
1000: 0a 20 20 20 20 6d 65 74 68 6f 64 20 68 61 73 63 . method hasc
1010: 68 69 6c 64 20 20 7b 7d 20 7b 20 72 65 74 75 72 hild {} { retur
1020: 6e 20 5b 65 78 70 72 20 7b 24 6d 79 63 68 69 6c n [expr {$mychil
1030: 64 20 20 6e 65 20 22 22 7d 5d 20 7d 0a 0a 20 20 d ne ""}] }..
1040: 20 20 6d 65 74 68 6f 64 20 73 65 74 70 61 72 65 method setpare
1050: 6e 74 20 7b 70 61 72 65 6e 74 7d 20 7b 0a 09 69 nt {parent} {..i
1060: 6e 74 65 67 72 69 74 79 20 61 73 73 65 72 74 20 ntegrity assert
1070: 7b 24 6d 79 70 61 72 65 6e 74 20 65 71 20 22 22 {$myparent eq ""
1080: 7d 20 7b 50 61 72 65 6e 74 20 61 6c 72 65 61 64 } {Parent alread
1090: 79 20 64 65 66 69 6e 65 64 7d 0a 09 73 65 74 20 y defined}..set
10a0: 6d 79 70 61 72 65 6e 74 20 24 70 61 72 65 6e 74 myparent $parent
10b0: 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a ..return. }..
10c0: 20 20 20 20 6d 65 74 68 6f 64 20 63 75 74 66 72 method cutfr
10d0: 6f 6d 70 61 72 65 6e 74 20 7b 7d 20 7b 20 73 65 omparent {} { se
10e0: 74 20 6d 79 70 61 72 65 6e 74 20 22 22 20 3b 20 t myparent "" ;
10f0: 72 65 74 75 72 6e 20 7d 0a 20 20 20 20 6d 65 74 return }. met
1100: 68 6f 64 20 63 75 74 66 72 6f 6d 63 68 69 6c 64 hod cutfromchild
1110: 20 20 7b 7d 20 7b 20 73 65 74 20 6d 79 63 68 69 {} { set mychi
1120: 6c 64 20 20 22 22 20 3b 20 72 65 74 75 72 6e 20 ld "" ; return
1130: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 65 }.. method se
1140: 74 63 68 69 6c 64 20 7b 63 68 69 6c 64 7d 20 7b tchild {child} {
1150: 0a 09 69 6e 74 65 67 72 69 74 79 20 61 73 73 65 ..integrity asse
1160: 72 74 20 7b 24 6d 79 63 68 69 6c 64 20 65 71 20 rt {$mychild eq
1170: 22 22 7d 20 7b 43 68 69 6c 64 20 61 6c 72 65 61 ""} {Child alrea
1180: 64 79 20 64 65 66 69 6e 65 64 7d 0a 09 73 65 74 dy defined}..set
1190: 20 6d 79 63 68 69 6c 64 20 24 63 68 69 6c 64 0a mychild $child.
11a0: 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 .return. }..
11b0: 20 20 20 6d 65 74 68 6f 64 20 63 68 61 6e 67 65 method change
11c0: 70 61 72 65 6e 74 20 7b 70 61 72 65 6e 74 7d 20 parent {parent}
11d0: 7b 20 73 65 74 20 6d 79 70 61 72 65 6e 74 20 24 { set myparent $
11e0: 70 61 72 65 6e 74 20 3b 20 72 65 74 75 72 6e 20 parent ; return
11f0: 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 63 68 61 }. method cha
1200: 6e 67 65 63 68 69 6c 64 20 20 7b 63 68 69 6c 64 ngechild {child
1210: 7d 20 20 7b 20 73 65 74 20 6d 79 63 68 69 6c 64 } { set mychild
1220: 20 20 24 63 68 69 6c 64 20 20 3b 20 72 65 74 75 $child ; retu
1230: 72 6e 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 rn }.. method
1240: 20 70 61 72 65 6e 74 20 7b 7d 20 7b 20 72 65 74 parent {} { ret
1250: 75 72 6e 20 24 6d 79 70 61 72 65 6e 74 20 7d 0a urn $myparent }.
1260: 20 20 20 20 6d 65 74 68 6f 64 20 63 68 69 6c 64 method child
1270: 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d {} { return $m
1280: 79 63 68 69 6c 64 20 20 7d 0a 0a 20 20 20 20 23 ychild }.. #
1290: 20 42 72 61 6e 63 68 20 6c 69 6e 6b 61 67 65 20 Branch linkage
12a0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
12b0: 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 6d 65 74 68 ______.. meth
12c0: 6f 64 20 73 65 74 70 61 72 65 6e 74 62 72 61 6e od setparentbran
12d0: 63 68 20 7b 62 72 61 6e 63 68 7d 20 7b 0a 09 69 ch {branch} {..i
12e0: 6e 74 65 67 72 69 74 79 20 61 73 73 65 72 74 20 ntegrity assert
12f0: 7b 24 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 68 {$myparentbranch
1300: 20 65 71 20 22 22 7d 20 7b 42 72 61 6e 63 68 20 eq ""} {Branch
1310: 70 61 72 65 6e 74 20 61 6c 72 65 61 64 79 20 64 parent already d
1320: 65 66 69 6e 65 64 7d 0a 09 73 65 74 20 6d 79 70 efined}..set myp
1330: 61 72 65 6e 74 62 72 61 6e 63 68 20 24 62 72 61 arentbranch $bra
1340: 6e 63 68 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 nch..return.
1350: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 68 61 }.. method ha
1360: 73 70 61 72 65 6e 74 62 72 61 6e 63 68 20 7b 7d sparentbranch {}
1370: 20 7b 20 72 65 74 75 72 6e 20 5b 65 78 70 72 20 { return [expr
1380: 7b 24 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 68 {$myparentbranch
1390: 20 6e 65 20 22 22 7d 5d 20 7d 0a 20 20 20 20 6d ne ""}] }. m
13a0: 65 74 68 6f 64 20 68 61 73 62 72 61 6e 63 68 65 ethod hasbranche
13b0: 73 20 20 20 20 20 7b 7d 20 7b 20 72 65 74 75 72 s {} { retur
13c0: 6e 20 5b 6c 6c 65 6e 67 74 68 20 24 6d 79 62 72 n [llength $mybr
13d0: 61 6e 63 68 65 73 5d 20 7d 0a 0a 20 20 20 20 6d anches] }.. m
13e0: 65 74 68 6f 64 20 70 61 72 65 6e 74 62 72 61 6e ethod parentbran
13f0: 63 68 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 ch {} { return $
1400: 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 68 20 7d myparentbranch }
1410: 0a 20 20 20 20 6d 65 74 68 6f 64 20 62 72 61 6e . method bran
1420: 63 68 65 73 20 20 20 20 20 7b 7d 20 7b 20 72 65 ches {} { re
1430: 74 75 72 6e 20 24 6d 79 62 72 61 6e 63 68 65 73 turn $mybranches
1440: 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 61 }.. method a
1450: 64 64 62 72 61 6e 63 68 20 7b 62 72 61 6e 63 68 ddbranch {branch
1460: 7d 20 7b 0a 09 6c 61 70 70 65 6e 64 20 6d 79 62 } {..lappend myb
1470: 72 61 6e 63 68 65 73 20 24 62 72 61 6e 63 68 0a ranches $branch.
1480: 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 .return. }..
1490: 20 20 20 6d 65 74 68 6f 64 20 61 64 64 63 68 69 method addchi
14a0: 6c 64 6f 6e 62 72 61 6e 63 68 20 7b 63 68 69 6c ldonbranch {chil
14b0: 64 7d 20 7b 0a 09 6c 61 70 70 65 6e 64 20 6d 79 d} {..lappend my
14c0: 62 72 61 6e 63 68 63 68 69 6c 64 72 65 6e 20 24 branchchildren $
14d0: 63 68 69 6c 64 0a 09 72 65 74 75 72 6e 0a 20 20 child..return.
14e0: 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 }.. method
14f0: 63 75 74 66 72 6f 6d 70 61 72 65 6e 74 62 72 61 cutfromparentbra
1500: 6e 63 68 20 7b 7d 20 7b 20 73 65 74 20 6d 79 70 nch {} { set myp
1510: 61 72 65 6e 74 62 72 61 6e 63 68 20 22 22 20 3b arentbranch "" ;
1520: 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 6d return }.. m
1530: 65 74 68 6f 64 20 72 65 6d 6f 76 65 62 72 61 6e ethod removebran
1540: 63 68 20 7b 62 72 61 6e 63 68 7d 20 7b 0a 09 6c ch {branch} {..l
1550: 64 65 6c 65 74 65 20 6d 79 62 72 61 6e 63 68 65 delete mybranche
1560: 73 20 24 62 72 61 6e 63 68 0a 09 72 65 74 75 72 s $branch..retur
1570: 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 n. }.. met
1580: 68 6f 64 20 72 65 6d 6f 76 65 63 68 69 6c 64 6f hod removechildo
1590: 6e 62 72 61 6e 63 68 20 7b 72 65 76 7d 20 7b 0a nbranch {rev} {.
15a0: 09 6c 64 65 6c 65 74 65 20 6d 79 62 72 61 6e 63 .ldelete mybranc
15b0: 68 63 68 69 6c 64 72 65 6e 20 24 72 65 76 0a 09 hchildren $rev..
15c0: 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 return. }..
15d0: 20 20 6d 65 74 68 6f 64 20 73 6f 72 74 62 72 61 method sortbra
15e0: 6e 63 68 65 73 20 7b 7d 20 7b 0a 09 23 20 50 61 nches {} {..# Pa
15f0: 73 73 20 32 3a 20 43 6f 6c 6c 65 63 74 52 65 76 ss 2: CollectRev
1600: 0a 0a 09 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 ...if {[llength
1610: 24 6d 79 62 72 61 6e 63 68 65 73 5d 20 3c 20 32 $mybranches] < 2
1620: 7d 20 72 65 74 75 72 6e 0a 0a 09 23 20 53 6f 72 } return...# Sor
1630: 74 20 74 68 65 20 62 72 61 6e 63 68 65 73 20 73 t the branches s
1640: 70 61 77 6e 65 64 20 62 79 20 74 68 69 73 20 72 pawned by this r
1650: 65 76 69 73 69 6f 6e 20 69 6e 20 63 72 65 61 74 evision in creat
1660: 69 6f 6e 0a 09 23 20 6f 72 64 65 72 2e 20 54 6f ion..# order. To
1670: 20 68 65 6c 70 20 69 6e 20 74 68 69 73 20 6f 75 help in this ou
1680: 72 20 66 69 6c 65 20 67 61 76 65 20 61 6c 6c 20 r file gave all
1690: 62 72 61 6e 63 68 65 73 20 61 20 70 6f 73 69 74 branches a posit
16a0: 69 6f 6e 0a 09 23 20 69 64 2c 20 69 6e 20 6f 72 ion..# id, in or
16b0: 64 65 72 20 6f 66 20 74 68 65 69 72 20 64 65 66 der of their def
16c0: 69 6e 69 74 69 6f 6e 20 62 79 20 74 68 65 20 52 inition by the R
16d0: 43 53 20 61 72 63 68 69 76 65 2e 0a 09 23 0a 09 CS archive...#..
16e0: 23 20 54 68 65 20 63 72 65 61 74 69 6f 6e 20 6f # The creation o
16f0: 72 64 65 72 20 69 73 20 28 61 70 70 61 72 65 6e rder is (apparen
1700: 74 6c 79 29 20 74 68 65 20 72 65 76 65 72 73 65 tly) the reverse
1710: 20 6f 66 20 74 68 65 0a 09 23 20 64 65 66 69 6e of the..# defin
1720: 69 74 69 6f 6e 20 6f 72 64 65 72 2e 20 28 49 66 ition order. (If
1730: 20 61 20 62 72 61 6e 63 68 20 69 73 20 63 72 65 a branch is cre
1740: 61 74 65 64 20 74 68 65 6e 20 64 65 6c 65 74 65 ated then delete
1750: 64 2c 20 61 0a 09 23 20 6c 61 74 65 72 20 62 72 d, a..# later br
1760: 61 6e 63 68 20 63 61 6e 20 62 65 20 61 73 73 69 anch can be assi
1770: 67 6e 65 64 20 74 68 65 20 72 65 63 79 63 6c 65 gned the recycle
1780: 64 20 62 72 61 6e 63 68 20 6e 75 6d 62 65 72 3b d branch number;
1790: 0a 09 23 20 74 68 65 72 65 66 6f 72 65 20 62 72 ..# therefore br
17a0: 61 6e 63 68 20 6e 75 6d 62 65 72 73 20 61 72 65 anch numbers are
17b0: 20 6e 6f 74 20 61 6e 20 69 6e 64 69 63 61 74 69 not an indicati
17c0: 6f 6e 20 6f 66 20 63 72 65 61 74 69 6f 6e 0a 09 on of creation..
17d0: 23 20 6f 72 64 65 72 2e 29 0a 0a 09 73 65 74 20 # order.)...set
17e0: 74 6d 70 20 7b 7d 0a 09 66 6f 72 65 61 63 68 20 tmp {}..foreach
17f0: 62 72 61 6e 63 68 20 24 6d 79 62 72 61 6e 63 68 branch $mybranch
1800: 65 73 20 7b 0a 09 20 20 20 20 6c 61 70 70 65 6e es {.. lappen
1810: 64 20 74 6d 70 20 5b 6c 69 73 74 20 24 62 72 61 d tmp [list $bra
1820: 6e 63 68 20 5b 24 62 72 61 6e 63 68 20 70 6f 73 nch [$branch pos
1830: 69 74 69 6f 6e 5d 5d 0a 09 7d 0a 0a 09 73 65 74 ition]]..}...set
1840: 20 6d 79 62 72 61 6e 63 68 65 73 20 7b 7d 0a 09 mybranches {}..
1850: 66 6f 72 65 61 63 68 20 69 74 65 6d 20 5b 6c 73 foreach item [ls
1860: 6f 72 74 20 2d 69 6e 64 65 78 20 31 20 2d 64 65 ort -index 1 -de
1870: 63 72 65 61 73 69 6e 67 20 24 74 6d 70 5d 20 7b creasing $tmp] {
1880: 0a 09 20 20 20 20 73 74 72 75 63 74 3a 3a 6c 69 .. struct::li
1890: 73 74 20 61 73 73 69 67 6e 20 24 69 74 65 6d 20 st assign $item
18a0: 62 72 61 6e 63 68 20 70 6f 73 69 74 69 6f 6e 0a branch position.
18b0: 09 20 20 20 20 6c 61 70 70 65 6e 64 20 6d 79 62 . lappend myb
18c0: 72 61 6e 63 68 65 73 20 24 62 72 61 6e 63 68 0a ranches $branch.
18d0: 09 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d .}..return. }
18e0: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 6d 6f 76 .. method mov
18f0: 65 62 72 61 6e 63 68 65 73 74 6f 20 7b 72 65 76 ebranchesto {rev
1900: 7d 20 7b 0a 09 73 65 74 20 72 65 76 6c 6f 64 20 } {..set revlod
1910: 5b 24 72 65 76 20 6c 6f 64 5d 0a 09 66 6f 72 65 [$rev lod]..fore
1920: 61 63 68 20 62 72 61 6e 63 68 20 24 6d 79 62 72 ach branch $mybr
1930: 61 6e 63 68 65 73 20 7b 0a 09 20 20 20 20 24 72 anches {.. $r
1940: 65 76 20 61 64 64 62 72 61 6e 63 68 20 24 62 72 ev addbranch $br
1950: 61 6e 63 68 0a 09 20 20 20 20 24 62 72 61 6e 63 anch.. $branc
1960: 68 20 73 65 74 70 61 72 65 6e 74 20 24 72 65 76 h setparent $rev
1970: 0a 09 20 20 20 20 24 62 72 61 6e 63 68 20 73 65 .. $branch se
1980: 74 6c 6f 64 20 24 72 65 76 6c 6f 64 0a 09 7d 0a tlod $revlod..}.
1990: 09 66 6f 72 65 61 63 68 20 62 72 61 6e 63 68 72 .foreach branchr
19a0: 65 76 20 24 6d 79 62 72 61 6e 63 68 63 68 69 6c ev $mybranchchil
19b0: 64 72 65 6e 20 7b 0a 09 20 20 20 20 24 72 65 76 dren {.. $rev
19c0: 20 61 64 64 63 68 69 6c 64 6f 6e 62 72 61 6e 63 addchildonbranc
19d0: 68 20 24 62 72 61 6e 63 68 72 65 76 0a 09 20 20 h $branchrev..
19e0: 20 20 24 62 72 61 6e 63 68 72 65 76 20 63 75 74 $branchrev cut
19f0: 66 72 6f 6d 70 61 72 65 6e 74 0a 09 20 20 20 20 fromparent..
1a00: 24 62 72 61 6e 63 68 72 65 76 20 73 65 74 70 61 $branchrev setpa
1a10: 72 65 6e 74 20 24 72 65 76 0a 09 7d 0a 09 73 65 rent $rev..}..se
1a20: 74 20 6d 79 62 72 61 6e 63 68 65 73 20 20 20 20 t mybranches
1a30: 20 20 20 7b 7d 0a 09 73 65 74 20 6d 79 62 72 61 {}..set mybra
1a40: 6e 63 68 63 68 69 6c 64 72 65 6e 20 7b 7d 0a 09 nchchildren {}..
1a50: 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 return. }..
1a60: 20 20 6d 65 74 68 6f 64 20 72 65 6d 6f 76 65 61 method removea
1a70: 6c 6c 62 72 61 6e 63 68 65 73 20 7b 7d 20 7b 0a llbranches {} {.
1a80: 09 73 65 74 20 6d 79 62 72 61 6e 63 68 65 73 20 .set mybranches
1a90: 20 20 20 20 20 20 7b 7d 0a 09 73 65 74 20 6d 79 {}..set my
1aa0: 62 72 61 6e 63 68 63 68 69 6c 64 72 65 6e 20 7b branchchildren {
1ab0: 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a }..return. }.
1ac0: 0a 20 20 20 20 23 20 54 61 67 20 6c 69 6e 6b 61 . # Tag linka
1ad0: 67 65 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ge _____________
1ae0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 ____________..
1af0: 20 20 6d 65 74 68 6f 64 20 61 64 64 74 61 67 20 method addtag
1b00: 7b 74 61 67 7d 20 7b 0a 09 6c 61 70 70 65 6e 64 {tag} {..lappend
1b10: 20 6d 79 74 61 67 73 20 24 74 61 67 0a 09 72 65 mytags $tag..re
1b20: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 turn. }..
1b30: 6d 65 74 68 6f 64 20 74 61 67 73 20 7b 7d 20 7b method tags {} {
1b40: 20 72 65 74 75 72 6e 20 24 6d 79 74 61 67 73 20 return $mytags
1b50: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 72 65 }.. method re
1b60: 6d 6f 76 65 61 6c 6c 74 61 67 73 20 7b 7d 20 7b movealltags {} {
1b70: 0a 09 73 65 74 20 6d 79 74 61 67 73 20 7b 7d 0a ..set mytags {}.
1b80: 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 .return. }..
1b90: 20 20 20 6d 65 74 68 6f 64 20 6d 6f 76 65 74 61 method moveta
1ba0: 67 73 74 6f 20 7b 72 65 76 7d 20 7b 0a 09 73 65 gsto {rev} {..se
1bb0: 74 20 72 65 76 6c 6f 64 20 5b 24 72 65 76 20 6c t revlod [$rev l
1bc0: 6f 64 5d 0a 09 66 6f 72 65 61 63 68 20 74 61 67 od]..foreach tag
1bd0: 20 24 6d 79 74 61 67 73 20 7b 0a 09 20 20 20 20 $mytags {..
1be0: 24 72 65 76 20 61 64 64 74 61 67 20 24 74 61 67 $rev addtag $tag
1bf0: 0a 09 20 20 20 20 24 74 61 67 20 73 65 74 74 61 .. $tag setta
1c00: 67 72 65 76 20 24 72 65 76 0a 09 20 20 20 20 24 grev $rev.. $
1c10: 74 61 67 20 73 65 74 6c 6f 64 20 24 72 65 76 6c tag setlod $revl
1c20: 6f 64 0a 09 7d 0a 09 73 65 74 20 6d 79 74 61 67 od..}..set mytag
1c30: 73 20 7b 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 s {}..return.
1c40: 20 7d 0a 0a 20 20 20 20 23 20 67 65 6e 65 72 61 }.. # genera
1c50: 6c 20 73 79 6d 62 6f 6c 20 6f 70 65 72 61 74 69 l symbol operati
1c60: 6f 6e 73 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a ons ___________.
1c70: 0a 20 20 20 20 6d 65 74 68 6f 64 20 6d 6f 76 65 . method move
1c80: 73 79 6d 62 6f 6c 73 74 6f 20 7b 72 65 76 7d 20 symbolsto {rev}
1c90: 7b 0a 09 23 20 4d 6f 76 65 20 74 68 65 20 74 61 {..# Move the ta
1ca0: 67 73 20 61 6e 64 20 62 72 61 6e 63 68 65 73 20 gs and branches
1cb0: 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 69 73 attached to this
1cc0: 20 72 65 76 69 73 69 6f 6e 20 74 6f 20 74 68 65 revision to the
1cd0: 0a 09 23 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 ..# destination
1ce0: 61 6e 64 20 66 69 78 20 61 6c 6c 20 70 6f 69 6e and fix all poin
1cf0: 74 65 72 73 2e 0a 0a 09 24 73 65 6c 66 20 6d 6f ters....$self mo
1d00: 76 65 74 61 67 73 74 6f 20 20 20 20 20 24 72 65 vetagsto $re
1d10: 76 0a 09 24 73 65 6c 66 20 6d 6f 76 65 62 72 61 v..$self movebra
1d20: 6e 63 68 65 73 74 6f 20 24 72 65 76 0a 09 72 65 nchesto $rev..re
1d30: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 turn. }..
1d40: 23 20 44 65 72 69 76 65 64 20 73 74 75 66 66 20 # Derived stuff
1d50: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
1d60: 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 6d 65 74 _______.. met
1d70: 68 6f 64 20 64 65 74 65 72 6d 69 6e 65 6f 70 65 hod determineope
1d80: 72 61 74 69 6f 6e 20 7b 7d 20 7b 0a 09 23 20 4c ration {} {..# L
1d90: 6f 6f 6b 20 61 74 20 74 68 65 20 73 74 61 74 65 ook at the state
1da0: 20 6f 66 20 62 6f 74 68 20 74 68 69 73 20 72 65 of both this re
1db0: 76 69 73 69 6f 6e 20 61 6e 64 20 69 74 73 20 70 vision and its p
1dc0: 61 72 65 6e 74 20 74 6f 0a 09 23 20 64 65 74 65 arent to..# dete
1dd0: 72 6d 69 6e 65 20 74 68 65 20 74 79 70 65 20 6f rmine the type o
1de0: 70 66 20 6f 70 65 72 61 74 69 6f 6e 20 77 68 69 pf operation whi
1df0: 63 68 20 77 61 73 20 70 65 72 66 6f 72 6d 65 64 ch was performed
1e00: 20 28 61 64 64 2c 0a 09 23 20 6d 6f 64 69 66 79 (add,..# modify
1e10: 2c 20 64 65 6c 65 74 65 2c 20 6e 6f 6e 65 29 2e , delete, none).
1e20: 0a 09 23 0a 09 23 20 54 68 65 20 69 6d 70 6f 72 ..#..# The impor
1e30: 74 61 6e 74 20 69 6e 66 6f 72 6d 61 74 69 6f 6e tant information
1e40: 20 69 73 20 64 65 61 64 20 76 73 20 6e 6f 74 2d is dead vs not-
1e50: 64 65 61 64 20 66 6f 72 20 62 6f 74 68 2c 0a 09 dead for both,..
1e60: 23 20 67 69 76 69 6e 67 20 72 69 73 65 20 74 6f # giving rise to
1e70: 20 66 6f 75 72 20 70 6f 73 73 69 62 6c 65 20 74 four possible t
1e80: 79 70 65 73 2e 0a 0a 09 73 65 74 20 73 64 65 61 ypes....set sdea
1e90: 64 20 5b 65 78 70 72 20 7b 24 6d 79 73 74 61 74 d [expr {$mystat
1ea0: 65 20 65 71 20 22 64 65 61 64 22 7d 5d 0a 09 73 e eq "dead"}]..s
1eb0: 65 74 20 70 64 65 61 64 20 5b 65 78 70 72 20 7b et pdead [expr {
1ec0: 24 6d 79 70 61 72 65 6e 74 20 65 71 20 22 22 20 $myparent eq ""
1ed0: 7c 7c 20 5b 24 6d 79 70 61 72 65 6e 74 20 73 74 || [$myparent st
1ee0: 61 74 65 5d 20 65 71 20 22 64 65 61 64 22 7d 5d ate] eq "dead"}]
1ef0: 0a 0a 09 73 65 74 20 6d 79 6f 70 65 72 61 74 69 ...set myoperati
1f00: 6f 6e 20 24 6d 79 6f 70 73 74 61 74 65 28 5b 6c on $myopstate([l
1f10: 69 73 74 20 24 70 64 65 61 64 20 24 73 64 65 61 ist $pdead $sdea
1f20: 64 5d 29 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 d])..return.
1f30: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 6f 70 }.. method op
1f40: 65 72 61 74 69 6f 6e 20 7b 7d 20 7b 20 72 65 74 eration {} { ret
1f50: 75 72 6e 20 24 6d 79 6f 70 65 72 61 74 69 6f 6e urn $myoperation
1f60: 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 72 65 }. method re
1f70: 74 79 70 65 20 7b 78 7d 20 7b 20 73 65 74 20 6d type {x} { set m
1f80: 79 6f 70 65 72 61 74 69 6f 6e 20 24 78 20 3b 20 yoperation $x ;
1f90: 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 6d 65 return }.. me
1fa0: 74 68 6f 64 20 69 73 6f 6e 64 65 66 61 75 6c 74 thod isondefault
1fb0: 62 72 61 6e 63 68 20 20 20 20 7b 7d 20 7b 20 72 branch {} { r
1fc0: 65 74 75 72 6e 20 24 6d 79 69 73 6f 6e 64 65 66 eturn $myisondef
1fd0: 61 75 6c 74 62 72 61 6e 63 68 20 7d 0a 0a 20 20 aultbranch }..
1fe0: 20 20 6d 65 74 68 6f 64 20 73 65 74 6f 6e 64 65 method setonde
1ff0: 66 61 75 6c 74 62 72 61 6e 63 68 20 20 20 7b 78 faultbranch {x
2000: 7d 20 7b 20 73 65 74 20 6d 79 69 73 6f 6e 64 65 } { set myisonde
2010: 66 61 75 6c 74 62 72 61 6e 63 68 20 24 78 20 3b faultbranch $x ;
2020: 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 6d return }.. m
2030: 65 74 68 6f 64 20 73 65 74 64 65 66 61 75 6c 74 ethod setdefault
2040: 62 72 61 6e 63 68 63 68 69 6c 64 20 20 7b 72 65 branchchild {re
2050: 76 7d 20 7b 20 73 65 74 20 6d 79 64 62 63 68 69 v} { set mydbchi
2060: 6c 64 20 24 72 65 76 20 3b 20 72 65 74 75 72 6e ld $rev ; return
2070: 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 65 }. method se
2080: 74 64 65 66 61 75 6c 74 62 72 61 6e 63 68 70 61 tdefaultbranchpa
2090: 72 65 6e 74 20 7b 72 65 76 7d 20 7b 0a 09 73 65 rent {rev} {..se
20a0: 74 20 6d 79 64 62 70 61 72 65 6e 74 20 24 72 65 t mydbparent $re
20b0: 76 0a 0a 09 23 20 52 65 74 79 70 65 20 74 68 65 v...# Retype the
20c0: 20 72 65 76 69 73 69 6f 6e 20 28 6d 61 79 20 63 revision (may c
20d0: 68 61 6e 67 65 20 66 72 6f 6d 20 27 61 64 64 27 hange from 'add'
20e0: 20 74 6f 20 27 63 68 61 6e 67 65 27 29 2e 0a 0a to 'change')...
20f0: 09 73 65 74 20 73 64 65 61 64 20 5b 65 78 70 72 .set sdead [expr
2100: 20 7b 24 6d 79 6f 70 65 72 61 74 69 6f 6e 20 20 {$myoperation
2110: 20 20 20 6e 65 20 22 63 68 61 6e 67 65 22 7d 5d ne "change"}]
2120: 0a 09 73 65 74 20 70 64 65 61 64 20 5b 65 78 70 ..set pdead [exp
2130: 72 20 7b 5b 24 72 65 76 20 6f 70 65 72 61 74 69 r {[$rev operati
2140: 6f 6e 5d 20 6e 65 20 22 63 68 61 6e 67 65 22 7d on] ne "change"}
2150: 5d 0a 09 73 65 74 20 6d 79 6f 70 65 72 61 74 69 ]..set myoperati
2160: 6f 6e 20 24 6d 79 6f 70 73 74 61 74 65 28 5b 6c on $myopstate([l
2170: 69 73 74 20 24 70 64 65 61 64 20 24 73 64 65 61 ist $pdead $sdea
2180: 64 5d 29 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 d])..return.
2190: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 63 75 }.. method cu
21a0: 74 64 65 66 61 75 6c 74 62 72 61 6e 63 68 70 61 tdefaultbranchpa
21b0: 72 65 6e 74 20 7b 7d 20 7b 20 73 65 74 20 6d 79 rent {} { set my
21c0: 64 62 70 61 72 65 6e 74 20 22 22 20 3b 20 72 65 dbparent "" ; re
21d0: 74 75 72 6e 20 7d 0a 20 20 20 20 6d 65 74 68 6f turn }. metho
21e0: 64 20 63 75 74 64 65 66 61 75 6c 74 62 72 61 6e d cutdefaultbran
21f0: 63 68 63 68 69 6c 64 20 20 7b 7d 20 7b 20 73 65 chchild {} { se
2200: 74 20 6d 79 64 62 63 68 69 6c 64 20 20 22 22 20 t mydbchild ""
2210: 3b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 20 ; return }..
2220: 6d 65 74 68 6f 64 20 64 65 66 61 75 6c 74 62 72 method defaultbr
2230: 61 6e 63 68 63 68 69 6c 64 20 20 7b 7d 20 7b 20 anchchild {} {
2240: 72 65 74 75 72 6e 20 24 6d 79 64 62 63 68 69 6c return $mydbchil
2250: 64 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 64 d }. method d
2260: 65 66 61 75 6c 74 62 72 61 6e 63 68 70 61 72 65 efaultbranchpare
2270: 6e 74 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 nt {} { return $
2280: 6d 79 64 62 70 61 72 65 6e 74 20 7d 0a 0a 20 20 mydbparent }..
2290: 20 20 6d 65 74 68 6f 64 20 68 61 73 64 65 66 61 method hasdefa
22a0: 75 6c 74 62 72 61 6e 63 68 63 68 69 6c 64 20 20 ultbranchchild
22b0: 7b 7d 20 7b 20 72 65 74 75 72 6e 20 5b 65 78 70 {} { return [exp
22c0: 72 20 7b 24 6d 79 64 62 63 68 69 6c 64 20 20 6e r {$mydbchild n
22d0: 65 20 22 22 7d 5d 20 7d 0a 20 20 20 20 6d 65 74 e ""}] }. met
22e0: 68 6f 64 20 68 61 73 64 65 66 61 75 6c 74 62 72 hod hasdefaultbr
22f0: 61 6e 63 68 70 61 72 65 6e 74 20 7b 7d 20 7b 20 anchparent {} {
2300: 72 65 74 75 72 6e 20 5b 65 78 70 72 20 7b 24 6d return [expr {$m
2310: 79 64 62 70 61 72 65 6e 74 20 6e 65 20 22 22 7d ydbparent ne ""}
2320: 5d 20 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 20 ] }.. # # ##
2330: 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 ### ##### ######
2340: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 ## #############
2350: 0a 20 20 20 20 23 23 20 54 79 70 65 20 41 50 49 . ## Type API
2360: 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 68 6f 64 .. typemethod
2370: 20 69 73 74 72 75 6e 6b 72 65 76 6e 72 20 7b 72 istrunkrevnr {r
2380: 65 76 6e 72 7d 20 7b 0a 09 72 65 74 75 72 6e 20 evnr} {..return
2390: 5b 65 78 70 72 20 7b 5b 6c 6c 65 6e 67 74 68 20 [expr {[llength
23a0: 5b 73 70 6c 69 74 20 24 72 65 76 6e 72 20 2e 5d [split $revnr .]
23b0: 5d 20 3d 3d 20 32 7d 5d 0a 20 20 20 20 7d 0a 0a ] == 2}]. }..
23c0: 20 20 20 20 74 79 70 65 6d 65 74 68 6f 64 20 69 typemethod i
23d0: 73 62 72 61 6e 63 68 72 65 76 6e 72 20 7b 72 65 sbranchrevnr {re
23e0: 76 6e 72 20 5f 20 62 76 7d 20 7b 0a 09 69 66 20 vnr _ bv} {..if
23f0: 7b 5b 72 65 67 65 78 70 20 24 6d 79 62 72 61 6e {[regexp $mybran
2400: 63 68 70 61 74 74 65 72 6e 20 24 72 65 76 6e 72 chpattern $revnr
2410: 20 2d 3e 20 68 65 61 64 20 74 61 69 6c 5d 7d 20 -> head tail]}
2420: 7b 0a 09 20 20 20 20 75 70 76 61 72 20 31 20 24 {.. upvar 1 $
2430: 62 76 20 62 72 61 6e 63 68 6e 72 0a 09 20 20 20 bv branchnr..
2440: 20 73 65 74 20 62 72 61 6e 63 68 6e 72 20 24 7b set branchnr ${
2450: 68 65 61 64 7d 24 74 61 69 6c 0a 09 20 20 20 20 head}$tail..
2460: 72 65 74 75 72 6e 20 31 0a 09 7d 0a 09 72 65 74 return 1..}..ret
2470: 75 72 6e 20 30 0a 20 20 20 20 7d 0a 0a 20 20 20 urn 0. }..
2480: 20 74 79 70 65 6d 65 74 68 6f 64 20 32 62 72 61 typemethod 2bra
2490: 6e 63 68 6e 72 20 7b 72 65 76 6e 72 7d 20 7b 0a nchnr {revnr} {.
24a0: 09 23 20 49 6e 70 75 74 20 69 73 20 61 20 62 72 .# Input is a br
24b0: 61 6e 63 68 20 72 65 76 69 73 69 6f 6e 20 6e 75 anch revision nu
24c0: 6d 62 65 72 2c 20 69 2e 65 2e 20 61 20 72 65 76 mber, i.e. a rev
24d0: 69 73 69 6f 6e 20 6e 75 6d 62 65 72 0a 09 23 20 ision number..#
24e0: 77 69 74 68 20 61 6e 20 65 76 65 6e 20 6e 75 6d with an even num
24f0: 62 65 72 20 6f 66 20 63 6f 6d 70 6f 6e 65 6e 74 ber of component
2500: 73 3b 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 27 s; for example '
2510: 32 2e 39 2e 32 2e 31 27 0a 09 23 20 28 6e 65 76 2.9.2.1'..# (nev
2520: 65 72 20 27 32 2e 39 2e 32 27 20 6e 6f 72 20 27 er '2.9.2' nor '
2530: 32 2e 39 2e 30 2e 32 27 29 2e 20 20 54 68 65 20 2.9.0.2'). The
2540: 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69 73 20 return value is
2550: 74 68 65 0a 09 23 20 62 72 61 6e 63 68 20 6e 75 the..# branch nu
2560: 6d 62 65 72 20 28 66 6f 72 20 65 78 61 6d 70 6c mber (for exampl
2570: 65 2c 20 27 32 2e 39 2e 32 27 29 2e 20 20 46 6f e, '2.9.2'). Fo
2580: 72 20 74 72 75 6e 6b 20 72 65 76 69 73 69 6f 6e r trunk revision
2590: 73 2c 0a 09 23 20 6c 69 6b 65 20 27 33 2e 34 27 s,..# like '3.4'
25a0: 2c 20 77 65 20 72 65 74 75 72 6e 20 74 68 65 20 , we return the
25b0: 65 6d 70 74 79 20 73 74 72 69 6e 67 2e 0a 0a 09 empty string....
25c0: 69 66 20 7b 5b 24 74 79 70 65 20 69 73 74 72 75 if {[$type istru
25d0: 6e 6b 72 65 76 6e 72 20 24 72 65 76 6e 72 5d 7d nkrevnr $revnr]}
25e0: 20 7b 0a 09 20 20 20 20 72 65 74 75 72 6e 20 22 {.. return "
25f0: 22 0a 09 7d 0a 09 72 65 74 75 72 6e 20 5b 6a 6f "..}..return [jo
2600: 69 6e 20 5b 6c 72 61 6e 67 65 20 5b 73 70 6c 69 in [lrange [spli
2610: 74 20 24 72 65 76 6e 72 20 2e 5d 20 30 20 65 6e t $revnr .] 0 en
2620: 64 2d 31 5d 20 2e 5d 0a 20 20 20 20 7d 0a 0a 20 d-1] .]. }..
2630: 20 20 20 74 79 70 65 6d 65 74 68 6f 64 20 32 62 typemethod 2b
2640: 72 61 6e 63 68 70 61 72 65 6e 74 72 65 76 6e 72 ranchparentrevnr
2650: 20 7b 62 72 61 6e 63 68 6e 72 7d 20 7b 0a 09 23 {branchnr} {..#
2660: 20 43 68 6f 70 20 74 68 65 20 6c 61 73 74 20 73 Chop the last s
2670: 65 67 6d 65 6e 74 20 6f 66 66 0a 09 72 65 74 75 egment off..retu
2680: 72 6e 20 5b 6a 6f 69 6e 20 5b 6c 72 61 6e 67 65 rn [join [lrange
2690: 20 5b 73 70 6c 69 74 20 24 62 72 61 6e 63 68 6e [split $branchn
26a0: 72 20 2e 5d 20 30 20 65 6e 64 2d 31 5d 20 2e 5d r .] 0 end-1] .]
26b0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 23 20 . }.. # #
26c0: 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 ## ### ##### ###
26d0: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 ##### ##########
26e0: 23 23 23 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 ###.. method
26f0: 70 65 72 73 69 73 74 20 7b 7d 20 7b 0a 09 73 65 persist {} {..se
2700: 74 20 66 69 64 20 5b 24 6d 79 66 69 6c 65 20 69 t fid [$myfile i
2710: 64 5d 0a 09 73 65 74 20 6c 6f 64 20 5b 24 6d 79 d]..set lod [$my
2720: 6c 6f 64 20 69 64 5d 0a 09 73 65 74 20 6f 70 20 lod id]..set op
2730: 20 24 6d 79 6f 70 63 6f 64 65 28 24 6d 79 6f 70 $myopcode($myop
2740: 65 72 61 74 69 6f 6e 29 0a 09 73 65 74 20 69 64 eration)..set id
2750: 62 20 24 6d 79 69 73 6f 6e 64 65 66 61 75 6c 74 b $myisondefault
2760: 62 72 61 6e 63 68 0a 0a 09 73 74 72 75 63 74 3a branch...struct:
2770: 3a 6c 69 73 74 20 61 73 73 69 67 6e 20 24 6d 79 :list assign $my
2780: 74 65 78 74 20 63 6f 66 66 20 65 6e 64 0a 09 73 text coff end..s
2790: 65 74 20 63 6c 65 6e 20 5b 65 78 70 72 20 7b 24 et clen [expr {$
27a0: 65 6e 64 20 2d 20 24 63 6f 66 66 7d 5d 0a 0a 09 end - $coff}]...
27b0: 6c 61 70 70 65 6e 64 20 6d 61 70 20 40 50 40 20 lappend map @P@
27c0: 5b 65 78 70 72 20 7b 20 28 24 6d 79 70 61 72 65 [expr { ($mypare
27d0: 6e 74 20 20 20 20 20 20 20 65 71 20 22 22 29 20 nt eq "")
27e0: 3f 20 22 4e 55 4c 4c 22 20 3a 20 5b 24 6d 79 70 ? "NULL" : [$myp
27f0: 61 72 65 6e 74 20 20 20 20 20 20 20 69 64 5d 20 arent id]
2800: 7d 5d 0a 09 6c 61 70 70 65 6e 64 20 6d 61 70 20 }]..lappend map
2810: 40 43 40 20 5b 65 78 70 72 20 7b 20 28 24 6d 79 @C@ [expr { ($my
2820: 63 68 69 6c 64 20 20 20 20 20 20 20 20 65 71 20 child eq
2830: 22 22 29 20 3f 20 22 4e 55 4c 4c 22 20 3a 20 5b "") ? "NULL" : [
2840: 24 6d 79 63 68 69 6c 64 20 20 20 20 20 20 20 20 $mychild
2850: 69 64 5d 20 7d 5d 0a 09 6c 61 70 70 65 6e 64 20 id] }]..lappend
2860: 6d 61 70 20 40 44 50 20 5b 65 78 70 72 20 7b 20 map @DP [expr {
2870: 28 24 6d 79 64 62 70 61 72 65 6e 74 20 20 20 20 ($mydbparent
2880: 20 65 71 20 22 22 29 20 3f 20 22 4e 55 4c 4c 22 eq "") ? "NULL"
2890: 20 3a 20 5b 24 6d 79 64 62 70 61 72 65 6e 74 20 : [$mydbparent
28a0: 20 20 20 20 69 64 5d 20 7d 5d 0a 09 6c 61 70 70 id] }]..lapp
28b0: 65 6e 64 20 6d 61 70 20 40 44 43 20 5b 65 78 70 end map @DC [exp
28c0: 72 20 7b 20 28 24 6d 79 64 62 63 68 69 6c 64 20 r { ($mydbchild
28d0: 20 20 20 20 20 65 71 20 22 22 29 20 3f 20 22 4e eq "") ? "N
28e0: 55 4c 4c 22 20 3a 20 5b 24 6d 79 64 62 63 68 69 ULL" : [$mydbchi
28f0: 6c 64 20 20 20 20 20 20 69 64 5d 20 7d 5d 0a 09 ld id] }]..
2900: 6c 61 70 70 65 6e 64 20 6d 61 70 20 40 42 50 20 lappend map @BP
2910: 5b 65 78 70 72 20 7b 20 28 24 6d 79 70 61 72 65 [expr { ($mypare
2920: 6e 74 62 72 61 6e 63 68 20 65 71 20 22 22 29 20 ntbranch eq "")
2930: 3f 20 22 4e 55 4c 4c 22 20 3a 20 5b 24 6d 79 70 ? "NULL" : [$myp
2940: 61 72 65 6e 74 62 72 61 6e 63 68 20 69 64 5d 20 arentbranch id]
2950: 7d 5d 0a 0a 09 73 65 74 20 63 6d 64 20 7b 0a 09 }]...set cmd {..
2960: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 INSERT INTO
2970: 72 65 76 69 73 69 6f 6e 20 28 20 72 69 64 2c 20 revision ( rid,
2980: 20 20 66 69 64 2c 20 20 72 65 76 2c 20 20 20 20 fid, rev,
2990: 20 20 6c 6f 64 2c 20 70 61 72 65 6e 74 2c 20 63 lod, parent, c
29a0: 68 69 6c 64 2c 20 20 69 73 64 65 66 61 75 6c 74 hild, isdefault
29b0: 2c 20 64 62 70 61 72 65 6e 74 2c 20 64 62 63 68 , dbparent, dbch
29c0: 69 6c 64 2c 20 62 70 61 72 65 6e 74 2c 20 20 6f ild, bparent, o
29d0: 70 2c 20 20 64 61 74 65 2c 20 20 20 20 73 74 61 p, date, sta
29e0: 74 65 2c 20 20 20 20 6d 69 64 2c 20 20 20 20 20 te, mid,
29f0: 20 20 63 6f 66 66 2c 20 20 63 6c 65 6e 29 0a 09 coff, clen)..
2a00: 20 20 20 20 56 41 4c 55 45 53 20 20 20 20 20 20 VALUES
2a10: 20 20 20 20 20 20 20 20 20 28 24 6d 79 69 64 2c ($myid,
2a20: 20 24 66 69 64 2c 20 24 6d 79 72 65 76 6e 72 2c $fid, $myrevnr,
2a30: 20 24 6c 6f 64 2c 20 40 50 40 2c 20 20 20 20 40 $lod, @P@, @
2a40: 43 40 2c 20 20 20 24 69 64 62 2c 20 20 20 20 20 C@, $idb,
2a50: 20 20 40 44 50 2c 20 20 20 20 20 20 40 44 43 2c @DP, @DC,
2a60: 20 20 20 20 20 40 42 50 20 20 20 20 2c 20 24 6f @BP , $o
2a70: 70 2c 20 24 6d 79 64 61 74 65 2c 20 24 6d 79 73 p, $mydate, $mys
2a80: 74 61 74 65 2c 20 24 6d 79 6d 65 74 61 69 64 2c tate, $mymetaid,
2a90: 20 24 63 6f 66 66 2c 20 24 63 6c 65 6e 29 3b 0a $coff, $clen);.
2aa0: 09 7d 0a 0a 09 73 74 61 74 65 20 74 72 61 6e 73 .}...state trans
2ab0: 61 63 74 69 6f 6e 20 7b 0a 09 20 20 20 20 73 74 action {.. st
2ac0: 61 74 65 20 72 75 6e 20 5b 73 74 72 69 6e 67 20 ate run [string
2ad0: 6d 61 70 20 24 6d 61 70 20 24 63 6d 64 5d 0a 0a map $map $cmd]..
2ae0: 09 20 20 20 20 23 20 41 6e 64 20 74 68 65 20 62 . # And the b
2af0: 72 61 6e 63 68 20 63 68 69 6c 64 72 65 6e 20 61 ranch children a
2b00: 73 20 77 65 6c 6c 2c 20 66 6f 72 20 70 61 73 73 s well, for pass
2b10: 20 35 2e 0a 09 20 20 20 20 66 6f 72 65 61 63 68 5... foreach
2b20: 20 62 63 20 24 6d 79 62 72 61 6e 63 68 63 68 69 bc $mybranchchi
2b30: 6c 64 72 65 6e 20 7b 0a 09 09 73 65 74 20 62 63 ldren {...set bc
2b40: 69 64 20 5b 24 62 63 20 69 64 5d 0a 09 09 73 74 id [$bc id]...st
2b50: 61 74 65 20 72 75 6e 20 7b 0a 09 09 20 20 20 20 ate run {...
2b60: 49 4e 53 45 52 54 20 49 4e 54 4f 20 72 65 76 69 INSERT INTO revi
2b70: 73 69 6f 6e 62 72 61 6e 63 68 63 68 69 6c 64 72 sionbranchchildr
2b80: 65 6e 20 28 72 69 64 2c 20 20 20 62 72 69 64 29 en (rid, brid)
2b90: 0a 09 09 20 20 20 20 56 41 4c 55 45 53 20 20 20 ... VALUES
2ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2bb0: 20 20 20 20 20 20 20 20 20 20 28 24 6d 79 69 64 ($myid
2bc0: 2c 20 24 62 63 69 64 29 3b 0a 09 09 7d 0a 09 20 , $bcid);...}..
2bd0: 20 20 20 7d 0a 09 7d 0a 09 72 65 74 75 72 6e 0a }..}..return.
2be0: 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 23 20 23 }.. # # #
2bf0: 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 # ### ##### ####
2c00: 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 #### ###########
2c10: 23 23 0a 20 20 20 20 23 23 20 53 74 61 74 65 0a ##. ## State.
2c20: 0a 20 20 20 20 23 20 50 65 72 73 69 73 74 65 6e . # Persisten
2c30: 74 3a 20 6d 79 69 64 20 20 20 20 20 20 20 20 20 t: myid
2c40: 20 20 20 20 20 20 20 2d 20 72 65 76 69 73 69 6f - revisio
2c50: 6e 2e 72 69 64 0a 20 20 20 20 23 20 20 20 20 20 n.rid. #
2c60: 20 20 20 20 20 20 20 20 6d 79 66 69 6c 65 20 20 myfile
2c70: 20 20 20 20 20 20 20 20 20 20 20 20 2d 20 72 65 - re
2c80: 76 69 73 69 6f 6e 2e 66 69 64 0a 20 20 20 20 23 vision.fid. #
2c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 79 6c myl
2ca0: 6f 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 od
2cb0: 20 2d 20 72 65 76 69 73 69 6f 6e 2e 6c 6f 64 0a - revision.lod.
2cc0: 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20 #
2cd0: 20 20 6d 79 72 65 76 6e 72 20 20 20 20 20 20 20 myrevnr
2ce0: 20 20 20 20 20 20 2d 20 72 65 76 69 73 69 6f 6e - revision
2cf0: 2e 72 65 76 0a 20 20 20 20 23 20 20 20 20 20 20 .rev. #
2d00: 20 20 20 20 20 20 20 6d 79 64 61 74 65 20 20 20 mydate
2d10: 20 20 20 20 20 20 20 20 20 20 20 2d 20 72 65 76 - rev
2d20: 69 73 69 6f 6e 2e 64 61 74 65 0a 20 20 20 20 23 ision.date. #
2d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 79 73 mys
2d40: 74 61 74 65 20 20 20 20 20 20 20 20 20 20 20 20 tate
2d50: 20 2d 20 72 65 76 69 73 69 6f 6e 2e 73 74 61 74 - revision.stat
2d60: 65 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 e. #
2d70: 20 20 20 20 6d 79 6d 65 74 61 69 64 20 20 20 20 mymetaid
2d80: 20 20 20 20 20 20 20 20 2d 20 72 65 76 69 73 69 - revisi
2d90: 6f 6e 2e 6d 69 64 0a 20 20 20 20 23 20 20 20 20 on.mid. #
2da0: 20 20 20 20 20 20 20 20 20 6d 79 74 65 78 74 20 mytext
2db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 20 72 - r
2dc0: 65 76 69 73 69 6f 6e 2e 7b 63 73 2c 63 6c 7d 0a evision.{cs,cl}.
2dd0: 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20 #
2de0: 20 20 6d 79 70 61 72 65 6e 74 20 20 20 20 20 20 myparent
2df0: 20 20 20 20 20 20 2d 20 72 65 76 69 73 69 6f 6e - revision
2e00: 2e 70 61 72 65 6e 74 0a 20 20 20 20 23 20 20 20 .parent. #
2e10: 20 20 20 20 20 20 20 20 20 20 6d 79 63 68 69 6c mychil
2e20: 64 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 20 d -
2e30: 72 65 76 69 73 69 6f 6e 2e 63 68 69 6c 64 0a 20 revision.child.
2e40: 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 #
2e50: 20 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 68 20 myparentbranch
2e60: 20 20 20 20 20 2d 20 72 65 76 69 73 69 6f 6e 2e - revision.
2e70: 62 70 61 72 65 6e 74 0a 20 20 20 20 23 20 20 20 bparent. #
2e80: 20 20 20 20 20 20 20 20 20 20 6d 79 6f 70 65 72 myoper
2e90: 61 74 69 6f 6e 20 20 20 20 20 20 20 20 20 2d 20 ation -
2ea0: 72 65 76 69 73 69 6f 6e 2e 6f 70 0a 20 20 20 20 revision.op.
2eb0: 23 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 79 # my
2ec0: 69 73 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e 63 isondefaultbranc
2ed0: 68 20 2d 20 72 65 76 69 73 69 6f 6e 2e 69 73 64 h - revision.isd
2ee0: 65 66 61 75 6c 74 0a 20 20 20 20 23 20 20 20 20 efault. #
2ef0: 20 20 20 20 20 20 20 20 20 6d 79 64 62 70 61 72 mydbpar
2f00: 65 6e 74 20 20 20 20 20 20 20 20 20 20 2d 20 72 ent - r
2f10: 65 76 69 73 69 6f 6e 2e 64 62 70 61 72 65 6e 74 evision.dbparent
2f20: 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 . #
2f30: 20 20 20 6d 79 64 62 63 68 69 6c 64 20 20 20 20 mydbchild
2f40: 20 20 20 20 20 20 20 2d 20 72 65 76 69 73 69 6f - revisio
2f50: 6e 2e 64 62 63 68 69 6c 64 0a 0a 0a 20 20 20 20 n.dbchild...
2f60: 74 79 70 65 76 61 72 69 61 62 6c 65 20 6d 79 62 typevariable myb
2f70: 72 61 6e 63 68 70 61 74 74 65 72 6e 20 7b 5e 28 ranchpattern {^(
2f80: 28 3f 3a 5c 64 2b 5c 2e 5c 64 2b 5c 2e 29 2b 29 (?:\d+\.\d+\.)+)
2f90: 28 3f 3a 30 5c 2e 29 3f 28 5c 64 2b 29 24 7d 0a (?:0\.)?(\d+)$}.
2fa0: 20 20 20 20 23 20 46 69 72 73 74 20 61 20 6e 6f # First a no
2fb0: 6e 7a 65 72 6f 20 65 76 65 6e 20 6e 75 6d 62 65 nzero even numbe
2fc0: 72 20 6f 66 20 64 69 67 69 74 20 67 72 6f 75 70 r of digit group
2fd0: 73 20 77 69 74 68 20 74 72 61 69 6c 69 6e 67 20 s with trailing
2fe0: 64 6f 74 0a 20 20 20 20 23 20 43 56 53 20 74 68 dot. # CVS th
2ff0: 65 6e 20 73 74 69 63 6b 73 20 61 6e 20 65 78 74 en sticks an ext
3000: 72 61 20 30 20 69 6e 20 68 65 72 65 3b 20 52 43 ra 0 in here; RC
3010: 53 20 64 6f 65 73 20 6e 6f 74 2e 0a 20 20 20 20 S does not..
3020: 23 20 41 6e 64 20 74 68 65 20 6c 61 73 74 20 64 # And the last d
3030: 69 67 69 74 20 67 72 6f 75 70 2e 0a 0a 20 20 20 igit group...
3040: 20 74 79 70 65 76 61 72 69 61 62 6c 65 20 6d 79 typevariable my
3050: 69 64 63 6f 75 6e 74 65 72 20 30 20 3b 20 23 20 idcounter 0 ; #
3060: 43 6f 75 6e 74 65 72 20 66 6f 72 20 72 65 76 69 Counter for revi
3070: 73 69 6f 6e 20 69 64 73 2e 0a 20 20 20 20 76 61 sion ids.. va
3080: 72 69 61 62 6c 65 20 6d 79 69 64 20 20 20 20 20 riable myid
3090: 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 52 65 76 {} ; # Rev
30a0: 69 73 69 6f 6e 20 69 64 2e 0a 0a 20 20 20 20 76 ision id... v
30b0: 61 72 69 61 62 6c 65 20 6d 79 72 65 76 6e 72 20 ariable myrevnr
30c0: 20 20 20 20 7b 7d 20 3b 20 23 20 52 65 76 69 73 {} ; # Revis
30d0: 69 6f 6e 20 6e 75 6d 62 65 72 20 6f 66 20 74 68 ion number of th
30e0: 65 20 72 65 76 69 73 69 6f 6e 2e 0a 20 20 20 20 e revision..
30f0: 76 61 72 69 61 62 6c 65 20 6d 79 64 61 74 65 20 variable mydate
3100: 20 20 20 20 20 7b 7d 20 3b 20 23 20 54 69 6d 65 {} ; # Time
3110: 73 74 61 6d 70 20 6f 66 20 74 68 65 20 72 65 76 stamp of the rev
3120: 69 73 69 6f 6e 2c 20 73 65 63 6f 6e 64 73 20 73 ision, seconds s
3130: 69 6e 63 65 20 65 70 6f 63 68 0a 20 20 20 20 76 ince epoch. v
3140: 61 72 69 61 62 6c 65 20 6d 79 6f 72 69 67 64 61 ariable myorigda
3150: 74 65 20 20 7b 7d 20 3b 20 23 20 4f 72 69 67 69 te {} ; # Origi
3160: 6e 61 6c 20 75 6e 6d 6f 64 69 66 69 65 64 20 74 nal unmodified t
3170: 69 6d 65 73 74 61 6d 70 2e 0a 20 20 20 20 76 61 imestamp.. va
3180: 72 69 61 62 6c 65 20 6d 79 73 74 61 74 65 20 20 riable mystate
3190: 20 20 20 7b 7d 20 3b 20 23 20 53 74 61 74 65 20 {} ; # State
31a0: 6f 66 20 74 68 65 20 72 65 76 69 73 69 6f 6e 2e of the revision.
31b0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 . variable my
31c0: 66 69 6c 65 20 20 20 20 20 20 7b 7d 20 3b 20 23 file {} ; #
31d0: 20 52 65 66 20 74 6f 20 74 68 65 20 66 69 6c 65 Ref to the file
31e0: 20 6f 62 6a 65 63 74 20 74 68 65 20 72 65 76 69 object the revi
31f0: 73 69 6f 6e 20 62 65 6c 6f 6e 67 73 20 74 6f 2e sion belongs to.
3200: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 . variable my
3210: 74 65 78 74 20 20 20 20 20 20 7b 7d 20 3b 20 23 text {} ; #
3220: 20 52 61 6e 67 65 20 6f 66 20 74 68 65 20 28 64 Range of the (d
3230: 65 6c 74 61 29 20 74 65 78 74 20 66 6f 72 20 74 elta) text for t
3240: 68 69 73 20 72 65 76 69 73 69 6f 6e 20 69 6e 20 his revision in
3250: 74 68 65 20 66 69 6c 65 2e 0a 20 20 20 20 76 61 the file.. va
3260: 72 69 61 62 6c 65 20 6d 79 6d 65 74 61 69 64 20 riable mymetaid
3270: 20 20 20 7b 7d 20 3b 20 23 20 49 64 20 6f 66 20 {} ; # Id of
3280: 74 68 65 20 6d 65 74 61 20 64 61 74 61 20 67 72 the meta data gr
3290: 6f 75 70 20 74 68 65 20 72 65 76 69 73 69 6f 6e oup the revision
32a0: 0a 09 09 09 20 20 20 20 20 20 23 20 62 65 6c 6f .... # belo
32b0: 6e 67 73 20 74 6f 2e 20 54 68 69 73 20 69 73 20 ngs to. This is
32c0: 6c 61 74 65 72 20 75 73 65 64 20 74 6f 20 70 75 later used to pu
32d0: 74 0a 09 09 09 20 20 20 20 20 20 23 20 74 68 65 t.... # the
32e0: 20 66 69 6c 65 20 72 65 76 69 73 69 6f 6e 73 20 file revisions
32f0: 69 6e 74 6f 20 70 72 65 6c 69 6d 69 6e 61 72 79 into preliminary
3300: 0a 09 09 09 20 20 20 20 20 20 23 20 63 68 61 6e .... # chan
3310: 67 65 73 65 74 73 20 28 61 6b 61 20 70 72 6f 6a gesets (aka proj
3320: 65 63 74 20 72 65 76 69 73 69 6f 6e 73 29 2e 0a ect revisions)..
3330: 09 09 09 20 20 20 20 20 20 23 20 54 68 69 73 20 ... # This
3340: 69 64 20 65 6e 63 6f 64 65 73 20 34 20 70 69 65 id encodes 4 pie
3350: 63 65 73 20 6f 66 20 64 61 74 61 2c 0a 09 09 09 ces of data,....
3360: 20 20 20 20 20 20 23 20 6e 61 6d 65 6c 79 3a 20 # namely:
3370: 74 68 65 20 70 72 6f 6a 65 63 74 20 61 6e 64 20 the project and
3380: 62 72 61 6e 63 68 20 74 68 65 0a 09 09 09 20 20 branch the....
3390: 20 20 20 20 23 20 72 65 76 69 73 69 6f 6e 20 77 # revision w
33a0: 61 73 20 63 6f 6d 6d 69 74 74 65 64 20 74 6f 2c as committed to,
33b0: 20 74 68 65 20 61 75 74 68 6f 72 0a 09 09 09 20 the author....
33c0: 20 20 20 20 20 23 20 77 68 6f 20 64 69 64 20 74 # who did t
33d0: 68 65 20 63 6f 6d 6d 69 74 2c 20 61 6e 64 20 74 he commit, and t
33e0: 68 65 20 6d 65 73 73 61 67 65 0a 09 09 09 20 20 he message....
33f0: 20 20 20 20 23 20 75 73 65 64 2e 0a 20 20 20 20 # used..
3400: 76 61 72 69 61 62 6c 65 20 6d 79 6c 6f 64 20 20 variable mylod
3410: 20 20 20 20 20 7b 7d 20 3b 20 23 20 52 65 66 65 {} ; # Refe
3420: 72 65 6e 63 65 20 74 6f 20 74 68 65 20 6c 69 6e rence to the lin
3430: 65 2d 6f 66 2d 64 65 76 65 6c 6f 70 6d 65 6e 74 e-of-development
3440: 0a 09 09 09 20 20 20 20 20 20 23 20 6f 62 6a 65 .... # obje
3450: 63 74 20 74 68 65 20 72 65 76 69 73 69 6f 6e 20 ct the revision
3460: 62 65 6c 6f 6e 67 73 20 74 6f 2e 20 41 6e 0a 09 belongs to. An..
3470: 09 09 20 20 20 20 20 20 23 20 61 6c 74 65 72 6e .. # altern
3480: 61 74 69 76 65 20 69 64 69 6f 6d 20 77 6f 75 6c ative idiom woul
3490: 64 20 62 65 20 74 6f 20 63 61 6c 6c 20 69 74 0a d be to call it.
34a0: 09 09 09 20 20 20 20 20 20 23 20 74 68 65 20 62 ... # the b
34b0: 72 61 6e 63 68 20 74 68 65 20 72 65 76 69 73 69 ranch the revisi
34c0: 6f 6e 20 69 73 20 6f 6e 2e 20 54 68 69 73 0a 09 on is on. This..
34d0: 09 09 20 20 20 20 20 20 23 20 72 65 66 65 72 65 .. # refere
34e0: 6e 63 65 20 69 73 20 74 6f 20 61 20 70 72 6f 6a nce is to a proj
34f0: 65 63 74 2d 6c 65 76 65 6c 20 6f 62 6a 65 63 74 ect-level object
3500: 0a 09 09 09 20 20 20 20 20 20 23 20 28 73 79 6d .... # (sym
3510: 62 6f 6c 20 6f 72 20 74 72 75 6e 6b 29 2e 0a 0a bol or trunk)...
3520: 20 20 20 20 23 20 42 61 73 69 63 20 70 61 72 65 # Basic pare
3530: 6e 74 2f 63 68 69 6c 64 20 6c 69 6e 6b 61 67 65 nt/child linkage
3540: 20 28 6c 69 6e 65 73 20 6f 66 20 64 65 76 65 6c (lines of devel
3550: 6f 70 6d 65 6e 74 29 0a 0a 20 20 20 20 76 61 72 opment).. var
3560: 69 61 62 6c 65 20 6d 79 70 61 72 65 6e 74 20 7b iable myparent {
3570: 7d 20 3b 20 23 20 52 65 66 20 74 6f 20 70 61 72 } ; # Ref to par
3580: 65 6e 74 20 72 65 76 69 73 69 6f 6e 20 6f 62 6a ent revision obj
3590: 65 63 74 2e 20 4c 69 6e 6b 20 72 65 71 75 69 72 ect. Link requir
35a0: 65 64 20 62 65 63 61 75 73 65 20 6f 66 0a 20 20 ed because of.
35b0: 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 #
35c0: 20 20 20 20 20 20 20 3b 20 23 20 27 63 76 73 61 ; # 'cvsa
35d0: 64 6d 69 6e 20 2d 6f 27 2c 20 77 68 69 63 68 20 dmin -o', which
35e0: 63 61 6e 20 63 72 65 61 74 65 20 61 72 62 69 74 can create arbit
35f0: 72 61 72 79 20 67 61 70 73 20 69 6e 20 74 68 65 rary gaps in the
3600: 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 . #
3610: 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 6e 75 ; # nu
3620: 6d 62 65 72 69 6e 67 20 73 65 71 75 65 6e 63 65 mbering sequence
3630: 2e 20 54 68 69 73 20 69 73 20 69 6e 20 74 68 65 . This is in the
3640: 20 73 61 6d 65 20 6c 69 6e 65 20 6f 66 20 64 65 same line of de
3650: 76 65 6c 6f 70 6d 65 6e 74 0a 20 20 20 20 23 20 velopment. #
3660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3670: 20 20 20 3b 20 23 20 4e 6f 74 65 3a 20 46 6f 72 ; # Note: For
3680: 20 74 68 65 20 66 69 72 73 74 20 72 65 76 69 73 the first revis
3690: 69 6f 6e 20 6f 6e 20 61 20 62 72 61 6e 63 68 20 ion on a branch
36a0: 74 68 65 20 72 65 76 69 73 69 6f 6e 0a 20 20 20 the revision.
36b0: 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #
36c0: 20 20 20 20 20 20 3b 20 23 20 69 74 20 77 61 73 ; # it was
36d0: 20 73 70 61 77 6e 65 64 20 66 72 6f 6d 20 69 73 spawned from is
36e0: 20 74 68 65 20 70 61 72 65 6e 74 2e 20 4f 6e 6c the parent. Onl
36f0: 79 20 74 68 65 20 72 6f 6f 74 20 72 65 76 69 73 y the root revis
3700: 69 6f 6e 0a 20 20 20 20 23 20 20 20 20 20 20 20 ion. #
3710: 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 ; #
3720: 20 6f 66 20 6d 79 66 69 6c 65 27 73 20 72 65 76 of myfile's rev
3730: 69 73 69 6f 6e 20 74 72 65 65 20 68 61 73 20 6e ision tree has n
3740: 6f 74 68 69 6e 67 20 73 65 74 20 68 65 72 65 2e othing set here.
3750: 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 . #
3760: 20 20 20 20 20 20 20 20 20 20 3b 20 23 0a 0a 20 ; #..
3770: 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 63 68 variable mych
3780: 69 6c 64 20 20 7b 7d 20 3b 20 23 20 52 65 66 20 ild {} ; # Ref
3790: 74 6f 20 74 68 65 20 70 72 69 6d 61 72 79 20 63 to the primary c
37a0: 68 69 6c 64 20 72 65 76 69 73 69 6f 6e 20 6f 62 hild revision ob
37b0: 6a 65 63 74 2c 20 69 2e 65 2e 20 74 68 65 20 6e ject, i.e. the n
37c0: 65 78 74 0a 20 20 20 20 23 20 20 20 20 20 20 20 ext. #
37d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 ; #
37e0: 20 72 65 76 69 73 69 6f 6e 20 69 6e 20 74 68 65 revision in the
37f0: 20 73 61 6d 65 20 6c 69 6e 65 20 6f 66 20 64 65 same line of de
3800: 76 65 6c 6f 70 6d 65 6e 74 2e 0a 0a 20 20 20 20 velopment...
3810: 23 20 42 72 61 6e 63 68 20 6c 69 6e 6b 61 67 65 # Branch linkage
3820: 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f _______________
3830: 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 76 61 72 69 61 _____.. varia
3840: 62 6c 65 20 6d 79 62 72 61 6e 63 68 65 73 20 20 ble mybranches
3850: 20 20 20 7b 7d 20 3b 20 23 20 4c 69 73 74 20 6f {} ; # List o
3860: 66 20 74 68 65 20 62 72 61 6e 63 68 65 73 20 28 f the branches (
3870: 6f 62 6a 73 29 20 73 70 61 77 6e 65 64 20 62 79 objs) spawned by
3880: 20 74 68 69 73 20 72 65 76 69 73 69 6f 6e 2e 0a this revision..
3890: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 70 variable myp
38a0: 61 72 65 6e 74 62 72 61 6e 63 68 20 7b 7d 20 3b arentbranch {} ;
38b0: 20 23 20 46 6f 72 20 74 68 65 20 66 69 72 73 74 # For the first
38c0: 20 72 65 76 69 73 69 6f 6e 20 6f 6e 20 61 20 62 revision on a b
38d0: 72 61 6e 63 68 20 74 68 65 20 72 65 6c 65 76 61 ranch the releva
38e0: 6e 74 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 nt. #
38f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3900: 20 20 3b 20 23 20 62 72 61 6e 63 68 20 6f 62 6a ; # branch obj
3910: 65 63 74 2e 20 54 68 69 73 20 61 6c 73 6f 20 61 ect. This also a
3920: 6c 6c 6f 77 73 20 75 73 20 74 6f 20 64 65 74 65 llows us to dete
3930: 72 6d 69 6e 65 20 69 66 0a 20 20 20 20 23 20 20 rmine if. #
3940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3950: 20 20 20 20 20 20 20 20 3b 20 23 20 6d 79 70 61 ; # mypa
3960: 72 65 6e 74 20 69 73 20 69 6e 20 74 68 65 20 73 rent is in the s
3970: 61 6d 65 20 4c 4f 44 2c 20 6f 72 20 74 68 65 20 ame LOD, or the
3980: 72 65 76 69 73 69 6f 6e 20 74 68 65 0a 20 20 20 revision the.
3990: 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #
39a0: 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 ; #
39b0: 62 72 61 6e 63 68 20 73 70 61 77 6e 65 64 20 66 branch spawned f
39c0: 72 6f 6d 2e 0a 0a 20 20 20 20 23 20 4c 69 73 74 rom... # List
39d0: 20 6f 66 20 74 68 65 20 72 65 76 69 73 69 6f 6e of the revision
39e0: 20 6f 62 6a 65 63 74 73 20 6f 66 20 74 68 65 20 objects of the
39f0: 66 69 72 73 74 20 63 6f 6d 6d 69 74 73 20 6f 6e first commits on
3a00: 20 61 6e 79 0a 20 20 20 20 23 20 62 72 61 6e 63 any. # branc
3a10: 68 65 73 20 73 70 61 77 6e 65 64 20 62 79 20 74 hes spawned by t
3a20: 68 69 73 20 72 65 76 69 73 69 6f 6e 20 6f 6e 20 his revision on
3a30: 77 68 69 63 68 20 63 6f 6d 6d 69 74 73 20 6f 63 which commits oc
3a40: 63 75 72 72 65 64 2e 0a 20 20 20 20 23 20 54 68 curred.. # Th
3a50: 69 73 20 64 65 70 65 6e 64 65 6e 63 79 20 69 73 is dependency is
3a60: 20 6b 65 70 74 20 65 78 70 6c 69 63 69 74 6c 79 kept explicitly
3a70: 20 62 65 63 61 75 73 65 20 6f 74 68 65 72 77 69 because otherwi
3a80: 73 65 20 61 0a 20 20 20 20 23 20 72 65 76 69 73 se a. # revis
3a90: 69 6f 6e 2d 6f 6e 6c 79 20 74 6f 70 6f 6c 6f 67 ion-only topolog
3aa0: 69 63 61 6c 20 73 6f 72 74 20 77 6f 75 6c 64 20 ical sort would
3ab0: 6d 69 73 73 20 74 68 65 20 64 65 70 65 6e 64 65 miss the depende
3ac0: 6e 63 79 20 74 68 61 74 0a 20 20 20 20 23 20 65 ncy that. # e
3ad0: 78 69 73 74 73 20 76 69 61 20 2d 3e 20 6d 79 62 xists via -> myb
3ae0: 72 61 6e 63 68 65 73 2e 0a 0a 20 20 20 20 76 61 ranches... va
3af0: 72 69 61 62 6c 65 20 6d 79 62 72 61 6e 63 68 63 riable mybranchc
3b00: 68 69 6c 64 72 65 6e 20 7b 7d 20 3b 20 23 20 4c hildren {} ; # L
3b10: 69 73 74 20 6f 66 20 74 68 65 20 72 65 76 69 73 ist of the revis
3b20: 69 6f 6e 73 20 28 6f 62 6a 73 29 20 77 68 69 63 ions (objs) whic
3b30: 68 20 61 72 65 20 74 68 65 20 66 69 72 73 74 0a h are the first.
3b40: 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20 #
3b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3b60: 20 3b 20 23 20 63 6f 6d 6d 69 74 73 20 6f 6e 20 ; # commits on
3b70: 61 6e 79 20 6f 66 20 74 68 65 20 62 72 61 6e 63 any of the branc
3b80: 68 65 73 20 73 70 61 77 6e 65 64 20 66 72 6f 6d hes spawned from
3b90: 20 74 68 69 73 0a 20 20 20 20 23 20 20 20 20 20 this. #
3ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3bb0: 20 20 20 20 20 20 20 3b 20 23 20 72 65 76 69 73 ; # revis
3bc0: 69 6f 6e 2e 20 54 68 65 20 64 65 70 65 6e 64 65 ion. The depende
3bd0: 6e 63 79 20 69 73 20 6b 65 70 74 20 65 78 70 6c ncy is kept expl
3be0: 69 63 69 74 6c 79 20 74 6f 0a 20 20 20 20 23 20 icitly to. #
3bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3c00: 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 65 ; # e
3c10: 6e 73 75 72 65 20 74 68 61 74 20 61 20 72 65 76 nsure that a rev
3c20: 69 73 69 6f 6e 2d 6f 6e 6c 79 20 74 6f 70 6f 6c ision-only topol
3c30: 6f 67 69 63 61 6c 20 73 6f 72 74 20 77 69 6c 6c ogical sort will
3c40: 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 . #
3c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3c60: 20 20 3b 20 23 20 6e 6f 74 20 6d 69 73 73 20 69 ; # not miss i
3c70: 74 2c 20 61 73 20 69 74 20 6f 74 68 65 72 77 69 t, as it otherwi
3c80: 73 65 20 65 78 69 73 74 73 20 6f 6e 6c 79 20 76 se exists only v
3c90: 69 61 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 ia. #
3ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3cb0: 20 20 20 20 3b 20 23 20 6d 79 62 72 61 6e 63 68 ; # mybranch
3cc0: 65 73 2e 0a 0a 20 20 20 20 23 20 54 61 67 20 6c es... # Tag l
3cd0: 69 6e 6b 61 67 65 20 5f 5f 5f 5f 5f 5f 5f 5f 5f inkage _________
3ce0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a _______________.
3cf0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 . variable my
3d00: 74 61 67 73 20 7b 7d 20 3b 20 23 20 4c 69 73 74 tags {} ; # List
3d10: 20 6f 66 20 74 61 67 73 20 28 6f 62 6a 73 29 20 of tags (objs)
3d20: 61 73 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 associated with
3d30: 74 68 69 73 20 72 65 76 69 73 69 6f 6e 2e 0a 0a this revision...
3d40: 20 20 20 20 23 20 4d 6f 72 65 20 64 65 72 69 76 # More deriv
3d50: 65 64 20 64 61 74 61 0a 0a 20 20 20 20 76 61 72 ed data.. var
3d60: 69 61 62 6c 65 20 6d 79 6f 70 65 72 61 74 69 6f iable myoperatio
3d70: 6e 20 20 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 n {} ; #
3d80: 4f 6e 65 20 6f 66 20 27 61 64 64 27 2c 20 27 63 One of 'add', 'c
3d90: 68 61 6e 67 65 27 2c 20 27 64 65 6c 65 74 65 27 hange', 'delete'
3da0: 2c 20 6f 72 0a 09 09 09 20 20 20 20 20 20 20 20 , or....
3db0: 20 20 20 20 20 23 20 27 6e 6f 74 68 69 6e 67 27 # 'nothing'
3dc0: 2e 20 44 65 72 69 76 65 64 20 66 72 6f 6d 20 6f . Derived from o
3dd0: 75 72 20 61 6e 64 0a 09 09 09 20 20 20 20 20 20 ur and....
3de0: 20 20 20 20 20 20 20 23 20 69 74 73 20 70 61 72 # its par
3df0: 65 6e 74 27 73 20 73 74 61 74 65 2e 0a 20 20 20 ent's state..
3e00: 20 76 61 72 69 61 62 6c 65 20 6d 79 69 73 6f 6e variable myison
3e10: 64 65 66 61 75 6c 74 62 72 61 6e 63 68 20 30 20 defaultbranch 0
3e20: 3b 20 23 20 42 6f 6f 6c 65 61 6e 20 66 6c 61 67 ; # Boolean flag
3e30: 2c 20 73 65 74 20 69 66 20 74 68 65 0a 09 09 09 , set if the....
3e40: 09 20 20 20 20 20 23 20 72 65 76 69 73 69 6f 6e . # revision
3e50: 20 69 73 20 6f 6e 20 74 68 65 20 6e 6f 6e 2d 74 is on the non-t
3e60: 72 75 6e 6b 0a 09 09 09 09 20 20 20 20 20 23 20 runk..... #
3e70: 64 65 66 61 75 6c 74 20 62 72 61 6e 63 68 2c 20 default branch,
3e80: 61 6b 61 20 76 65 6e 64 6f 72 0a 09 09 09 09 20 aka vendor.....
3e90: 20 20 20 20 23 20 62 72 61 6e 63 68 2e 0a 20 20 # branch..
3ea0: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 64 62 70 variable mydbp
3eb0: 61 72 65 6e 74 20 20 20 20 20 20 20 20 20 7b 7d arent {}
3ec0: 20 3b 20 23 20 52 65 66 65 72 65 6e 63 65 20 74 ; # Reference t
3ed0: 6f 20 74 68 65 20 6c 61 73 74 20 72 65 76 69 73 o the last revis
3ee0: 69 6f 6e 0a 09 09 09 09 20 20 20 20 20 23 20 6f ion..... # o
3ef0: 6e 20 74 68 65 20 76 65 6e 64 6f 72 20 62 72 61 n the vendor bra
3f00: 6e 63 68 20 69 66 20 74 68 69 73 20 69 73 0a 09 nch if this is..
3f10: 09 09 09 20 20 20 20 20 23 20 74 68 65 20 70 72 ... # the pr
3f20: 69 6d 61 72 79 20 63 68 69 6c 64 20 6f 66 20 74 imary child of t
3f30: 68 65 0a 09 09 09 09 20 20 20 20 20 23 20 72 65 he..... # re
3f40: 67 75 6c 61 72 20 72 6f 6f 74 2e 0a 20 20 20 20 gular root..
3f50: 76 61 72 69 61 62 6c 65 20 6d 79 64 62 63 68 69 variable mydbchi
3f60: 6c 64 20 20 20 20 20 20 20 20 20 20 7b 7d 20 3b ld {} ;
3f70: 20 23 20 52 65 66 65 72 65 6e 63 65 20 74 6f 20 # Reference to
3f80: 74 68 65 20 70 72 69 6d 61 72 79 20 63 68 69 6c the primary chil
3f90: 64 0a 09 09 09 09 20 20 20 20 20 23 20 6f 66 20 d..... # of
3fa0: 74 68 65 20 72 65 67 75 6c 61 72 20 72 6f 6f 74 the regular root
3fb0: 20 69 66 20 74 68 69 73 20 69 73 0a 09 09 09 09 if this is.....
3fc0: 20 20 20 20 20 23 20 74 68 65 20 6c 61 73 74 20 # the last
3fd0: 72 65 76 69 73 69 6f 6e 20 6f 6e 20 74 68 65 20 revision on the
3fe0: 76 65 6e 64 6f 72 0a 09 09 09 09 20 20 20 20 20 vendor.....
3ff0: 23 20 62 72 61 6e 63 68 2e 0a 0a 20 20 20 20 23 # branch... #
4000: 20 64 65 61 64 28 73 65 6c 66 29 20 78 20 64 65 dead(self) x de
4010: 61 64 28 70 61 72 65 6e 74 29 20 2d 3e 20 6f 70 ad(parent) -> op
4020: 65 72 61 74 69 6f 6e 0a 20 20 20 20 74 79 70 65 eration. type
4030: 76 61 72 69 61 62 6c 65 20 6d 79 6f 70 73 74 61 variable myopsta
4040: 74 65 20 2d 61 72 72 61 79 20 7b 0a 09 7b 30 20 te -array {..{0
4050: 30 7d 20 63 68 61 6e 67 65 0a 09 7b 30 20 31 7d 0} change..{0 1}
4060: 20 64 65 6c 65 74 65 0a 09 7b 31 20 30 7d 20 61 delete..{1 0} a
4070: 64 64 0a 09 7b 31 20 31 7d 20 6e 6f 74 68 69 6e dd..{1 1} nothin
4080: 67 0a 20 20 20 20 7d 0a 0a 20 20 20 20 74 79 70 g. }.. typ
4090: 65 6d 65 74 68 6f 64 20 67 65 74 6f 70 63 6f 64 emethod getopcod
40a0: 65 73 20 7b 7d 20 7b 0a 09 66 6f 72 65 61 63 68 es {} {..foreach
40b0: 20 7b 69 64 20 6e 61 6d 65 7d 20 5b 73 74 61 74 {id name} [stat
40c0: 65 20 72 75 6e 20 7b 0a 09 20 20 20 20 53 45 4c e run {.. SEL
40d0: 45 43 54 20 6f 69 64 2c 20 6e 61 6d 65 20 46 52 ECT oid, name FR
40e0: 4f 4d 20 6f 70 74 79 70 65 3b 0a 09 7d 5d 20 7b OM optype;..}] {
40f0: 20 73 65 74 20 6d 79 6f 70 63 6f 64 65 28 24 6e set myopcode($n
4100: 61 6d 65 29 20 24 69 64 20 7d 0a 09 72 65 74 75 ame) $id }..retu
4110: 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 74 79 rn. }.. ty
4120: 70 65 76 61 72 69 61 62 6c 65 20 6d 79 6f 70 63 pevariable myopc
4130: 6f 64 65 20 2d 61 72 72 61 79 20 7b 7d 0a 0a 20 ode -array {}..
4140: 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23 23 # # ## ### ##
4150: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 ### ######## ###
4160: 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 ##########. #
4170: 23 20 49 6e 74 65 72 6e 61 6c 20 6d 65 74 68 6f # Internal metho
4180: 64 73 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 ds.. # # ## #
4190: 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 ## ##### #######
41a0: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 0a # #############.
41b0: 20 20 20 20 23 23 20 43 6f 6e 66 69 67 75 72 61 ## Configura
41c0: 74 69 6f 6e 0a 0a 20 20 20 20 70 72 61 67 6d 61 tion.. pragma
41d0: 20 2d 68 61 73 74 79 70 65 69 6e 66 6f 20 20 20 -hastypeinfo
41e0: 20 6e 6f 20 20 3b 20 23 20 6e 6f 20 74 79 70 65 no ; # no type
41f0: 20 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e 0a 20 introspection.
4200: 20 20 20 70 72 61 67 6d 61 20 2d 68 61 73 69 6e pragma -hasin
4210: 66 6f 20 20 20 20 20 20 20 20 6e 6f 20 20 3b 20 fo no ;
4220: 23 20 6e 6f 20 6f 62 6a 65 63 74 20 69 6e 74 72 # no object intr
4230: 6f 73 70 65 63 74 69 6f 6e 0a 20 20 20 20 70 72 ospection. pr
4240: 61 67 6d 61 20 2d 73 69 6d 70 6c 65 64 69 73 70 agma -simpledisp
4250: 61 74 63 68 20 79 65 73 20 3b 20 23 20 73 69 6d atch yes ; # sim
4260: 70 6c 65 20 66 61 73 74 20 64 69 73 70 61 74 63 ple fast dispatc
4270: 68 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 h.. # # ## ##
4280: 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 # ##### ########
4290: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 7d #############.}
42a0: 0a 0a 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c ..namespace eval
42b0: 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 ::vc::fossil::i
42c0: 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 mport::cvs::file
42d0: 20 7b 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 65 {. namespace
42e0: 20 65 78 70 6f 72 74 20 72 65 76 0a 20 20 20 20 export rev.
42f0: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 72 namespace eval r
4300: 65 76 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65 20 ev {..namespace
4310: 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 74 6f 6f import ::vc::too
4320: 6c 73 3a 3a 6d 69 73 63 3a 3a 2a 0a 09 6e 61 6d ls::misc::*..nam
4330: 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a espace import ::
4340: 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f vc::fossil::impo
4350: 72 74 3a 3a 63 76 73 3a 3a 73 74 61 74 65 0a 09 rt::cvs::state..
4360: 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 namespace import
4370: 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 ::vc::fossil::i
4380: 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 69 6e 74 65 mport::cvs::inte
4390: 67 72 69 74 79 0a 20 20 20 20 7d 0a 7d 0a 0a 23 grity. }.}..#
43a0: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 # ## ### #####
43b0: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 ######## #######
43c0: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 ###### #########
43d0: 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 20 ############.##
43e0: 52 65 61 64 79 0a 0a 70 61 63 6b 61 67 65 20 70 Ready..package p
43f0: 72 6f 76 69 64 65 20 76 63 3a 3a 66 6f 73 73 69 rovide vc::fossi
4400: 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a l::import::cvs::
4410: 66 69 6c 65 3a 3a 72 65 76 20 31 2e 30 0a 72 65 file::rev 1.0.re
4420: 74 75 72 6e 0a turn.