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 46 69 6c ########..## Fil
0200: 65 2c 20 70 61 72 74 20 6f 66 20 61 20 70 72 6f e, part of a pro
0210: 6a 65 63 74 2c 20 70 61 72 74 20 6f 66 20 61 20 ject, part of a
0220: 43 56 53 20 72 65 70 6f 73 69 74 6f 72 79 2e 20 CVS repository.
0230: 4d 75 6c 74 69 70 6c 65 0a 23 23 20 69 6e 73 74 Multiple.## inst
0240: 61 6e 63 65 73 20 61 72 65 20 70 6f 73 73 69 62 ances are possib
0250: 6c 65 2e 0a 0a 23 20 23 20 23 23 20 23 23 23 20 le...# # ## ###
0260: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 ##### ######## #
0270: 23 23 23 23 23 23 23 23 23 23 23 23 20 23 23 23 ############ ###
0280: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0290: 23 23 0a 23 23 20 52 65 71 75 69 72 65 6d 65 6e ##.## Requiremen
02a0: 74 73 0a 0a 70 61 63 6b 61 67 65 20 72 65 71 75 ts..package requ
02b0: 69 72 65 20 54 63 6c 20 38 2e 34 20 20 20 20 20 ire Tcl 8.4
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 3b 20 23 20 52 65 71 75 ; # Requ
02e0: 69 72 65 64 20 72 75 6e 74 69 6d 65 2e 0a 70 61 ired runtime..pa
02f0: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 73 6e ckage require sn
0300: 69 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 it
0310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0320: 20 20 3b 20 23 20 4f 4f 20 73 79 73 74 65 6d 2e ; # OO system.
0330: 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 .package require
0340: 20 73 74 72 75 63 74 3a 3a 73 65 74 20 20 20 20 struct::set
0350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0360: 20 20 20 20 20 3b 20 23 20 53 65 74 20 6f 70 65 ; # Set ope
0370: 72 61 74 69 6f 6e 73 2e 0a 70 61 63 6b 61 67 65 rations..package
0380: 20 72 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 require vc::fos
0390: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 sil::import::cvs
03a0: 3a 3a 66 69 6c 65 3a 3a 72 65 76 20 20 3b 20 23 ::file::rev ; #
03b0: 20 43 56 53 20 70 65 72 20 66 69 6c 65 20 72 65 CVS per file re
03c0: 76 69 73 69 6f 6e 73 2e 0a 70 61 63 6b 61 67 65 visions..package
03d0: 20 72 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 require vc::fos
03e0: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 sil::import::cvs
03f0: 3a 3a 66 69 6c 65 3a 3a 73 79 6d 20 20 3b 20 23 ::file::sym ; #
0400: 20 43 56 53 20 70 65 72 20 66 69 6c 65 20 73 79 CVS per file sy
0410: 6d 62 6f 6c 73 2e 0a 70 61 63 6b 61 67 65 20 72 mbols..package r
0420: 65 71 75 69 72 65 20 76 63 3a 3a 74 6f 6f 6c 73 equire vc::tools
0430: 3a 3a 74 72 6f 75 62 6c 65 20 20 20 20 20 20 20 ::trouble
0440: 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 45 ; # E
0450: 72 72 6f 72 20 72 65 70 6f 72 74 69 6e 67 2e 0a rror reporting..
0460: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 package require
0470: 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6c 6f 67 20 20 vc::tools::log
0480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0490: 20 20 20 20 3b 20 23 20 55 73 65 72 20 66 65 65 ; # User fee
04a0: 64 62 61 63 6b 0a 70 61 63 6b 61 67 65 20 72 65 dback.package re
04b0: 71 75 69 72 65 20 76 63 3a 3a 74 6f 6f 6c 73 3a quire vc::tools:
04c0: 3a 6d 69 73 63 20 20 20 20 20 20 20 20 20 20 20 :misc
04d0: 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 54 65 ; # Te
04e0: 78 74 20 66 6f 72 6d 61 74 74 69 6e 67 0a 0a 23 xt formatting..#
04f0: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 # ## ### #####
0500: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 ######## #######
0510: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 ###### #########
0520: 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 20 ############.##
0530: 0a 0a 73 6e 69 74 3a 3a 74 79 70 65 20 3a 3a 76 ..snit::type ::v
0540: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor
0550: 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 20 7b 0a 20 t::cvs::file {.
0560: 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23 23 # # ## ### ##
0570: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 ### ######## ###
0580: 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 ##########. #
0590: 23 20 50 75 62 6c 69 63 20 41 50 49 0a 0a 20 20 # Public API..
05a0: 20 20 63 6f 6e 73 74 72 75 63 74 6f 72 20 7b 70 constructor {p
05b0: 61 74 68 20 75 73 72 70 61 74 68 20 65 78 65 63 ath usrpath exec
05c0: 75 74 61 62 6c 65 20 70 72 6f 6a 65 63 74 7d 20 utable project}
05d0: 7b 0a 09 73 65 74 20 6d 79 70 61 74 68 20 20 20 {..set mypath
05e0: 20 20 20 20 24 70 61 74 68 0a 09 73 65 74 20 6d $path..set m
05f0: 79 75 73 72 70 61 74 68 20 20 20 20 24 75 73 72 yusrpath $usr
0600: 70 61 74 68 0a 09 73 65 74 20 6d 79 65 78 65 63 path..set myexec
0610: 75 74 61 62 6c 65 20 24 65 78 65 63 75 74 61 62 utable $executab
0620: 6c 65 0a 09 73 65 74 20 6d 79 70 72 6f 6a 65 63 le..set myprojec
0630: 74 20 20 20 20 24 70 72 6f 6a 65 63 74 0a 09 73 t $project..s
0640: 65 74 20 6d 79 74 72 75 6e 6b 20 20 20 20 20 20 et mytrunk
0650: 5b 24 6d 79 70 72 6f 6a 65 63 74 20 74 72 75 6e [$myproject trun
0660: 6b 5d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d k]..return. }
0670: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 70 61 74 .. method pat
0680: 68 20 20 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e h {} { return
0690: 20 24 6d 79 70 61 74 68 20 7d 0a 20 20 20 20 6d $mypath }. m
06a0: 65 74 68 6f 64 20 75 73 72 70 61 74 68 20 7b 7d ethod usrpath {}
06b0: 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 75 73 72 { return $myusr
06c0: 70 61 74 68 20 7d 0a 20 20 20 20 6d 65 74 68 6f path }. metho
06d0: 64 20 70 72 6f 6a 65 63 74 20 7b 7d 20 7b 20 72 d project {} { r
06e0: 65 74 75 72 6e 20 24 6d 79 70 72 6f 6a 65 63 74 eturn $myproject
06f0: 20 7d 0a 0a 20 20 20 20 64 65 6c 65 67 61 74 65 }.. delegate
0700: 20 6d 65 74 68 6f 64 20 63 6f 6d 6d 69 74 6d 65 method commitme
0710: 73 73 61 67 65 6f 66 20 74 6f 20 6d 79 70 72 6f ssageof to mypro
0720: 6a 65 63 74 0a 0a 20 20 20 20 23 20 23 20 23 23 ject.. # # ##
0730: 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 ### ##### #####
0740: 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 ### ############
0750: 23 0a 20 20 20 20 23 23 20 4d 65 74 68 6f 64 73 #. ## Methods
0760: 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 74 68 required for th
0770: 65 20 63 6c 61 73 73 20 74 6f 20 62 65 20 61 20 e class to be a
0780: 73 69 6e 6b 20 6f 66 20 74 68 65 20 72 63 73 20 sink of the rcs
0790: 70 61 72 73 65 72 0a 0a 20 20 20 20 23 6d 65 74 parser.. #met
07a0: 68 6f 64 20 62 65 67 69 6e 20 7b 7d 20 7b 70 75 hod begin {} {pu
07b0: 74 73 20 62 65 67 69 6e 7d 0a 20 20 20 20 23 6d ts begin}. #m
07c0: 65 74 68 6f 64 20 73 65 74 68 65 61 64 20 7b 68 ethod sethead {h
07d0: 7d 20 7b 70 75 74 73 20 68 65 61 64 3d 24 68 7d } {puts head=$h}
07e0: 0a 20 20 20 20 23 6d 65 74 68 6f 64 20 73 65 74 . #method set
07f0: 70 72 69 6e 63 69 70 61 6c 62 72 61 6e 63 68 20 principalbranch
0800: 7b 62 7d 20 7b 70 75 74 73 20 70 62 3d 24 62 7d {b} {puts pb=$b}
0810: 0a 20 20 20 20 23 6d 65 74 68 6f 64 20 64 65 66 . #method def
0820: 74 61 67 20 7b 73 20 72 7d 20 7b 70 75 74 73 20 tag {s r} {puts
0830: 24 73 3d 24 72 7d 0a 20 20 20 20 23 6d 65 74 68 $s=$r}. #meth
0840: 6f 64 20 73 65 74 63 6f 6d 6d 65 6e 74 20 7b 63 od setcomment {c
0850: 7d 20 7b 70 75 74 73 20 63 6f 6d 6d 65 6e 74 3d } {puts comment=
0860: 24 63 7d 0a 20 20 20 20 23 6d 65 74 68 6f 64 20 $c}. #method
0870: 61 64 6d 69 6e 64 6f 6e 65 20 7b 7d 20 7b 70 75 admindone {} {pu
0880: 74 73 20 61 64 6d 69 6e 64 6f 6e 65 7d 0a 20 20 ts admindone}.
0890: 20 20 23 6d 65 74 68 6f 64 20 64 65 66 20 7b 72 #method def {r
08a0: 65 76 20 64 61 74 65 20 61 75 74 68 6f 72 20 73 ev date author s
08b0: 74 61 74 65 20 6e 65 78 74 20 62 72 61 6e 63 68 tate next branch
08c0: 65 73 7d 20 7b 70 75 74 73 20 22 64 65 66 20 24 es} {puts "def $
08d0: 72 65 76 20 24 64 61 74 65 20 24 61 75 74 68 6f rev $date $autho
08e0: 72 20 24 73 74 61 74 65 20 24 6e 65 78 74 20 24 r $state $next $
08f0: 62 72 61 6e 63 68 65 73 22 7d 0a 20 20 20 20 23 branches"}. #
0900: 6d 65 74 68 6f 64 20 64 65 66 64 6f 6e 65 20 7b method defdone {
0910: 7d 20 7b 70 75 74 73 20 64 65 66 2d 64 6f 6e 65 } {puts def-done
0920: 7d 0a 20 20 20 20 23 6d 65 74 68 6f 64 20 73 65 }. #method se
0930: 74 64 65 73 63 20 7b 64 7d 20 7b 70 75 74 73 20 tdesc {d} {puts
0940: 64 65 73 63 3d 24 64 7d 0a 20 20 20 20 23 6d 65 desc=$d}. #me
0950: 74 68 6f 64 20 65 78 74 65 6e 64 20 7b 72 65 76 thod extend {rev
0960: 20 63 6f 6d 6d 69 74 6d 73 67 20 64 65 6c 74 61 commitmsg delta
0970: 72 61 6e 67 65 7d 20 7b 70 75 74 73 20 22 65 78 range} {puts "ex
0980: 74 65 6e 64 20 24 63 6f 6d 6d 69 74 6d 73 67 20 tend $commitmsg
0990: 24 64 65 6c 74 61 72 61 6e 67 65 22 7d 0a 20 20 $deltarange"}.
09a0: 20 20 23 6d 65 74 68 6f 64 20 64 6f 6e 65 20 7b #method done {
09b0: 7d 20 7b 70 75 74 73 20 64 6f 6e 65 7d 0a 0a 20 } {puts done}..
09c0: 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23 23 # # ## ### ##
09d0: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 ### ######## ###
09e0: 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 ##########. #
09f0: 23 20 50 65 72 73 69 73 74 65 6e 63 65 20 28 70 # Persistence (p
0a00: 61 73 73 20 49 49 29 0a 0a 20 20 20 20 6d 65 74 ass II).. met
0a10: 68 6f 64 20 70 65 72 73 69 73 74 20 7b 7d 20 7b hod persist {} {
0a20: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 . }.. meth
0a30: 6f 64 20 64 72 6f 70 20 7b 7d 20 7b 0a 09 66 6f od drop {} {..fo
0a40: 72 65 61 63 68 20 7b 5f 20 72 65 76 7d 20 20 20 reach {_ rev}
0a50: 20 5b 61 72 72 61 79 20 67 65 74 20 6d 79 72 65 [array get myre
0a60: 76 5d 20 20 20 20 20 20 7b 20 24 72 65 76 20 64 v] { $rev d
0a70: 65 73 74 72 6f 79 20 7d 0a 09 66 6f 72 65 61 63 estroy }..foreac
0a80: 68 20 7b 5f 20 62 72 61 6e 63 68 7d 20 5b 61 72 h {_ branch} [ar
0a90: 72 61 79 20 67 65 74 20 6d 79 62 72 61 6e 63 68 ray get mybranch
0aa0: 65 73 5d 20 7b 20 24 62 72 61 6e 63 68 20 64 65 es] { $branch de
0ab0: 73 74 72 6f 79 20 7d 0a 09 66 6f 72 65 61 63 68 stroy }..foreach
0ac0: 20 7b 5f 20 74 61 67 6c 69 73 74 7d 20 5b 61 72 {_ taglist} [ar
0ad0: 72 61 79 20 67 65 74 20 6d 79 74 61 67 73 5d 20 ray get mytags]
0ae0: 7b 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20 74 {.. foreach t
0af0: 61 67 20 24 74 61 67 6c 69 73 74 20 7b 20 24 74 ag $taglist { $t
0b00: 61 67 20 64 65 73 74 72 6f 79 20 7d 0a 09 7d 0a ag destroy }..}.
0b10: 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 .return. }..
0b20: 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23 23 # # ## ### ##
0b30: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 ### ######## ###
0b40: 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 ##########. #
0b50: 23 20 49 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 # Implement the
0b60: 73 69 6e 6b 0a 0a 20 20 20 20 6d 65 74 68 6f 64 sink.. method
0b70: 20 62 65 67 69 6e 20 7b 7d 20 7b 23 69 67 6e 6f begin {} {#igno
0b80: 72 65 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 re}.. method
0b90: 73 65 74 68 65 61 64 20 7b 72 65 76 6e 72 7d 20 sethead {revnr}
0ba0: 7b 0a 09 73 65 74 20 6d 79 68 65 61 64 72 65 76 {..set myheadrev
0bb0: 6e 72 20 24 72 65 76 6e 72 0a 09 72 65 74 75 72 nr $revnr..retur
0bc0: 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 n. }.. met
0bd0: 68 6f 64 20 73 65 74 70 72 69 6e 63 69 70 61 6c hod setprincipal
0be0: 62 72 61 6e 63 68 20 7b 62 72 61 6e 63 68 6e 72 branch {branchnr
0bf0: 7d 20 7b 0a 09 73 65 74 20 6d 79 70 72 69 6e 63 } {..set myprinc
0c00: 69 70 61 6c 20 24 62 72 61 6e 63 68 6e 72 0a 09 ipal $branchnr..
0c10: 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 return. }..
0c20: 20 20 6d 65 74 68 6f 64 20 64 65 66 74 61 67 20 method deftag
0c30: 7b 6e 61 6d 65 20 72 65 76 6e 72 7d 20 7b 0a 09 {name revnr} {..
0c40: 23 20 46 55 54 55 52 45 3a 20 50 65 72 66 6f 72 # FUTURE: Perfor
0c50: 6d 20 73 79 6d 62 6f 6c 20 74 72 61 6e 73 66 6f m symbol transfo
0c60: 72 6d 61 74 69 6f 6e 20 68 65 72 65 2e 0a 0a 09 rmation here....
0c70: 69 66 20 7b 5b 73 74 72 75 63 74 3a 3a 73 65 74 if {[struct::set
0c80: 20 63 6f 6e 74 61 69 6e 73 20 24 6d 79 73 79 6d contains $mysym
0c90: 62 6f 6c 73 20 24 6e 61 6d 65 5d 7d 20 7b 0a 09 bols $name]} {..
0ca0: 20 20 20 20 74 72 6f 75 62 6c 65 20 66 61 74 61 trouble fata
0cb0: 6c 20 22 4d 75 6c 74 69 70 6c 65 20 64 65 66 69 l "Multiple defi
0cc0: 6e 69 74 69 6f 6e 73 20 6f 66 20 74 68 65 20 73 nitions of the s
0cd0: 79 6d 62 6f 6c 20 27 24 6e 61 6d 65 27 20 69 6e ymbol '$name' in
0ce0: 20 27 24 6d 79 70 61 74 68 27 22 0a 09 20 20 20 '$mypath'"..
0cf0: 20 72 65 74 75 72 6e 0a 09 7d 0a 0a 09 73 74 72 return..}...str
0d00: 75 63 74 3a 3a 73 65 74 20 61 64 64 20 6d 79 73 uct::set add mys
0d10: 79 6d 62 6f 6c 73 20 24 6e 61 6d 65 0a 0a 09 69 ymbols $name...i
0d20: 66 20 7b 5b 72 65 76 20 69 73 62 72 61 6e 63 68 f {[rev isbranch
0d30: 72 65 76 6e 72 20 24 72 65 76 6e 72 20 2d 3e 20 revnr $revnr ->
0d40: 62 72 61 6e 63 68 6e 72 5d 7d 20 7b 0a 09 20 20 branchnr]} {..
0d50: 20 20 24 73 65 6c 66 20 41 64 64 42 72 61 6e 63 $self AddBranc
0d60: 68 20 24 6e 61 6d 65 20 24 62 72 61 6e 63 68 6e h $name $branchn
0d70: 72 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 r..} else {..
0d80: 20 24 73 65 6c 66 20 41 64 64 54 61 67 20 24 6e $self AddTag $n
0d90: 61 6d 65 20 24 72 65 76 6e 72 0a 09 7d 0a 09 72 ame $revnr..}..r
0da0: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }..
0db0: 20 6d 65 74 68 6f 64 20 73 65 74 63 6f 6d 6d 65 method setcomme
0dc0: 6e 74 20 7b 63 7d 20 7b 23 20 69 67 6e 6f 72 65 nt {c} {# ignore
0dd0: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 61 64 }.. method ad
0de0: 6d 69 6e 64 6f 6e 65 20 7b 7d 20 7b 0a 09 23 20 mindone {} {..#
0df0: 57 65 20 64 6f 20 6e 6f 74 68 69 6e 67 20 61 74 We do nothing at
0e00: 20 74 68 65 20 62 6f 75 6e 64 61 72 79 20 6f 66 the boundary of
0e10: 20 61 64 6d 69 6e 20 61 6e 64 20 72 65 76 69 73 admin and revis
0e20: 69 6f 6e 20 64 61 74 61 0a 20 20 20 20 7d 0a 0a ion data. }..
0e30: 20 20 20 20 6d 65 74 68 6f 64 20 64 65 66 20 7b method def {
0e40: 72 65 76 6e 72 20 64 61 74 65 20 61 75 74 68 6f revnr date autho
0e50: 72 20 73 74 61 74 65 20 6e 65 78 74 20 62 72 61 r state next bra
0e60: 6e 63 68 65 73 7d 20 7b 0a 09 24 73 65 6c 66 20 nches} {..$self
0e70: 52 65 63 6f 72 64 42 72 61 6e 63 68 43 6f 6d 6d RecordBranchComm
0e80: 69 74 73 20 24 62 72 61 6e 63 68 65 73 0a 0a 09 its $branches...
0e90: 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 if {[info exists
0ea0: 20 6d 79 72 65 76 28 24 72 65 76 6e 72 29 5d 7d myrev($revnr)]}
0eb0: 20 7b 0a 09 20 20 20 20 74 72 6f 75 62 6c 65 20 {.. trouble
0ec0: 66 61 74 61 6c 20 22 46 69 6c 65 20 24 6d 79 70 fatal "File $myp
0ed0: 61 74 68 20 63 6f 6e 74 61 69 6e 73 20 64 75 70 ath contains dup
0ee0: 6c 69 63 61 74 65 20 64 65 66 69 6e 69 74 69 6f licate definitio
0ef0: 6e 73 20 66 6f 72 20 72 65 76 69 73 69 6f 6e 20 ns for revision
0f00: 24 72 65 76 6e 72 2e 22 0a 09 20 20 20 20 72 65 $revnr.".. re
0f10: 74 75 72 6e 0a 09 7d 0a 0a 09 73 65 74 20 6d 79 turn..}...set my
0f20: 61 69 64 28 24 72 65 76 6e 72 29 20 5b 24 6d 79 aid($revnr) [$my
0f30: 70 72 6f 6a 65 63 74 20 64 65 66 61 75 74 68 6f project defautho
0f40: 72 20 24 61 75 74 68 6f 72 5d 0a 09 73 65 74 20 r $author]..set
0f50: 6d 79 72 65 76 28 24 72 65 76 6e 72 29 20 5b 72 myrev($revnr) [r
0f60: 65 76 20 25 41 55 54 4f 25 20 24 72 65 76 6e 72 ev %AUTO% $revnr
0f70: 20 24 64 61 74 65 20 24 73 74 61 74 65 20 24 73 $date $state $s
0f80: 65 6c 66 5d 0a 0a 09 24 73 65 6c 66 20 52 65 63 elf]...$self Rec
0f90: 6f 72 64 42 61 73 69 63 44 65 70 65 6e 64 65 6e ordBasicDependen
0fa0: 63 69 65 73 20 24 72 65 76 6e 72 20 24 6e 65 78 cies $revnr $nex
0fb0: 74 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a t..return. }.
0fc0: 0a 20 20 20 20 6d 65 74 68 6f 64 20 64 65 66 64 . method defd
0fd0: 6f 6e 65 20 7b 7d 20 7b 0a 09 23 20 54 68 69 73 one {} {..# This
0fe0: 20 69 73 20 61 6c 6c 20 64 6f 6e 65 20 61 66 74 is all done aft
0ff0: 65 72 20 74 68 65 20 72 65 76 69 73 69 6f 6e 20 er the revision
1000: 74 72 65 65 20 68 61 73 20 62 65 65 6e 20 65 78 tree has been ex
1010: 74 72 61 63 74 65 64 0a 09 23 20 66 72 6f 6d 20 tracted..# from
1020: 74 68 65 20 66 69 6c 65 2c 20 62 65 66 6f 72 65 the file, before
1030: 20 74 68 65 20 63 6f 6d 6d 69 74 20 6d 65 73 61 the commit mesa
1040: 67 65 73 20 61 6e 64 20 64 65 6c 74 61 20 74 65 ges and delta te
1050: 78 74 73 20 61 72 65 0a 09 23 20 70 72 6f 63 65 xts are..# proce
1060: 73 73 65 64 2e 0a 0a 09 24 73 65 6c 66 20 50 72 ssed....$self Pr
1070: 6f 63 65 73 73 50 72 69 6d 61 72 79 44 65 70 65 ocessPrimaryDepe
1080: 6e 64 65 6e 63 69 65 73 0a 09 24 73 65 6c 66 20 ndencies..$self
1090: 50 72 6f 63 65 73 73 42 72 61 6e 63 68 44 65 70 ProcessBranchDep
10a0: 65 6e 64 65 6e 63 69 65 73 0a 09 24 73 65 6c 66 endencies..$self
10b0: 20 53 6f 72 74 42 72 61 6e 63 68 65 73 0a 09 24 SortBranches..$
10c0: 73 65 6c 66 20 50 72 6f 63 65 73 73 54 61 67 44 self ProcessTagD
10d0: 65 70 65 6e 64 65 6e 63 69 65 73 0a 09 24 73 65 ependencies..$se
10e0: 6c 66 20 44 65 74 65 72 6d 69 6e 65 54 68 65 52 lf DetermineTheR
10f0: 6f 6f 74 52 65 76 69 73 69 6f 6e 0a 09 72 65 74 ootRevision..ret
1100: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d urn. }.. m
1110: 65 74 68 6f 64 20 73 65 74 64 65 73 63 20 7b 64 ethod setdesc {d
1120: 7d 20 7b 23 20 69 67 6e 6f 72 65 7d 0a 0a 20 20 } {# ignore}..
1130: 20 20 6d 65 74 68 6f 64 20 65 78 74 65 6e 64 20 method extend
1140: 7b 72 65 76 6e 72 20 63 6f 6d 6d 69 74 6d 73 67 {revnr commitmsg
1150: 20 74 65 78 74 72 61 6e 67 65 7d 20 7b 0a 09 73 textrange} {..s
1160: 65 74 20 63 6d 69 64 20 5b 24 6d 79 70 72 6f 6a et cmid [$myproj
1170: 65 63 74 20 64 65 66 63 6d 65 73 73 61 67 65 20 ect defcmessage
1180: 5b 73 74 72 69 6e 67 20 74 72 69 6d 20 24 63 6f [string trim $co
1190: 6d 6d 69 74 6d 73 67 5d 5d 0a 0a 09 73 65 74 20 mmitmsg]]...set
11a0: 72 65 76 20 24 6d 79 72 65 76 28 24 72 65 76 6e rev $myrev($revn
11b0: 72 29 0a 0a 09 69 66 20 7b 5b 24 72 65 76 20 68 r)...if {[$rev h
11c0: 61 73 6d 65 74 61 5d 7d 20 7b 0a 09 20 20 20 20 asmeta]} {..
11d0: 23 20 41 70 70 61 72 65 6e 74 6c 79 20 72 65 70 # Apparently rep
11e0: 6f 73 69 74 6f 72 69 65 73 20 65 78 69 73 74 20 ositories exist
11f0: 69 6e 20 77 68 69 63 68 20 74 68 65 20 64 65 6c in which the del
1200: 74 61 20 64 61 74 61 0a 09 20 20 20 20 23 20 66 ta data.. # f
1210: 6f 72 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 20 or revision 1.1
1220: 69 73 20 70 72 6f 76 69 64 65 64 20 73 65 76 65 is provided seve
1230: 72 61 6c 20 74 69 6d 65 73 2c 20 61 74 20 6c 65 ral times, at le
1240: 61 73 74 0a 09 20 20 20 20 23 20 74 77 69 63 65 ast.. # twice
1250: 2e 20 54 68 65 20 61 63 74 75 61 6c 20 63 61 75 . The actual cau
1260: 73 65 20 6f 66 20 74 68 69 73 20 64 75 70 6c 69 se of this dupli
1270: 63 61 74 69 6f 6e 20 69 73 20 6e 6f 74 0a 09 20 cation is not..
1280: 20 20 20 23 20 6b 6e 6f 77 6e 2e 20 53 70 65 63 # known. Spec
1290: 75 6c 61 74 69 6f 6e 20 63 65 6e 74 65 72 73 20 ulation centers
12a0: 6f 6e 20 52 43 53 2f 43 56 53 20 62 75 67 73 2c on RCS/CVS bugs,
12b0: 20 6f 72 20 66 72 6f 6d 0a 09 20 20 20 20 23 20 or from.. #
12c0: 6d 61 6e 75 61 6c 20 65 64 69 74 73 20 6f 66 20 manual edits of
12d0: 74 68 65 20 72 65 70 6f 73 69 74 6f 72 79 20 77 the repository w
12e0: 68 69 63 68 20 62 6f 72 6b 65 64 20 74 68 65 0a hich borked the.
12f0: 09 20 20 20 20 23 20 69 6e 74 65 72 6e 61 6c 73 . # internals
1300: 2e 20 57 68 61 74 65 76 65 72 20 74 68 65 20 63 . Whatever the c
1310: 61 75 73 65 2c 20 74 65 73 74 69 6e 67 20 73 68 ause, testing sh
1320: 6f 77 65 64 20 74 68 61 74 20 62 6f 74 68 0a 09 owed that both..
1330: 20 20 20 20 23 20 63 76 73 20 61 6e 64 20 72 63 # cvs and rc
1340: 73 20 75 73 65 20 74 68 65 20 66 69 72 73 74 20 s use the first
1350: 64 65 66 69 6e 69 74 69 6f 6e 20 77 68 65 6e 20 definition when
1360: 70 65 72 66 6f 72 6d 69 6e 67 20 61 0a 09 20 20 performing a..
1370: 20 20 23 20 63 68 65 63 6b 6f 75 74 2c 20 61 6e # checkout, an
1380: 64 20 77 65 20 66 6f 6c 6c 6f 77 20 74 68 65 69 d we follow thei
1390: 72 20 6c 65 61 64 2e 20 53 69 64 65 20 6e 6f 74 r lead. Side not
13a0: 65 73 3a 20 27 63 76 73 0a 09 20 20 20 20 23 20 es: 'cvs.. #
13b0: 6c 6f 67 27 20 66 61 69 6c 73 20 6f 6e 20 73 75 log' fails on su
13c0: 63 68 20 61 20 66 69 6c 65 2c 20 61 6e 64 20 27 ch a file, and '
13d0: 63 76 73 20 72 6c 6f 67 27 20 70 72 69 6e 74 73 cvs rlog' prints
13e0: 20 74 68 65 20 6c 6f 67 0a 09 20 20 20 20 23 20 the log.. #
13f0: 6d 65 73 73 61 67 65 20 66 72 6f 6d 20 74 68 65 message from the
1400: 20 66 69 72 73 74 20 64 65 6c 74 61 2c 20 69 67 first delta, ig
1410: 6e 6f 72 69 6e 67 20 74 68 65 20 73 65 63 6f 6e noring the secon
1420: 64 2e 0a 0a 09 20 20 20 20 6c 6f 67 20 77 72 69 d.... log wri
1430: 74 65 20 31 20 66 69 6c 65 20 22 49 6e 20 66 69 te 1 file "In fi
1440: 6c 65 20 24 6d 79 70 61 74 68 20 3a 20 44 75 70 le $mypath : Dup
1450: 6c 69 63 61 74 65 20 64 65 6c 74 61 20 64 61 74 licate delta dat
1460: 61 20 66 6f 72 20 72 65 76 69 73 69 6f 6e 20 24 a for revision $
1470: 72 65 76 6e 72 22 0a 09 20 20 20 20 6c 6f 67 20 revnr".. log
1480: 77 72 69 74 65 20 31 20 66 69 6c 65 20 22 49 67 write 1 file "Ig
1490: 6e 6f 72 69 6e 67 20 74 68 65 20 64 75 70 6c 69 noring the dupli
14a0: 63 61 74 65 22 0a 09 20 20 20 20 72 65 74 75 72 cate".. retur
14b0: 6e 0a 09 7d 0a 0a 09 23 20 44 65 74 65 72 6d 69 n..}...# Determi
14c0: 6e 65 20 74 68 65 20 6c 69 6e 65 20 6f 66 20 64 ne the line of d
14d0: 65 76 65 6c 6f 70 6d 65 6e 74 20 66 6f 72 20 74 evelopment for t
14e0: 68 65 20 72 65 76 69 73 69 6f 6e 20 28 70 72 6f he revision (pro
14f0: 6a 65 63 74 0a 09 23 20 6c 65 76 65 6c 29 2e 20 ject..# level).
1500: 54 68 69 73 20 67 69 76 65 73 20 75 73 20 74 68 This gives us th
1510: 65 20 62 72 61 6e 63 68 69 64 20 74 6f 6f 2c 20 e branchid too,
1520: 72 65 71 75 69 72 65 64 20 66 6f 72 20 74 68 65 required for the
1530: 0a 09 23 20 6d 65 74 61 20 64 61 74 61 20 67 72 ..# meta data gr
1540: 6f 75 70 20 74 68 65 20 72 65 76 69 73 69 6f 6e oup the revision
1550: 20 69 73 20 69 6e 2e 20 28 4e 6f 74 65 3a 20 42 is in. (Note: B
1560: 79 20 70 75 74 74 69 6e 67 20 62 6f 74 68 0a 09 y putting both..
1570: 23 20 62 72 61 6e 63 68 2f 6c 6f 64 20 61 6e 64 # branch/lod and
1580: 20 70 72 6f 6a 65 63 74 20 69 6e 66 6f 72 6d 61 project informa
1590: 74 69 6f 6e 20 69 6e 74 6f 20 74 68 65 20 67 72 tion into the gr
15a0: 6f 75 70 20 77 65 20 65 6e 73 75 72 65 0a 09 23 oup we ensure..#
15b0: 20 74 68 61 74 20 61 6e 79 20 63 72 6f 73 73 2d that any cross-
15c0: 70 72 6f 6a 65 63 74 20 61 6e 64 20 63 72 6f 73 project and cros
15d0: 73 2d 62 72 61 6e 63 68 20 63 6f 6d 6d 69 74 73 s-branch commits
15e0: 20 61 72 65 0a 09 23 20 73 65 70 61 72 61 74 65 are..# separate
15f0: 64 20 69 6e 74 6f 20 6d 75 6c 74 69 70 6c 65 20 d into multiple
1600: 63 6f 6d 6d 69 74 73 2c 20 6f 6e 65 20 69 6e 20 commits, one in
1610: 65 61 63 68 20 6f 66 20 74 68 65 20 70 72 6f 6a each of the proj
1620: 65 63 74 73 0a 09 23 20 61 6e 64 2f 6f 72 20 62 ects..# and/or b
1630: 72 61 6e 63 68 65 73 29 2e 0a 0a 09 73 65 74 20 ranches)....set
1640: 6c 6f 64 20 5b 24 73 65 6c 66 20 47 65 74 4c 4f lod [$self GetLO
1650: 44 20 24 72 65 76 6e 72 5d 0a 0a 09 24 72 65 76 D $revnr]...$rev
1660: 20 73 65 74 6d 65 74 61 20 5b 24 6d 79 70 72 6f setmeta [$mypro
1670: 6a 65 63 74 20 64 65 66 6d 65 74 61 20 5b 24 6c ject defmeta [$l
1680: 6f 64 20 69 64 5d 20 24 6d 79 61 69 64 28 24 72 od id] $myaid($r
1690: 65 76 6e 72 29 20 24 63 6d 69 64 5d 0a 09 24 72 evnr) $cmid]..$r
16a0: 65 76 20 73 65 74 74 65 78 74 20 24 74 65 78 74 ev settext $text
16b0: 72 61 6e 67 65 0a 09 24 72 65 76 20 73 65 74 6c range..$rev setl
16c0: 6f 64 20 20 24 6c 6f 64 0a 0a 09 23 20 49 66 20 od $lod...# If
16d0: 74 68 69 73 20 69 73 20 72 65 76 69 73 69 6f 6e this is revision
16e0: 20 31 2e 31 2c 20 77 65 20 68 61 76 65 20 74 6f 1.1, we have to
16f0: 20 64 65 74 65 72 6d 69 6e 65 20 77 68 65 74 68 determine wheth
1700: 65 72 20 74 68 65 0a 09 23 20 66 69 6c 65 20 73 er the..# file s
1710: 65 65 6d 73 20 74 6f 20 68 61 76 65 20 62 65 65 eems to have bee
1720: 6e 20 63 72 65 61 74 65 64 20 74 68 72 6f 75 67 n created throug
1730: 68 20 27 63 76 73 20 61 64 64 27 20 69 6e 73 74 h 'cvs add' inst
1740: 65 61 64 20 6f 66 0a 09 23 20 27 63 76 73 20 69 ead of..# 'cvs i
1750: 6d 70 6f 72 74 27 2e 20 54 68 69 73 20 63 61 6e mport'. This can
1760: 20 62 65 20 64 6f 6e 65 20 62 79 20 6c 6f 6f 6b be done by look
1770: 69 6e 67 20 61 74 20 74 68 65 20 75 6e 2d 0a 09 ing at the un-..
1780: 23 20 61 64 75 6c 74 65 72 61 74 65 64 20 63 6f # adulterated co
1790: 6d 6d 69 74 20 6d 65 73 73 61 67 65 2c 20 61 73 mmit message, as
17a0: 20 43 56 53 20 75 73 65 73 20 61 20 68 61 72 64 CVS uses a hard
17b0: 77 69 72 65 64 20 6d 61 67 69 63 0a 09 23 20 6d wired magic..# m
17c0: 65 73 73 61 67 65 20 66 6f 72 20 74 68 65 20 6c essage for the l
17d0: 61 74 74 65 72 2c 20 69 2e 65 2e 20 22 49 6e 69 atter, i.e. "Ini
17e0: 74 69 61 6c 20 72 65 76 69 73 69 6f 6e 5c 6e 22 tial revision\n"
17f0: 2c 20 6e 6f 0a 09 23 20 70 65 72 69 6f 64 2e 20 , no..# period.
1800: 20 28 54 68 69 73 20 66 61 63 74 20 61 6c 73 6f (This fact also
1810: 20 68 65 6c 70 73 20 75 73 20 77 68 65 6e 20 74 helps us when t
1820: 68 65 20 74 69 6d 65 20 63 6f 6d 65 73 20 74 6f he time comes to
1830: 0a 09 23 20 64 65 74 65 72 6d 69 6e 65 20 77 68 ..# determine wh
1840: 65 74 68 65 72 20 74 68 69 73 20 66 69 6c 65 20 ether this file
1850: 6d 69 67 68 74 20 68 61 76 65 20 68 61 64 20 61 might have had a
1860: 20 64 65 66 61 75 6c 74 20 62 72 61 6e 63 68 0a default branch.
1870: 09 23 20 69 6e 20 74 68 65 20 70 61 73 74 2e 29 .# in the past.)
1880: 0a 0a 09 69 66 20 7b 24 72 65 76 6e 72 20 65 71 ...if {$revnr eq
1890: 20 22 31 2e 31 22 7d 20 7b 0a 09 20 20 20 20 73 "1.1"} {.. s
18a0: 65 74 20 6d 79 69 6d 70 6f 72 74 65 64 20 5b 65 et myimported [e
18b0: 78 70 72 20 7b 24 63 6f 6d 6d 69 74 6d 73 67 20 xpr {$commitmsg
18c0: 65 71 20 22 49 6e 69 74 69 61 6c 20 72 65 76 69 eq "Initial revi
18d0: 73 69 6f 6e 5c 6e 22 7d 5d 0a 09 7d 0a 0a 09 23 sion\n"}]..}...#
18e0: 20 48 65 72 65 20 77 65 20 61 6c 73 6f 20 6b 65 Here we also ke
18f0: 65 70 20 74 72 61 63 6b 20 6f 66 20 74 68 65 20 ep track of the
1900: 6f 72 64 65 72 20 69 6e 20 77 68 69 63 68 20 74 order in which t
1910: 68 65 20 72 65 76 69 73 69 6f 6e 73 0a 09 23 20 he revisions..#
1920: 77 65 72 65 20 61 64 64 65 64 20 74 6f 20 74 68 were added to th
1930: 65 20 66 69 6c 65 2e 0a 0a 09 6c 61 70 70 65 6e e file....lappen
1940: 64 20 6d 79 72 65 76 69 73 69 6f 6e 73 20 24 72 d myrevisions $r
1950: 65 76 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d ev..return. }
1960: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 64 6f 6e .. method don
1970: 65 20 7b 7d 20 7b 0a 09 23 20 43 6f 6d 70 6c 65 e {} {..# Comple
1980: 74 65 20 74 68 65 20 72 65 76 69 73 69 6f 6e 73 te the revisions
1990: 2c 20 62 72 61 6e 63 68 65 73 2c 20 61 6e 64 20 , branches, and
19a0: 74 61 67 73 2e 20 54 68 69 73 20 69 6e 63 6c 75 tags. This inclu
19b0: 64 65 73 0a 09 23 20 6c 6f 6f 6b 69 6e 67 20 66 des..# looking f
19c0: 6f 72 20 61 20 6e 6f 6e 2d 74 72 75 6e 6b 20 64 or a non-trunk d
19d0: 65 66 61 75 6c 74 20 62 72 61 6e 63 68 2c 20 6d efault branch, m
19e0: 61 72 6b 69 6e 67 20 69 74 73 20 6d 65 6d 62 65 arking its membe
19f0: 72 73 0a 09 23 20 61 6e 64 20 6c 69 6e 6b 69 6e rs..# and linkin
1a00: 67 20 74 68 65 6d 20 69 6e 74 6f 20 74 68 65 20 g them into the
1a10: 74 72 75 6e 6b 2e 0a 0a 09 24 73 65 6c 66 20 44 trunk....$self D
1a20: 65 74 65 72 6d 69 6e 65 52 65 76 69 73 69 6f 6e etermineRevision
1a30: 4f 70 65 72 61 74 69 6f 6e 73 0a 09 24 73 65 6c Operations..$sel
1a40: 66 20 44 65 74 65 72 6d 69 6e 65 4c 69 6e 65 73 f DetermineLines
1a50: 4f 66 44 65 76 65 6c 6f 70 6d 65 6e 74 0a 09 24 OfDevelopment..$
1a60: 73 65 6c 66 20 48 61 6e 64 6c 65 4e 6f 6e 54 72 self HandleNonTr
1a70: 75 6e 6b 44 65 66 61 75 6c 74 42 72 61 6e 63 68 unkDefaultBranch
1a80: 0a 09 24 73 65 6c 66 20 52 65 6d 6f 76 65 49 72 ..$self RemoveIr
1a90: 72 65 6c 65 76 61 6e 74 44 65 6c 65 74 69 6f 6e relevantDeletion
1aa0: 73 0a 09 24 73 65 6c 66 20 52 65 6d 6f 76 65 49 s..$self RemoveI
1ab0: 6e 69 74 69 61 6c 42 72 61 6e 63 68 44 65 6c 65 nitialBranchDele
1ac0: 74 69 6f 6e 73 0a 0a 09 69 66 20 7b 5b 24 6d 79 tions...if {[$my
1ad0: 70 72 6f 6a 65 63 74 20 74 72 75 6e 6b 6f 6e 6c project trunkonl
1ae0: 79 5d 7d 20 7b 0a 09 20 20 20 20 24 73 65 6c 66 y]} {.. $self
1af0: 20 45 78 63 6c 75 64 65 4e 6f 6e 54 72 75 6e 6b ExcludeNonTrunk
1b00: 49 6e 66 6f 72 6d 61 74 69 6f 6e 0a 09 7d 0a 09 Information..}..
1b10: 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 return. }..
1b20: 20 20 23 20 23 20 23 23 20 23 23 23 20 23 23 23 # # ## ### ###
1b30: 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 ## ######## ####
1b40: 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 #########. ##
1b50: 20 53 74 61 74 65 0a 0a 20 20 20 20 76 61 72 69 State.. vari
1b60: 61 62 6c 65 20 6d 79 70 61 74 68 20 20 20 20 20 able mypath
1b70: 20 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 50 61 {} ; # Pa
1b80: 74 68 20 6f 66 20 74 68 65 20 66 69 6c 65 27 73 th of the file's
1b90: 20 72 63 73 20 61 72 63 68 69 76 65 2e 0a 20 20 rcs archive..
1ba0: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 75 73 72 variable myusr
1bb0: 70 61 74 68 20 20 20 20 20 20 20 20 20 7b 7d 20 path {}
1bc0: 3b 20 23 20 50 61 74 68 20 6f 66 20 74 68 65 20 ; # Path of the
1bd0: 66 69 6c 65 20 61 73 20 73 65 65 6e 20 62 79 20 file as seen by
1be0: 75 73 65 72 73 2e 0a 20 20 20 20 76 61 72 69 61 users.. varia
1bf0: 62 6c 65 20 6d 79 65 78 65 63 75 74 61 62 6c 65 ble myexecutable
1c00: 20 20 20 20 20 20 30 20 20 3b 20 23 20 42 6f 6f 0 ; # Boo
1c10: 6c 65 61 6e 20 66 6c 61 67 20 27 66 69 6c 65 20 lean flag 'file
1c20: 65 78 65 63 75 74 61 62 6c 65 27 2e 0a 20 20 20 executable'..
1c30: 20 76 61 72 69 61 62 6c 65 20 6d 79 70 72 6f 6a variable myproj
1c40: 65 63 74 20 20 20 20 20 20 20 20 20 7b 7d 20 3b ect {} ;
1c50: 20 23 20 52 65 66 65 72 65 6e 63 65 20 74 6f 20 # Reference to
1c60: 74 68 65 20 70 72 6f 6a 65 63 74 20 6f 62 6a 65 the project obje
1c70: 63 74 0a 09 09 09 09 20 20 20 20 23 20 74 68 65 ct..... # the
1c80: 20 66 69 6c 65 20 62 65 6c 6f 6e 67 73 20 74 6f file belongs to
1c90: 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d .. variable m
1ca0: 79 72 65 76 20 2d 61 72 72 61 79 20 20 20 20 20 yrev -array
1cb0: 20 7b 7d 20 3b 20 23 20 4d 61 70 73 20 72 65 76 {} ; # Maps rev
1cc0: 69 73 69 6f 6e 20 6e 75 6d 62 65 72 20 74 6f 20 ision number to
1cd0: 74 68 65 0a 09 09 09 09 20 20 20 20 23 20 61 73 the..... # as
1ce0: 73 6f 63 69 61 74 65 64 20 72 65 76 69 73 69 6f sociated revisio
1cf0: 6e 20 6f 62 6a 65 63 74 2e 0a 20 20 20 20 76 61 n object.. va
1d00: 72 69 61 62 6c 65 20 6d 79 72 65 76 69 73 69 6f riable myrevisio
1d10: 6e 73 20 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 ns {} ; #
1d20: 53 61 6d 65 20 61 73 20 6d 79 72 65 76 2c 20 62 Same as myrev, b
1d30: 75 74 20 61 20 6c 69 73 74 2c 0a 09 09 09 09 20 ut a list,.....
1d40: 20 20 20 23 20 67 69 76 69 6e 67 20 75 73 20 74 # giving us t
1d50: 68 65 20 6f 72 64 65 72 20 6f 66 0a 09 09 09 09 he order of.....
1d60: 20 20 20 20 23 20 72 65 76 69 73 69 6f 6e 73 2e # revisions.
1d70: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 . variable my
1d80: 61 69 64 20 20 20 20 20 20 2d 61 72 72 61 79 20 aid -array
1d90: 7b 7d 20 3b 20 23 20 4d 61 70 20 72 65 76 69 73 {} ; # Map revis
1da0: 69 6f 6e 20 6e 75 6d 62 65 72 73 20 74 6f 20 74 ion numbers to t
1db0: 68 65 20 69 64 0a 09 09 09 09 20 20 20 20 23 20 he id..... #
1dc0: 6f 66 20 74 68 65 20 61 75 74 68 6f 72 20 77 68 of the author wh
1dd0: 6f 20 63 6f 6d 6d 69 74 74 65 64 0a 09 09 09 09 o committed.....
1de0: 20 20 20 20 23 20 69 74 2e 20 54 68 69 73 20 69 # it. This i
1df0: 73 20 6c 61 74 65 72 20 61 67 67 72 65 67 61 74 s later aggregat
1e00: 65 64 0a 09 09 09 09 20 20 20 20 23 20 77 69 74 ed..... # wit
1e10: 68 20 63 6f 6d 6d 69 74 20 6d 65 73 73 61 67 65 h commit message
1e20: 2c 20 62 72 61 6e 63 68 20 6e 61 6d 65 0a 09 09 , branch name...
1e30: 09 09 20 20 20 20 23 20 61 6e 64 20 70 72 6f 6a .. # and proj
1e40: 65 63 74 20 69 64 20 66 6f 72 20 61 20 6d 65 74 ect id for a met
1e50: 61 20 69 64 2e 0a 20 20 20 20 76 61 72 69 61 62 a id.. variab
1e60: 6c 65 20 6d 79 68 65 61 64 72 65 76 6e 72 20 20 le myheadrevnr
1e70: 20 20 20 20 20 7b 7d 20 3b 20 23 20 48 65 61 64 {} ; # Head
1e80: 20 72 65 76 69 73 69 6f 6e 20 28 72 65 76 69 73 revision (revis
1e90: 69 6f 6e 20 6e 75 6d 62 65 72 29 0a 20 20 20 20 ion number).
1ea0: 76 61 72 69 61 62 6c 65 20 6d 79 70 72 69 6e 63 variable myprinc
1eb0: 69 70 61 6c 20 20 20 20 20 20 20 7b 7d 20 3b 20 ipal {} ;
1ec0: 23 20 50 72 69 6e 63 69 70 61 6c 20 62 72 61 6e # Principal bran
1ed0: 63 68 20 28 62 72 61 6e 63 68 20 6e 75 6d 62 65 ch (branch numbe
1ee0: 72 29 2e 0a 09 09 09 09 20 20 20 20 23 20 43 6f r)...... # Co
1ef0: 6e 74 72 61 72 79 20 74 6f 20 74 68 65 20 6e 61 ntrary to the na
1f00: 6d 65 20 74 68 69 73 20 69 73 20 74 68 65 0a 09 me this is the..
1f10: 09 09 09 20 20 20 20 23 20 64 65 66 61 75 6c 74 ... # default
1f20: 20 62 72 61 6e 63 68 2e 0a 20 20 20 20 76 61 72 branch.. var
1f30: 69 61 62 6c 65 20 6d 79 64 65 70 65 6e 64 65 6e iable mydependen
1f40: 63 69 65 73 20 20 20 20 7b 7d 20 3b 20 23 20 44 cies {} ; # D
1f50: 69 63 74 69 6f 6e 61 72 79 20 70 61 72 65 6e 74 ictionary parent
1f60: 20 2d 3e 20 63 68 69 6c 64 2c 0a 09 09 09 09 20 -> child,.....
1f70: 20 20 20 23 20 72 65 63 6f 72 64 73 20 70 72 69 # records pri
1f80: 6d 61 72 79 20 64 65 70 65 6e 64 65 6e 63 69 65 mary dependencie
1f90: 73 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 s.. variable
1fa0: 6d 79 69 6d 70 6f 72 74 65 64 20 20 20 20 20 20 myimported
1fb0: 20 20 30 20 20 3b 20 23 20 42 6f 6f 6c 65 61 6e 0 ; # Boolean
1fc0: 20 66 6c 61 67 2e 20 53 65 74 20 69 66 20 61 6e flag. Set if an
1fd0: 64 20 6f 6e 6c 79 20 69 66 0a 09 09 09 09 20 20 d only if.....
1fe0: 20 20 23 20 72 65 76 20 31 2e 31 20 6f 66 20 74 # rev 1.1 of t
1ff0: 68 65 20 66 69 6c 65 20 73 65 65 6d 69 6e 67 6c he file seemingl
2000: 79 0a 09 09 09 09 20 20 20 20 23 20 77 61 73 20 y..... # was
2010: 69 6d 70 6f 72 74 65 64 20 69 6e 73 74 65 61 64 imported instead
2020: 20 6f 66 20 61 64 64 65 64 0a 09 09 09 09 20 20 of added.....
2030: 20 20 23 20 6e 6f 72 6d 61 6c 6c 79 2e 0a 20 20 # normally..
2040: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 72 6f 6f variable myroo
2050: 74 20 20 20 20 20 20 20 20 20 20 20 20 7b 7d 20 t {}
2060: 3b 20 23 20 52 65 66 65 72 65 6e 63 65 20 74 6f ; # Reference to
2070: 20 74 68 65 20 72 65 76 69 73 69 6f 6e 20 6f 62 the revision ob
2080: 6a 65 63 74 0a 09 09 09 09 20 20 20 20 23 20 68 ject..... # h
2090: 6f 6c 64 69 6e 67 20 74 68 65 20 72 6f 6f 74 20 olding the root
20a0: 72 65 76 69 73 69 6f 6e 2e 20 20 49 74 73 0a 09 revision. Its..
20b0: 09 09 09 20 20 20 20 23 20 6e 75 6d 62 65 72 20 ... # number
20c0: 75 73 75 61 6c 6c 79 20 69 73 20 27 31 2e 31 27 usually is '1.1'
20d0: 2e 20 43 61 6e 20 62 65 0a 09 09 09 09 20 20 20 . Can be.....
20e0: 20 23 20 61 20 64 69 66 66 65 72 65 6e 74 20 6e # a different n
20f0: 75 6d 62 65 72 2c 20 62 65 63 61 75 73 65 20 6f umber, because o
2100: 66 0a 09 09 09 09 20 20 20 20 23 20 67 61 70 73 f..... # gaps
2110: 20 63 72 65 61 74 65 64 20 76 69 61 20 27 63 76 created via 'cv
2120: 73 61 64 6d 69 6e 20 2d 6f 27 2e 0a 20 20 20 20 sadmin -o'..
2130: 76 61 72 69 61 62 6c 65 20 6d 79 62 72 61 6e 63 variable mybranc
2140: 68 65 73 20 2d 61 72 72 61 79 20 7b 7d 20 3b 20 hes -array {} ;
2150: 23 20 4d 61 70 73 20 62 72 61 6e 63 68 20 6e 75 # Maps branch nu
2160: 6d 62 65 72 20 74 6f 20 74 68 65 20 73 79 6d 62 mber to the symb
2170: 6f 6c 0a 09 09 09 09 20 20 20 20 23 20 6f 62 6a ol..... # obj
2180: 65 63 74 20 68 61 6e 64 6c 69 6e 67 20 74 68 65 ect handling the
2190: 20 62 72 61 6e 63 68 2e 0a 20 20 20 20 76 61 72 branch.. var
21a0: 69 61 62 6c 65 20 6d 79 74 61 67 73 20 20 20 20 iable mytags
21b0: 20 2d 61 72 72 61 79 20 7b 7d 20 3b 20 23 20 4d -array {} ; # M
21c0: 61 70 73 20 72 65 76 69 73 69 6f 6e 20 6e 75 6d aps revision num
21d0: 62 65 72 20 74 6f 20 74 68 65 20 6c 69 73 74 0a ber to the list.
21e0: 09 09 09 09 20 20 20 20 23 20 6f 66 20 73 79 6d .... # of sym
21f0: 62 6f 6c 20 6f 62 6a 65 63 74 73 20 66 6f 72 20 bol objects for
2200: 74 68 65 20 74 61 67 73 0a 09 09 09 09 20 20 20 the tags.....
2210: 20 23 20 61 73 73 6f 63 69 61 74 65 64 20 77 69 # associated wi
2220: 74 68 20 74 68 65 20 72 65 76 69 73 69 6f 6e 2e th the revision.
2230: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 . variable my
2240: 73 79 6d 62 6f 6c 73 20 20 20 20 20 20 20 20 20 symbols
2250: 7b 7d 20 3b 20 23 20 53 65 74 20 6f 66 20 74 68 {} ; # Set of th
2260: 65 20 73 79 6d 62 6f 6c 20 6e 61 6d 65 73 20 66 e symbol names f
2270: 6f 75 6e 64 20 69 6e 0a 09 09 09 09 20 20 20 20 ound in.....
2280: 23 20 74 68 69 73 20 66 69 6c 65 2e 0a 0a 20 20 # this file...
2290: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 62 72 61 variable mybra
22a0: 6e 63 68 63 6e 74 20 30 20 3b 20 23 20 43 6f 75 nchcnt 0 ; # Cou
22b0: 6e 74 65 72 20 66 6f 72 20 62 72 61 6e 63 68 65 nter for branche
22c0: 73 2c 20 74 6f 20 72 65 63 6f 72 64 20 74 68 65 s, to record the
22d0: 69 72 0a 09 09 09 20 20 20 20 20 23 20 6f 72 64 ir.... # ord
22e0: 65 72 20 6f 66 20 64 65 66 69 6e 69 74 69 6f 6e er of definition
22f0: 2e 20 54 68 69 73 20 61 6c 73 6f 20 64 65 66 69 . This also defi
2300: 6e 65 73 0a 09 09 09 20 20 20 20 20 23 20 74 68 nes.... # th
2310: 65 69 72 20 6f 72 64 65 72 20 6f 66 20 63 72 65 eir order of cre
2320: 61 74 69 6f 6e 2c 20 77 68 69 63 68 20 69 73 20 ation, which is
2330: 74 68 65 0a 09 09 09 20 20 20 20 20 23 20 72 65 the.... # re
2340: 76 65 72 73 65 20 6f 66 20 64 65 66 69 6e 69 74 verse of definit
2350: 69 6f 6e 2e 20 20 49 2e 65 2e 20 61 20 73 6d 61 ion. I.e. a sma
2360: 6c 6c 65 72 0a 09 09 09 20 20 20 20 20 23 20 6e ller.... # n
2370: 75 6d 62 65 72 20 6d 65 61 6e 73 20 27 44 65 66 umber means 'Def
2380: 69 6e 65 64 20 65 61 72 6c 69 65 72 27 2c 20 6d ined earlier', m
2390: 65 61 6e 73 0a 09 09 09 20 20 20 20 20 23 20 27 eans.... # '
23a0: 43 72 65 61 74 65 64 20 6c 61 74 65 72 27 2e 0a Created later'..
23b0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 . variable my
23c0: 74 72 75 6e 6b 20 7b 7d 20 3b 20 23 20 44 69 72 trunk {} ; # Dir
23d0: 65 63 74 20 72 65 66 65 72 65 6e 63 65 20 74 6f ect reference to
23e0: 20 6d 79 70 72 6f 6a 65 63 74 20 2d 3e 20 74 72 myproject -> tr
23f0: 75 6e 6b 2e 0a 20 20 20 20 76 61 72 69 61 62 6c unk.. variabl
2400: 65 20 6d 79 72 6f 6f 74 73 20 7b 7d 20 3b 20 23 e myroots {} ; #
2410: 20 4c 69 73 74 20 6f 66 20 72 6f 6f 74 73 20 69 List of roots i
2420: 6e 20 74 68 65 20 66 6f 72 65 73 74 20 6f 66 0a n the forest of.
2430: 09 09 09 20 20 23 20 6c 6f 64 27 73 2e 20 4f 62 ... # lod's. Ob
2440: 6a 65 63 74 20 72 65 66 65 72 65 6e 63 65 73 20 ject references
2450: 74 6f 20 72 65 76 69 73 69 6f 6e 73 20 61 6e 64 to revisions and
2460: 0a 09 09 09 20 20 23 20 62 72 61 6e 63 68 65 73 .... # branches
2470: 2e 20 54 68 65 20 6c 61 74 74 65 72 20 63 61 6e . The latter can
2480: 20 61 70 70 65 61 72 20 77 68 65 6e 20 74 68 65 appear when the
2490: 79 0a 09 09 09 20 20 23 20 61 72 65 20 73 65 76 y.... # are sev
24a0: 65 72 65 64 20 66 72 6f 6d 20 74 68 65 69 72 20 ered from their
24b0: 70 61 72 65 6e 74 2e 0a 0a 20 20 20 20 23 20 23 parent... # #
24c0: 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 ## ### ##### ##
24d0: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 ###### #########
24e0: 23 23 23 23 0a 20 20 20 20 23 23 20 49 6e 74 65 ####. ## Inte
24f0: 72 6e 61 6c 20 6d 65 74 68 6f 64 73 0a 0a 20 20 rnal methods..
2500: 20 20 6d 65 74 68 6f 64 20 52 65 63 6f 72 64 42 method RecordB
2510: 72 61 6e 63 68 43 6f 6d 6d 69 74 73 20 7b 62 72 ranchCommits {br
2520: 61 6e 63 68 65 73 7d 20 7b 0a 09 66 6f 72 65 61 anches} {..forea
2530: 63 68 20 62 72 61 6e 63 68 72 65 76 6e 72 20 24 ch branchrevnr $
2540: 62 72 61 6e 63 68 65 73 20 7b 0a 09 20 20 20 20 branches {..
2550: 69 66 20 7b 5b 63 61 74 63 68 20 7b 0a 09 09 73 if {[catch {...s
2560: 65 74 20 62 72 61 6e 63 68 20 5b 24 73 65 6c 66 et branch [$self
2570: 20 52 65 76 32 42 72 61 6e 63 68 20 24 62 72 61 Rev2Branch $bra
2580: 6e 63 68 72 65 76 6e 72 5d 0a 09 20 20 20 20 7d nchrevnr].. }
2590: 5d 7d 20 7b 0a 09 09 73 65 74 20 62 72 61 6e 63 ]} {...set branc
25a0: 68 20 5b 24 73 65 6c 66 20 41 64 64 55 6e 6c 61 h [$self AddUnla
25b0: 62 65 6c 65 64 42 72 61 6e 63 68 20 5b 72 65 76 beledBranch [rev
25c0: 20 32 62 72 61 6e 63 68 6e 72 20 24 62 72 61 6e 2branchnr $bran
25d0: 63 68 72 65 76 6e 72 5d 5d 0a 09 20 20 20 20 7d chrevnr]].. }
25e0: 0a 0a 09 20 20 20 20 23 20 52 65 63 6f 72 64 20 ... # Record
25f0: 74 68 65 20 63 6f 6d 6d 69 74 2c 20 6a 75 73 74 the commit, just
2600: 20 61 73 20 72 65 76 69 73 69 6f 6e 20 6e 75 6d as revision num
2610: 62 65 72 20 66 6f 72 0a 09 20 20 20 20 23 20 6e ber for.. # n
2620: 6f 77 2e 20 50 72 6f 63 65 73 42 72 61 6e 63 68 ow. ProcesBranch
2630: 44 65 70 65 6e 64 65 6e 63 69 65 73 20 77 69 6c Dependencies wil
2640: 6c 20 65 78 74 65 6e 64 20 74 68 61 74 20 69 74 l extend that it
2650: 6f 20 61 0a 09 20 20 20 20 23 20 70 72 6f 70 65 o a.. # prope
2660: 72 20 6f 62 6a 65 63 74 20 72 65 66 65 72 65 6e r object referen
2670: 63 65 2e 0a 0a 09 20 20 20 20 24 62 72 61 6e 63 ce.... $branc
2680: 68 20 73 65 74 63 68 69 6c 64 72 65 76 6e 72 20 h setchildrevnr
2690: 24 62 72 61 6e 63 68 72 65 76 6e 72 0a 09 7d 0a $branchrevnr..}.
26a0: 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 .return. }..
26b0: 20 20 20 6d 65 74 68 6f 64 20 52 65 76 32 42 72 method Rev2Br
26c0: 61 6e 63 68 20 7b 72 65 76 6e 72 7d 20 7b 0a 09 anch {revnr} {..
26d0: 69 66 20 7b 5b 72 65 76 20 69 73 74 72 75 6e 6b if {[rev istrunk
26e0: 72 65 76 6e 72 20 24 72 65 76 6e 72 5d 7d 20 7b revnr $revnr]} {
26f0: 0a 09 20 20 20 20 74 72 6f 75 62 6c 65 20 69 6e .. trouble in
2700: 74 65 72 6e 61 6c 20 22 45 78 70 65 63 74 65 64 ternal "Expected
2710: 20 61 20 62 72 61 6e 63 68 20 72 65 76 69 73 69 a branch revisi
2720: 6f 6e 20 6e 75 6d 62 65 72 22 0a 09 7d 0a 09 72 on number"..}..r
2730: 65 74 75 72 6e 20 24 6d 79 62 72 61 6e 63 68 65 eturn $mybranche
2740: 73 28 5b 72 65 76 20 32 62 72 61 6e 63 68 6e 72 s([rev 2branchnr
2750: 20 24 72 65 76 6e 72 5d 29 0a 20 20 20 20 7d 0a $revnr]). }.
2760: 0a 20 20 20 20 6d 65 74 68 6f 64 20 41 64 64 55 . method AddU
2770: 6e 6c 61 62 65 6c 65 64 42 72 61 6e 63 68 20 7b nlabeledBranch {
2780: 62 72 61 6e 63 68 6e 72 7d 20 7b 0a 09 72 65 74 branchnr} {..ret
2790: 75 72 6e 20 5b 24 73 65 6c 66 20 41 64 64 42 72 urn [$self AddBr
27a0: 61 6e 63 68 20 75 6e 6c 61 62 65 6c 65 64 2d 24 anch unlabeled-$
27b0: 62 72 61 6e 63 68 6e 72 20 24 62 72 61 6e 63 68 branchnr $branch
27c0: 6e 72 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d nr]. }.. m
27d0: 65 74 68 6f 64 20 41 64 64 42 72 61 6e 63 68 20 ethod AddBranch
27e0: 7b 6e 61 6d 65 20 62 72 61 6e 63 68 6e 72 7d 20 {name branchnr}
27f0: 7b 0a 09 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 {..if {[info exi
2800: 73 74 73 20 6d 79 62 72 61 6e 63 68 65 73 28 24 sts mybranches($
2810: 62 72 61 6e 63 68 6e 72 29 5d 7d 20 7b 0a 09 20 branchnr)]} {..
2820: 20 20 20 6c 6f 67 20 77 72 69 74 65 20 31 20 66 log write 1 f
2830: 69 6c 65 20 22 49 6e 20 27 24 6d 79 70 61 74 68 ile "In '$mypath
2840: 27 3a 20 42 72 61 6e 63 68 20 27 24 62 72 61 6e ': Branch '$bran
2850: 63 68 6e 72 27 20 6e 61 6d 65 64 20 27 5b 24 6d chnr' named '[$m
2860: 79 62 72 61 6e 63 68 65 73 28 24 62 72 61 6e 63 ybranches($branc
2870: 68 6e 72 29 20 6e 61 6d 65 5d 27 22 0a 09 20 20 hnr) name]'"..
2880: 20 20 6c 6f 67 20 77 72 69 74 65 20 31 20 66 69 log write 1 fi
2890: 6c 65 20 22 43 61 6e 6e 6f 74 20 68 61 76 65 20 le "Cannot have
28a0: 73 65 63 6f 6e 64 20 6e 61 6d 65 20 27 24 6e 61 second name '$na
28b0: 6d 65 27 2c 20 69 67 6e 6f 72 69 6e 67 20 69 74 me', ignoring it
28c0: 22 0a 09 20 20 20 20 72 65 74 75 72 6e 0a 09 7d ".. return..}
28d0: 0a 09 73 65 74 20 62 72 61 6e 63 68 20 5b 73 79 ..set branch [sy
28e0: 6d 20 25 41 55 54 4f 25 20 62 72 61 6e 63 68 20 m %AUTO% branch
28f0: 24 62 72 61 6e 63 68 6e 72 20 5b 24 6d 79 70 72 $branchnr [$mypr
2900: 6f 6a 65 63 74 20 67 65 74 73 79 6d 62 6f 6c 20 oject getsymbol
2910: 24 6e 61 6d 65 5d 5d 0a 09 24 62 72 61 6e 63 68 $name]]..$branch
2920: 20 73 65 74 70 6f 73 69 74 69 6f 6e 20 5b 69 6e setposition [in
2930: 63 72 20 6d 79 62 72 61 6e 63 68 63 6e 74 5d 0a cr mybranchcnt].
2940: 09 73 65 74 20 6d 79 62 72 61 6e 63 68 65 73 28 .set mybranches(
2950: 24 62 72 61 6e 63 68 6e 72 29 20 24 62 72 61 6e $branchnr) $bran
2960: 63 68 0a 09 72 65 74 75 72 6e 20 24 62 72 61 6e ch..return $bran
2970: 63 68 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 ch. }.. me
2980: 74 68 6f 64 20 41 64 64 54 61 67 20 7b 6e 61 6d thod AddTag {nam
2990: 65 20 72 65 76 6e 72 7d 20 7b 0a 09 73 65 74 20 e revnr} {..set
29a0: 74 61 67 20 5b 73 79 6d 20 25 41 55 54 4f 25 20 tag [sym %AUTO%
29b0: 74 61 67 20 24 72 65 76 6e 72 20 5b 24 6d 79 70 tag $revnr [$myp
29c0: 72 6f 6a 65 63 74 20 67 65 74 73 79 6d 62 6f 6c roject getsymbol
29d0: 20 24 6e 61 6d 65 5d 5d 0a 09 6c 61 70 70 65 6e $name]]..lappen
29e0: 64 20 6d 79 74 61 67 73 28 24 72 65 76 6e 72 29 d mytags($revnr)
29f0: 20 24 74 61 67 0a 09 72 65 74 75 72 6e 20 24 74 $tag..return $t
2a00: 61 67 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 ag. }.. me
2a10: 74 68 6f 64 20 52 65 63 6f 72 64 42 61 73 69 63 thod RecordBasic
2a20: 44 65 70 65 6e 64 65 6e 63 69 65 73 20 7b 72 65 Dependencies {re
2a30: 76 6e 72 20 6e 65 78 74 7d 20 7b 0a 09 23 20 48 vnr next} {..# H
2a40: 61 6e 64 6c 65 20 74 68 65 20 72 65 76 69 73 69 andle the revisi
2a50: 6f 6e 20 64 65 70 65 6e 64 65 6e 63 69 65 73 2e on dependencies.
2a60: 20 52 65 63 6f 72 64 20 74 68 65 6d 20 66 6f 72 Record them for
2a70: 20 6e 6f 77 2c 20 64 6f 0a 09 23 20 6e 6f 74 68 now, do..# noth
2a80: 69 6e 67 20 77 69 74 68 20 74 68 65 6d 20 79 65 ing with them ye
2a90: 74 2e 0a 0a 09 23 20 4f 6e 20 74 68 65 20 74 72 t....# On the tr
2aa0: 75 6e 6b 20 74 68 65 20 27 6e 65 78 74 27 20 66 unk the 'next' f
2ab0: 69 65 6c 64 20 70 6f 69 6e 74 73 20 74 6f 20 74 ield points to t
2ac0: 68 65 20 70 72 65 76 69 6f 75 73 0a 09 23 20 72 he previous..# r
2ad0: 65 76 69 73 69 6f 6e 2c 20 69 2e 65 2e 20 74 68 evision, i.e. th
2ae0: 65 20 5f 70 61 72 65 6e 74 5f 20 6f 66 20 74 68 e _parent_ of th
2af0: 65 20 63 75 72 72 65 6e 74 20 6f 6e 65 2e 20 45 e current one. E
2b00: 78 61 6d 70 6c 65 3a 0a 09 23 20 31 2e 36 27 73 xample:..# 1.6's
2b10: 20 6e 65 78 74 20 69 73 20 31 2e 35 20 28 6d 6f next is 1.5 (mo
2b20: 64 75 6c 6f 20 63 76 73 20 61 64 6d 69 6e 20 2d dulo cvs admin -
2b30: 6f 29 2e 0a 0a 09 23 20 43 6f 6e 74 72 61 72 69 o)....# Contrari
2b40: 6c 79 20 6f 6e 20 61 20 62 72 61 6e 63 68 20 74 ly on a branch t
2b50: 68 65 20 27 6e 65 78 74 27 20 66 69 65 6c 64 20 he 'next' field
2b60: 70 6f 69 6e 74 73 20 74 6f 20 74 68 65 0a 09 23 points to the..#
2b70: 20 70 72 69 6d 61 72 79 20 5f 63 68 69 6c 64 5f primary _child_
2b80: 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 of the current
2b90: 72 65 76 69 73 69 6f 6e 2e 20 41 73 20 65 78 61 revision. As exa
2ba0: 6d 70 6c 65 2c 0a 09 23 20 31 2e 31 2e 33 2e 32 mple,..# 1.1.3.2
2bb0: 27 73 20 27 6e 65 78 74 27 20 77 69 6c 6c 20 62 's 'next' will b
2bc0: 65 20 31 2e 31 2e 33 2e 33 2e 0a 0a 09 23 20 54 e 1.1.3.3....# T
2bd0: 68 65 20 27 6e 65 78 74 27 20 66 69 65 6c 64 20 he 'next' field
2be0: 61 63 74 75 61 6c 6c 79 20 61 6c 77 61 79 73 20 actually always
2bf0: 72 65 66 65 72 73 20 74 6f 20 74 68 65 20 72 65 refers to the re
2c00: 76 69 73 69 6f 6e 0a 09 23 20 63 6f 6e 74 61 69 vision..# contai
2c10: 6e 69 6e 67 20 74 68 65 20 64 65 6c 74 61 20 6e ning the delta n
2c20: 65 65 64 65 64 20 74 6f 20 72 65 74 72 69 65 76 eeded to retriev
2c30: 65 20 74 68 61 74 20 72 65 76 69 73 69 6f 6e 2e e that revision.
2c40: 0a 0a 09 23 20 54 68 65 20 64 65 70 65 6e 64 65 ...# The depende
2c50: 6e 63 69 65 73 20 6e 65 65 64 65 64 20 68 65 72 ncies needed her
2c60: 65 20 61 72 65 20 74 68 65 20 6c 6f 67 69 63 61 e are the logica
2c70: 6c 20 73 74 72 75 63 74 75 72 65 2c 0a 09 23 20 l structure,..#
2c80: 70 61 72 65 6e 74 2f 63 68 69 6c 64 2c 20 61 6e parent/child, an
2c90: 64 20 6e 6f 74 20 74 68 65 20 69 6d 70 6c 65 6d d not the implem
2ca0: 65 6e 74 61 74 69 6f 6e 20 64 65 70 65 6e 64 65 entation depende
2cb0: 6e 74 20 64 65 6c 74 61 0a 09 23 20 70 6f 69 6e nt delta..# poin
2cc0: 74 65 72 73 2e 0a 0a 09 69 66 20 7b 24 6e 65 78 ters....if {$nex
2cd0: 74 20 65 71 20 22 22 7d 20 72 65 74 75 72 6e 0a t eq ""} return.
2ce0: 09 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .#
2cf0: 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 65 pare
2d00: 6e 74 20 2d 3e 20 63 68 69 6c 64 0a 09 69 66 20 nt -> child..if
2d10: 7b 5b 72 65 76 20 69 73 74 72 75 6e 6b 72 65 76 {[rev istrunkrev
2d20: 6e 72 20 24 72 65 76 6e 72 5d 7d 20 7b 0a 09 20 nr $revnr]} {..
2d30: 20 20 20 6c 61 70 70 65 6e 64 20 6d 79 64 65 70 lappend mydep
2d40: 65 6e 64 65 6e 63 69 65 73 20 24 6e 65 78 74 20 endencies $next
2d50: 24 72 65 76 6e 72 0a 09 7d 20 65 6c 73 65 20 7b $revnr..} else {
2d60: 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 6d 79 .. lappend my
2d70: 64 65 70 65 6e 64 65 6e 63 69 65 73 20 24 72 65 dependencies $re
2d80: 76 6e 72 20 24 6e 65 78 74 0a 09 7d 0a 09 72 65 vnr $next..}..re
2d90: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 turn. }..
2da0: 6d 65 74 68 6f 64 20 50 72 6f 63 65 73 73 50 72 method ProcessPr
2db0: 69 6d 61 72 79 44 65 70 65 6e 64 65 6e 63 69 65 imaryDependencie
2dc0: 73 20 7b 7d 20 7b 0a 09 66 6f 72 65 61 63 68 20 s {} {..foreach
2dd0: 7b 70 61 72 65 6e 74 72 65 76 6e 72 20 63 68 69 {parentrevnr chi
2de0: 6c 64 72 65 76 6e 72 7d 20 24 6d 79 64 65 70 65 ldrevnr} $mydepe
2df0: 6e 64 65 6e 63 69 65 73 20 7b 0a 09 20 20 20 20 ndencies {..
2e00: 73 65 74 20 70 61 72 65 6e 74 20 24 6d 79 72 65 set parent $myre
2e10: 76 28 24 70 61 72 65 6e 74 72 65 76 6e 72 29 0a v($parentrevnr).
2e20: 09 20 20 20 20 73 65 74 20 63 68 69 6c 64 20 20 . set child
2e30: 24 6d 79 72 65 76 28 24 63 68 69 6c 64 72 65 76 $myrev($childrev
2e40: 6e 72 29 0a 09 20 20 20 20 24 70 61 72 65 6e 74 nr).. $parent
2e50: 20 73 65 74 63 68 69 6c 64 20 24 63 68 69 6c 64 setchild $child
2e60: 0a 09 20 20 20 20 24 63 68 69 6c 64 20 73 65 74 .. $child set
2e70: 70 61 72 65 6e 74 20 24 70 61 72 65 6e 74 0a 09 parent $parent..
2e80: 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a }..return. }.
2e90: 0a 20 20 20 20 6d 65 74 68 6f 64 20 50 72 6f 63 . method Proc
2ea0: 65 73 73 42 72 61 6e 63 68 44 65 70 65 6e 64 65 essBranchDepende
2eb0: 6e 63 69 65 73 20 7b 7d 20 7b 0a 09 66 6f 72 65 ncies {} {..fore
2ec0: 61 63 68 20 7b 62 72 61 6e 63 68 6e 72 20 62 72 ach {branchnr br
2ed0: 61 6e 63 68 7d 20 5b 61 72 72 61 79 20 67 65 74 anch} [array get
2ee0: 20 6d 79 62 72 61 6e 63 68 65 73 5d 20 7b 0a 09 mybranches] {..
2ef0: 20 20 20 20 73 65 74 20 72 65 76 6e 72 20 5b 24 set revnr [$
2f00: 62 72 61 6e 63 68 20 70 61 72 65 6e 74 72 65 76 branch parentrev
2f10: 6e 72 5d 0a 0a 09 20 20 20 20 69 66 20 7b 21 5b nr]... if {![
2f20: 69 6e 66 6f 20 65 78 69 73 74 73 20 6d 79 72 65 info exists myre
2f30: 76 28 24 72 65 76 6e 72 29 5d 7d 20 7b 0a 09 09 v($revnr)]} {...
2f40: 6c 6f 67 20 77 72 69 74 65 20 31 20 66 69 6c 65 log write 1 file
2f50: 20 22 49 6e 20 27 24 6d 79 70 61 74 68 27 3a 20 "In '$mypath':
2f60: 54 68 65 20 62 72 61 6e 63 68 20 27 5b 24 62 72 The branch '[$br
2f70: 61 6e 63 68 20 6e 61 6d 65 5d 27 20 72 65 66 65 anch name]' refe
2f80: 72 65 6e 63 65 73 22 0a 09 09 6c 6f 67 20 77 72 rences"...log wr
2f90: 69 74 65 20 31 20 66 69 6c 65 20 22 74 68 65 20 ite 1 file "the
2fa0: 62 6f 67 75 73 20 72 65 76 69 73 69 6f 6e 20 27 bogus revision '
2fb0: 24 72 65 76 6e 72 27 20 61 6e 64 20 77 69 6c 6c $revnr' and will
2fc0: 20 62 65 20 69 67 6e 6f 72 65 64 2e 22 0a 09 09 be ignored."...
2fd0: 24 62 72 61 6e 63 68 20 64 65 73 74 72 6f 79 0a $branch destroy.
2fe0: 09 09 75 6e 73 65 74 20 6d 79 62 72 61 6e 63 68 ..unset mybranch
2ff0: 65 73 28 24 62 72 61 6e 63 68 6e 72 29 0a 09 20 es($branchnr)..
3000: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 73 65 } else {...se
3010: 74 20 72 65 76 20 24 6d 79 72 65 76 28 24 72 65 t rev $myrev($re
3020: 76 6e 72 29 0a 09 09 24 72 65 76 20 61 64 64 62 vnr)...$rev addb
3030: 72 61 6e 63 68 20 24 62 72 61 6e 63 68 0a 09 09 ranch $branch...
3040: 24 62 72 61 6e 63 68 20 73 65 74 70 61 72 65 6e $branch setparen
3050: 74 20 24 72 65 76 0a 0a 09 09 23 20 49 66 20 72 t $rev....# If r
3060: 65 76 69 73 69 6f 6e 73 20 77 65 72 65 20 63 6f evisions were co
3070: 6d 6d 69 74 74 65 64 20 6f 6e 20 74 68 65 20 62 mmitted on the b
3080: 72 61 6e 63 68 20 77 65 20 73 74 6f 72 65 20 61 ranch we store a
3090: 0a 09 09 23 20 72 65 66 65 72 65 6e 63 65 20 74 ...# reference t
30a0: 6f 20 74 68 65 20 62 72 61 6e 63 68 20 74 68 65 o the branch the
30b0: 72 65 2c 20 61 6e 64 20 66 75 72 74 68 65 72 20 re, and further
30c0: 64 65 63 6c 61 72 65 0a 09 09 23 20 74 68 65 20 declare...# the
30d0: 66 69 72 73 74 20 63 68 69 6c 64 27 73 20 70 61 first child's pa
30e0: 72 65 6e 74 20 74 6f 20 62 65 20 62 72 61 6e 63 rent to be branc
30f0: 68 27 73 20 70 61 72 65 6e 74 2c 20 61 6e 64 0a h's parent, and.
3100: 09 09 23 20 6c 69 73 74 20 74 68 69 73 20 63 68 ..# list this ch
3110: 69 6c 64 20 69 6e 20 74 68 65 20 70 61 72 65 6e ild in the paren
3120: 74 20 72 65 76 69 73 69 6f 6e 2e 0a 0a 09 09 69 t revision.....i
3130: 66 20 7b 5b 24 62 72 61 6e 63 68 20 68 61 73 63 f {[$branch hasc
3140: 68 69 6c 64 5d 7d 20 7b 0a 09 09 20 20 20 20 73 hild]} {... s
3150: 65 74 20 63 68 69 6c 64 72 65 76 6e 72 20 5b 24 et childrevnr [$
3160: 62 72 61 6e 63 68 20 63 68 69 6c 64 72 65 76 6e branch childrevn
3170: 72 5d 0a 09 09 20 20 20 20 73 65 74 20 63 68 69 r]... set chi
3180: 6c 64 20 24 6d 79 72 65 76 28 24 63 68 69 6c 64 ld $myrev($child
3190: 72 65 76 6e 72 29 0a 09 09 20 20 20 20 24 62 72 revnr)... $br
31a0: 61 6e 63 68 20 73 65 74 63 68 69 6c 64 20 24 63 anch setchild $c
31b0: 68 69 6c 64 0a 0a 09 09 20 20 20 20 24 63 68 69 hild.... $chi
31c0: 6c 64 20 73 65 74 70 61 72 65 6e 74 62 72 61 6e ld setparentbran
31d0: 63 68 20 24 62 72 61 6e 63 68 0a 09 09 20 20 20 ch $branch...
31e0: 20 24 63 68 69 6c 64 20 73 65 74 70 61 72 65 6e $child setparen
31f0: 74 20 20 20 20 20 20 20 24 72 65 76 0a 09 09 20 t $rev...
3200: 20 20 20 24 72 65 76 20 61 64 64 63 68 69 6c 64 $rev addchild
3210: 6f 6e 62 72 61 6e 63 68 20 24 63 68 69 6c 64 0a onbranch $child.
3220: 09 09 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 72 ..}.. }..}..r
3230: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }..
3240: 20 6d 65 74 68 6f 64 20 53 6f 72 74 42 72 61 6e method SortBran
3250: 63 68 65 73 20 7b 7d 20 7b 0a 09 66 6f 72 65 61 ches {} {..forea
3260: 63 68 20 7b 72 65 76 6e 72 20 72 65 76 7d 20 5b ch {revnr rev} [
3270: 61 72 72 61 79 20 67 65 74 20 6d 79 72 65 76 5d array get myrev]
3280: 20 7b 20 24 72 65 76 20 73 6f 72 74 62 72 61 6e { $rev sortbran
3290: 63 68 65 73 20 7d 0a 09 72 65 74 75 72 6e 0a 20 ches }..return.
32a0: 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 }.. method
32b0: 20 50 72 6f 63 65 73 73 54 61 67 44 65 70 65 6e ProcessTagDepen
32c0: 64 65 6e 63 69 65 73 20 7b 7d 20 7b 0a 09 66 6f dencies {} {..fo
32d0: 72 65 61 63 68 20 7b 72 65 76 6e 72 20 74 61 67 reach {revnr tag
32e0: 6c 69 73 74 7d 20 5b 61 72 72 61 79 20 67 65 74 list} [array get
32f0: 20 6d 79 74 61 67 73 5d 20 7b 0a 09 20 20 20 20 mytags] {..
3300: 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 if {![info exist
3310: 73 20 6d 79 72 65 76 28 24 72 65 76 6e 72 29 5d s myrev($revnr)]
3320: 7d 20 7b 0a 09 09 73 65 74 20 6e 20 5b 6c 6c 65 } {...set n [lle
3330: 6e 67 74 68 20 24 74 61 67 6c 69 73 74 5d 0a 09 ngth $taglist]..
3340: 09 6c 6f 67 20 77 72 69 74 65 20 31 20 66 69 6c .log write 1 fil
3350: 65 20 22 49 6e 20 27 24 6d 79 70 61 74 68 27 3a e "In '$mypath':
3360: 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 5b The following [
3370: 6e 73 70 20 24 6e 20 74 61 67 5d 20 72 65 66 65 nsp $n tag] refe
3380: 72 65 6e 63 65 22 0a 09 09 6c 6f 67 20 77 72 69 rence"...log wri
3390: 74 65 20 31 20 66 69 6c 65 20 22 74 68 65 20 62 te 1 file "the b
33a0: 6f 67 75 73 20 72 65 76 69 73 69 6f 6e 20 27 24 ogus revision '$
33b0: 72 65 76 6e 72 27 20 61 6e 64 20 77 69 6c 6c 20 revnr' and will
33c0: 62 65 20 69 67 6e 6f 72 65 64 2e 22 0a 09 09 66 be ignored."...f
33d0: 6f 72 65 61 63 68 20 74 61 67 20 24 74 61 67 6c oreach tag $tagl
33e0: 69 73 74 20 7b 0a 09 09 20 20 20 20 6c 6f 67 20 ist {... log
33f0: 77 72 69 74 65 20 31 20 66 69 6c 65 20 22 20 20 write 1 file "
3400: 20 20 5b 24 74 61 67 20 6e 61 6d 65 5d 22 0a 09 [$tag name]"..
3410: 09 20 20 20 20 24 74 61 67 20 64 65 73 74 72 6f . $tag destro
3420: 79 0a 09 09 7d 0a 09 09 75 6e 73 65 74 20 6d 79 y...}...unset my
3430: 74 61 67 73 28 24 72 65 76 6e 72 29 0a 09 20 20 tags($revnr)..
3440: 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 73 65 74 } else {...set
3450: 20 72 65 76 20 24 6d 79 72 65 76 28 24 72 65 76 rev $myrev($rev
3460: 6e 72 29 0a 09 09 66 6f 72 65 61 63 68 20 74 61 nr)...foreach ta
3470: 67 20 24 74 61 67 6c 69 73 74 20 7b 0a 09 09 20 g $taglist {...
3480: 20 20 20 24 72 65 76 20 61 64 64 74 61 67 20 20 $rev addtag
3490: 20 20 24 74 61 67 0a 09 09 20 20 20 20 24 74 61 $tag... $ta
34a0: 67 20 73 65 74 74 61 67 72 65 76 20 24 72 65 76 g settagrev $rev
34b0: 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 ...}.. }..}..
34c0: 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 return. }..
34d0: 20 20 6d 65 74 68 6f 64 20 44 65 74 65 72 6d 69 method Determi
34e0: 6e 65 54 68 65 52 6f 6f 74 52 65 76 69 73 69 6f neTheRootRevisio
34f0: 6e 20 7b 7d 20 7b 0a 09 23 20 54 68 65 20 72 6f n {} {..# The ro
3500: 6f 74 20 69 73 20 74 68 65 20 6f 6e 65 20 72 65 ot is the one re
3510: 76 69 73 69 6f 6e 20 77 68 69 63 68 20 68 61 73 vision which has
3520: 20 6e 6f 20 70 61 72 65 6e 74 2e 20 42 79 0a 09 no parent. By..
3530: 23 20 63 68 65 63 6b 69 6e 67 20 61 6c 6c 20 72 # checking all r
3540: 65 76 69 73 69 6f 6e 73 20 77 65 20 65 6e 73 75 evisions we ensu
3550: 72 65 20 74 68 61 74 20 77 65 20 63 61 6e 20 64 re that we can d
3560: 65 74 65 63 74 20 61 6e 64 0a 09 23 20 72 65 70 etect and..# rep
3570: 6f 72 74 20 74 68 65 20 63 61 73 65 20 6f 66 20 ort the case of
3580: 6d 75 6c 74 69 70 6c 65 20 72 6f 6f 74 73 2e 20 multiple roots.
3590: 57 69 74 68 6f 75 74 20 74 68 61 74 20 77 65 20 Without that we
35a0: 63 6f 75 6c 64 0a 09 23 20 73 69 6d 70 6c 79 20 could..# simply
35b0: 74 61 6b 65 20 6f 6e 65 20 72 65 76 69 73 69 6f take one revisio
35c0: 6e 20 61 6e 64 20 66 6f 6c 6c 6f 77 20 74 68 65 n and follow the
35d0: 20 70 61 72 65 6e 74 20 6c 69 6e 6b 73 20 74 6f parent links to
35e0: 0a 09 23 20 74 68 65 69 72 20 72 6f 6f 74 20 28 ..# their root (
35f0: 73 69 63 21 29 2e 0a 0a 09 66 6f 72 65 61 63 68 sic!)....foreach
3600: 20 7b 72 65 76 6e 72 20 72 65 76 7d 20 5b 61 72 {revnr rev} [ar
3610: 72 61 79 20 67 65 74 20 6d 79 72 65 76 5d 20 7b ray get myrev] {
3620: 0a 09 20 20 20 20 69 66 20 7b 5b 24 72 65 76 20 .. if {[$rev
3630: 68 61 73 70 61 72 65 6e 74 5d 7d 20 63 6f 6e 74 hasparent]} cont
3640: 69 6e 75 65 0a 09 20 20 20 20 69 66 20 7b 24 6d inue.. if {$m
3650: 79 72 6f 6f 74 20 6e 65 20 22 22 7d 20 7b 20 74 yroot ne ""} { t
3660: 72 6f 75 62 6c 65 20 69 6e 74 65 72 6e 61 6c 20 rouble internal
3670: 22 4d 75 6c 74 69 70 6c 65 20 72 6f 6f 74 20 72 "Multiple root r
3680: 65 76 69 73 69 6f 6e 73 20 66 6f 75 6e 64 22 20 evisions found"
3690: 7d 0a 09 20 20 20 20 73 65 74 20 6d 79 72 6f 6f }.. set myroo
36a0: 74 20 24 72 65 76 0a 09 7d 0a 0a 09 23 20 49 6e t $rev..}...# In
36b0: 20 74 68 65 20 66 75 74 75 72 65 20 77 65 20 61 the future we a
36c0: 6c 73 6f 20 6e 65 65 64 20 61 20 6c 69 73 74 2c lso need a list,
36d0: 20 61 73 20 62 72 61 6e 63 68 65 73 20 63 61 6e as branches can
36e0: 20 62 65 63 6f 6d 65 0a 09 23 20 73 65 76 65 72 become..# sever
36f0: 65 64 20 66 72 6f 6d 20 74 68 65 69 72 20 70 61 ed from their pa
3700: 72 65 6e 74 2c 20 6d 61 6b 69 6e 67 20 74 68 65 rent, making the
3710: 6d 20 74 68 65 69 72 20 6f 77 6e 20 72 6f 6f 74 m their own root
3720: 2e 0a 09 73 65 74 20 6d 79 72 6f 6f 74 73 20 5b ...set myroots [
3730: 6c 69 73 74 20 24 6d 79 72 6f 6f 74 5d 0a 09 72 list $myroot]..r
3740: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }..
3750: 20 6d 65 74 68 6f 64 20 44 65 74 65 72 6d 69 6e method Determin
3760: 65 52 65 76 69 73 69 6f 6e 4f 70 65 72 61 74 69 eRevisionOperati
3770: 6f 6e 73 20 7b 7d 20 7b 0a 09 66 6f 72 65 61 63 ons {} {..foreac
3780: 68 20 72 65 76 20 24 6d 79 72 65 76 69 73 69 6f h rev $myrevisio
3790: 6e 73 20 7b 20 24 72 65 76 20 64 65 74 65 72 6d ns { $rev determ
37a0: 69 6e 65 6f 70 65 72 61 74 69 6f 6e 20 7d 0a 09 ineoperation }..
37b0: 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 return. }..
37c0: 20 20 6d 65 74 68 6f 64 20 44 65 74 65 72 6d 69 method Determi
37d0: 6e 65 4c 69 6e 65 73 4f 66 44 65 76 65 6c 6f 70 neLinesOfDevelop
37e0: 6d 65 6e 74 20 7b 7d 20 7b 0a 09 23 20 46 6f 72 ment {} {..# For
37f0: 20 72 65 76 69 73 69 6f 6e 73 20 74 68 69 73 20 revisions this
3800: 68 61 73 20 62 65 65 6e 20 64 6f 6e 65 20 61 6c has been done al
3810: 72 65 61 64 79 2c 20 69 6e 20 27 65 78 74 65 6e ready, in 'exten
3820: 64 27 2e 20 4e 6f 77 0a 09 23 20 77 65 20 64 6f d'. Now..# we do
3830: 20 74 68 69 73 20 66 6f 72 20 74 68 65 20 62 72 this for the br
3840: 61 6e 63 68 65 73 20 61 6e 64 20 74 61 67 73 2e anches and tags.
3850: 0a 0a 09 66 6f 72 65 61 63 68 20 7b 5f 20 62 72 ...foreach {_ br
3860: 61 6e 63 68 7d 20 5b 61 72 72 61 79 20 67 65 74 anch} [array get
3870: 20 6d 79 62 72 61 6e 63 68 65 73 5d 20 7b 0a 09 mybranches] {..
3880: 20 20 20 20 24 62 72 61 6e 63 68 20 73 65 74 6c $branch setl
3890: 6f 64 20 5b 24 73 65 6c 66 20 47 65 74 4c 4f 44 od [$self GetLOD
38a0: 20 5b 24 62 72 61 6e 63 68 20 70 61 72 65 6e 74 [$branch parent
38b0: 72 65 76 6e 72 5d 5d 0a 09 7d 0a 0a 09 66 6f 72 revnr]]..}...for
38c0: 65 61 63 68 20 7b 5f 20 74 61 67 6c 69 73 74 7d each {_ taglist}
38d0: 20 5b 61 72 72 61 79 20 67 65 74 20 6d 79 74 61 [array get myta
38e0: 67 73 5d 20 7b 0a 09 20 20 20 20 66 6f 72 65 61 gs] {.. forea
38f0: 63 68 20 74 61 67 20 24 74 61 67 6c 69 73 74 20 ch tag $taglist
3900: 7b 0a 09 09 24 74 61 67 20 73 65 74 6c 6f 64 20 {...$tag setlod
3910: 5b 24 73 65 6c 66 20 47 65 74 4c 4f 44 20 5b 24 [$self GetLOD [$
3920: 74 61 67 20 74 61 67 72 65 76 6e 72 5d 5d 0a 09 tag tagrevnr]]..
3930: 20 20 20 20 7d 0a 09 7d 0a 09 72 65 74 75 72 6e }..}..return
3940: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 . }.. meth
3950: 6f 64 20 47 65 74 4c 4f 44 20 7b 72 65 76 6e 72 od GetLOD {revnr
3960: 7d 20 7b 0a 09 69 66 20 7b 5b 72 65 76 20 69 73 } {..if {[rev is
3970: 74 72 75 6e 6b 72 65 76 6e 72 20 24 72 65 76 6e trunkrevnr $revn
3980: 72 5d 7d 20 7b 0a 09 20 20 20 20 72 65 74 75 72 r]} {.. retur
3990: 6e 20 24 6d 79 74 72 75 6e 6b 0a 09 7d 20 65 6c n $mytrunk..} el
39a0: 73 65 20 7b 0a 09 20 20 20 20 72 65 74 75 72 6e se {.. return
39b0: 20 5b 24 73 65 6c 66 20 52 65 76 32 42 72 61 6e [$self Rev2Bran
39c0: 63 68 20 24 72 65 76 6e 72 5d 0a 09 7d 0a 20 20 ch $revnr]..}.
39d0: 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 }.. method
39e0: 48 61 6e 64 6c 65 4e 6f 6e 54 72 75 6e 6b 44 65 HandleNonTrunkDe
39f0: 66 61 75 6c 74 42 72 61 6e 63 68 20 7b 7d 20 7b faultBranch {} {
3a00: 0a 09 73 65 74 20 72 65 76 6c 69 73 74 20 5b 24 ..set revlist [$
3a10: 73 65 6c 66 20 4e 6f 6e 54 72 75 6e 6b 44 65 66 self NonTrunkDef
3a20: 61 75 6c 74 52 65 76 69 73 69 6f 6e 73 5d 0a 09 aultRevisions]..
3a30: 69 66 20 7b 21 5b 6c 6c 65 6e 67 74 68 20 24 72 if {![llength $r
3a40: 65 76 6c 69 73 74 5d 7d 20 72 65 74 75 72 6e 0a evlist]} return.
3a50: 0a 09 24 73 65 6c 66 20 41 64 6a 75 73 74 4e 6f ..$self AdjustNo
3a60: 6e 54 72 75 6e 6b 44 65 66 61 75 6c 74 42 72 61 nTrunkDefaultBra
3a70: 6e 63 68 20 24 72 65 76 6c 69 73 74 0a 09 24 73 nch $revlist..$s
3a80: 65 6c 66 20 43 68 65 63 6b 4c 4f 44 73 0a 09 72 elf CheckLODs..r
3a90: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }..
3aa0: 20 6d 65 74 68 6f 64 20 4e 6f 6e 54 72 75 6e 6b method NonTrunk
3ab0: 44 65 66 61 75 6c 74 52 65 76 69 73 69 6f 6e 73 DefaultRevisions
3ac0: 20 7b 7d 20 7b 0a 09 23 20 46 72 6f 6d 20 63 76 {} {..# From cv
3ad0: 73 32 73 76 6e 20 74 68 65 20 66 6f 6c 6c 6f 77 s2svn the follow
3ae0: 69 6e 67 20 65 78 70 6c 61 6e 61 74 69 6f 6e 20 ing explanation
3af0: 28 77 69 74 68 20 6d 6f 64 69 66 69 63 61 74 69 (with modificati
3b00: 6f 6e 73 0a 09 23 20 66 6f 72 20 6f 75 72 20 61 ons..# for our a
3b10: 6c 67 6f 72 69 74 68 6d 29 3a 0a 0a 09 23 20 44 lgorithm):...# D
3b20: 65 74 65 72 6d 69 6e 65 20 77 68 65 74 68 65 72 etermine whether
3b30: 20 74 68 65 72 65 20 61 72 65 20 61 6e 79 20 6e there are any n
3b40: 6f 6e 2d 74 72 75 6e 6b 20 64 65 66 61 75 6c 74 on-trunk default
3b50: 20 62 72 61 6e 63 68 0a 09 23 20 72 65 76 69 73 branch..# revis
3b60: 69 6f 6e 73 2e 0a 0a 09 23 20 49 66 20 61 20 6e ions....# If a n
3b70: 6f 6e 2d 74 72 75 6e 6b 20 64 65 66 61 75 6c 74 on-trunk default
3b80: 20 62 72 61 6e 63 68 20 69 73 20 64 65 74 65 72 branch is deter
3b90: 6d 69 6e 65 64 20 74 6f 20 68 61 76 65 20 65 78 mined to have ex
3ba0: 69 73 74 65 64 2c 0a 09 23 20 72 65 74 75 72 6e isted,..# return
3bb0: 20 61 20 6c 69 73 74 20 6f 66 20 6f 62 6a 65 63 a list of objec
3bc0: 74 73 20 66 6f 72 20 61 6c 6c 20 72 65 76 69 73 ts for all revis
3bd0: 69 6f 6e 73 20 74 68 61 74 20 77 65 72 65 20 6f ions that were o
3be0: 6e 63 65 0a 09 23 20 6e 6f 6e 2d 74 72 75 6e 6b nce..# non-trunk
3bf0: 20 64 65 66 61 75 6c 74 20 72 65 76 69 73 69 6f default revisio
3c00: 6e 73 2c 20 69 6e 20 64 65 70 65 6e 64 65 6e 63 ns, in dependenc
3c10: 79 20 6f 72 64 65 72 20 28 69 2e 65 2e 20 72 6f y order (i.e. ro
3c20: 6f 74 0a 09 23 20 66 69 72 73 74 29 2e 0a 0a 09 ot..# first)....
3c30: 23 20 54 68 65 72 65 20 61 72 65 20 74 77 6f 20 # There are two
3c40: 63 61 73 65 73 20 74 6f 20 68 61 6e 64 6c 65 3a cases to handle:
3c50: 0a 0a 09 23 20 4f 6e 65 20 63 61 73 65 20 69 73 ...# One case is
3c60: 20 73 69 6d 70 6c 65 2e 20 20 54 68 65 20 52 43 simple. The RC
3c70: 53 20 66 69 6c 65 20 6c 69 73 74 73 20 61 20 64 S file lists a d
3c80: 65 66 61 75 6c 74 20 62 72 61 6e 63 68 0a 09 23 efault branch..#
3c90: 20 65 78 70 6c 69 63 69 74 6c 79 20 69 6e 20 69 explicitly in i
3ca0: 74 73 20 68 65 61 64 65 72 2c 20 73 75 63 68 20 ts header, such
3cb0: 61 73 20 27 31 2e 31 2e 31 27 2e 20 20 49 6e 20 as '1.1.1'. In
3cc0: 74 68 69 73 20 63 61 73 65 2c 20 77 65 0a 09 23 this case, we..#
3cd0: 20 6b 6e 6f 77 20 74 68 61 74 20 65 76 65 72 79 know that every
3ce0: 20 72 65 76 69 73 69 6f 6e 20 6f 6e 20 74 68 65 revision on the
3cf0: 20 76 65 6e 64 6f 72 20 62 72 61 6e 63 68 20 69 vendor branch i
3d00: 73 20 74 6f 20 62 65 0a 09 23 20 74 72 65 61 74 s to be..# treat
3d10: 65 64 20 61 73 20 68 65 61 64 20 6f 66 20 74 72 ed as head of tr
3d20: 75 6e 6b 20 61 74 20 74 68 61 74 20 70 6f 69 6e unk at that poin
3d30: 74 20 69 6e 20 74 69 6d 65 2e 0a 0a 09 23 20 42 t in time....# B
3d40: 75 74 20 74 68 65 72 65 27 73 20 61 6c 73 6f 20 ut there's also
3d50: 61 20 64 65 67 65 6e 65 72 61 74 65 20 63 61 73 a degenerate cas
3d60: 65 2e 20 20 54 68 65 20 52 43 53 20 66 69 6c 65 e. The RCS file
3d70: 20 64 6f 65 73 20 6e 6f 74 0a 09 23 20 63 75 72 does not..# cur
3d80: 72 65 6e 74 6c 79 20 68 61 76 65 20 61 20 64 65 rently have a de
3d90: 66 61 75 6c 74 20 62 72 61 6e 63 68 2c 20 79 65 fault branch, ye
3da0: 74 20 77 65 20 63 61 6e 20 64 65 64 75 63 65 20 t we can deduce
3db0: 74 68 61 74 20 66 6f 72 0a 09 23 20 73 6f 6d 65 that for..# some
3dc0: 20 70 65 72 69 6f 64 20 69 6e 20 74 68 65 20 70 period in the p
3dd0: 61 73 74 20 69 74 20 70 72 6f 62 61 62 6c 79 20 ast it probably
3de0: 2a 64 69 64 2a 20 68 61 76 65 20 6f 6e 65 2e 20 *did* have one.
3df0: 20 46 6f 72 0a 09 23 20 65 78 61 6d 70 6c 65 2c For..# example,
3e00: 20 74 68 65 20 66 69 6c 65 20 68 61 73 20 76 65 the file has ve
3e10: 6e 64 6f 72 20 72 65 76 69 73 69 6f 6e 73 20 31 ndor revisions 1
3e20: 2e 31 2e 31 2e 31 20 2d 3e 20 31 2e 31 2e 31 2e .1.1.1 -> 1.1.1.
3e30: 39 36 2c 0a 09 23 20 61 6c 6c 20 6f 66 20 77 68 96,..# all of wh
3e40: 69 63 68 20 61 72 65 20 64 61 74 65 64 20 62 65 ich are dated be
3e50: 66 6f 72 65 20 31 2e 32 2c 20 61 6e 64 20 74 68 fore 1.2, and th
3e60: 65 6e 20 69 74 20 68 61 73 20 31 2e 31 2e 31 2e en it has 1.1.1.
3e70: 39 37 0a 09 23 20 2d 3e 20 31 2e 31 2e 31 2e 31 97..# -> 1.1.1.1
3e80: 30 30 20 64 61 74 65 64 20 61 66 74 65 72 20 31 00 dated after 1
3e90: 2e 32 2e 20 20 49 6e 20 74 68 69 73 20 63 61 73 .2. In this cas
3ea0: 65 2c 20 77 65 20 73 68 6f 75 6c 64 0a 09 23 20 e, we should..#
3eb0: 72 65 63 6f 72 64 20 31 2e 31 2e 31 2e 39 36 20 record 1.1.1.96
3ec0: 61 73 20 74 68 65 20 6c 61 73 74 20 76 65 6e 64 as the last vend
3ed0: 6f 72 20 72 65 76 69 73 69 6f 6e 20 74 6f 20 68 or revision to h
3ee0: 61 76 65 20 62 65 65 6e 20 74 68 65 0a 09 23 20 ave been the..#
3ef0: 68 65 61 64 20 6f 66 20 74 68 65 20 64 65 66 61 head of the defa
3f00: 75 6c 74 20 62 72 61 6e 63 68 2e 0a 0a 09 69 66 ult branch....if
3f10: 20 7b 24 6d 79 70 72 69 6e 63 69 70 61 6c 20 6e {$myprincipal n
3f20: 65 20 22 22 7d 20 7b 0a 09 20 20 20 20 23 20 54 e ""} {.. # T
3f30: 68 65 72 65 20 69 73 20 73 74 69 6c 6c 20 61 20 here is still a
3f40: 64 65 66 61 75 6c 74 20 62 72 61 6e 63 68 3b 20 default branch;
3f50: 74 68 61 74 20 6d 65 61 6e 73 20 74 68 61 74 20 that means that
3f60: 61 6c 6c 0a 09 20 20 20 20 23 20 72 65 76 69 73 all.. # revis
3f70: 69 6f 6e 73 20 6f 6e 20 74 68 61 74 20 62 72 61 ions on that bra
3f80: 6e 63 68 20 67 65 74 20 6d 61 72 6b 65 64 2e 0a nch get marked..
3f90: 0a 09 20 20 20 20 6c 6f 67 20 77 72 69 74 65 20 .. log write
3fa0: 35 20 66 69 6c 65 20 22 46 6f 75 6e 64 20 65 78 5 file "Found ex
3fb0: 70 6c 69 63 69 74 6c 79 20 6d 61 72 6b 65 64 20 plicitly marked
3fc0: 4e 54 44 42 22 0a 0a 09 20 20 20 20 73 65 74 20 NTDB"... set
3fd0: 72 6e 65 78 74 20 5b 24 6d 79 72 6f 6f 74 20 63 rnext [$myroot c
3fe0: 68 69 6c 64 5d 0a 09 20 20 20 20 69 66 20 7b 24 hild].. if {$
3ff0: 72 6e 65 78 74 20 6e 65 20 22 22 7d 20 7b 0a 09 rnext ne ""} {..
4000: 09 74 72 6f 75 62 6c 65 20 66 61 74 61 6c 20 22 .trouble fatal "
4010: 46 69 6c 65 20 77 69 74 68 20 64 65 66 61 75 6c File with defaul
4020: 74 20 62 72 61 6e 63 68 20 24 6d 79 70 72 69 6e t branch $myprin
4030: 63 69 70 61 6c 20 61 6c 73 6f 20 68 61 73 20 72 cipal also has r
4040: 65 76 69 73 69 6f 6e 20 5b 24 72 6e 65 78 74 20 evision [$rnext
4050: 72 65 76 6e 72 5d 22 0a 09 09 72 65 74 75 72 6e revnr]"...return
4060: 0a 09 20 20 20 20 7d 0a 0a 09 20 20 20 20 73 65 .. }... se
4070: 74 20 72 65 76 20 5b 24 6d 79 62 72 61 6e 63 68 t rev [$mybranch
4080: 65 73 28 24 6d 79 70 72 69 6e 63 69 70 61 6c 29 es($myprincipal)
4090: 20 63 68 69 6c 64 5d 0a 09 20 20 20 20 73 65 74 child].. set
40a0: 20 72 65 73 20 7b 7d 0a 0a 09 20 20 20 20 77 68 res {}... wh
40b0: 69 6c 65 20 7b 24 72 65 76 20 6e 65 20 22 22 7d ile {$rev ne ""}
40c0: 20 7b 0a 09 09 6c 61 70 70 65 6e 64 20 72 65 73 {...lappend res
40d0: 20 24 72 65 76 0a 09 09 73 65 74 20 72 65 76 20 $rev...set rev
40e0: 5b 24 72 65 76 20 63 68 69 6c 64 5d 0a 09 20 20 [$rev child]..
40f0: 20 20 7d 0a 0a 09 20 20 20 20 72 65 74 75 72 6e }... return
4100: 20 24 72 65 73 0a 0a 09 7d 20 65 6c 73 65 69 66 $res...} elseif
4110: 20 7b 24 6d 79 69 6d 70 6f 72 74 65 64 7d 20 7b {$myimported} {
4120: 0a 09 20 20 20 20 23 20 4e 6f 20 64 65 66 61 75 .. # No defau
4130: 6c 74 20 62 72 61 6e 63 68 2c 20 62 75 74 20 74 lt branch, but t
4140: 68 65 20 66 69 6c 65 20 61 70 70 65 61 72 73 20 he file appears
4150: 74 6f 20 68 61 76 65 20 62 65 65 6e 0a 09 20 20 to have been..
4160: 20 20 23 20 69 6d 70 6f 72 74 65 64 2e 20 20 53 # imported. S
4170: 6f 20 6f 75 72 20 65 64 75 63 61 74 65 64 20 67 o our educated g
4180: 75 65 73 73 20 69 73 20 74 68 61 74 20 61 6c 6c uess is that all
4190: 20 72 65 76 69 73 69 6f 6e 73 0a 09 20 20 20 20 revisions..
41a0: 23 20 6f 6e 20 74 68 65 20 27 31 2e 31 2e 31 27 # on the '1.1.1'
41b0: 20 62 72 61 6e 63 68 20 77 69 74 68 20 74 69 6d branch with tim
41c0: 65 73 74 61 6d 70 73 20 70 72 69 6f 72 20 74 6f estamps prior to
41d0: 20 74 68 65 0a 09 20 20 20 20 23 20 74 69 6d 65 the.. # time
41e0: 73 74 61 6d 70 20 6f 66 20 27 31 2e 32 27 20 77 stamp of '1.2' w
41f0: 65 72 65 20 6e 6f 6e 2d 74 72 75 6e 6b 20 64 65 ere non-trunk de
4200: 66 61 75 6c 74 20 62 72 61 6e 63 68 0a 09 20 20 fault branch..
4210: 20 20 23 20 72 65 76 69 73 69 6f 6e 73 2e 0a 09 # revisions...
4220: 20 20 20 20 0a 09 20 20 20 20 23 20 54 68 69 73 .. # This
4230: 20 72 65 61 6c 6c 79 20 6f 6e 6c 79 20 70 72 6f really only pro
4240: 63 65 73 73 65 73 20 73 74 61 6e 64 61 72 64 20 cesses standard
4250: 27 31 2e 31 2e 31 2e 2a 27 2d 73 74 79 6c 65 0a '1.1.1.*'-style.
4260: 09 20 20 20 20 23 20 76 65 6e 64 6f 72 20 72 65 . # vendor re
4270: 76 69 73 69 6f 6e 73 2e 20 20 4f 6e 65 20 63 6f visions. One co
4280: 75 6c 64 20 63 6f 6e 63 65 69 76 61 62 6c 79 20 uld conceivably
4290: 68 61 76 65 20 61 20 66 69 6c 65 0a 09 20 20 20 have a file..
42a0: 20 23 20 77 68 6f 73 65 20 64 65 66 61 75 6c 74 # whose default
42b0: 20 62 72 61 6e 63 68 20 69 73 20 31 2e 31 2e 33 branch is 1.1.3
42c0: 20 6f 72 20 77 68 61 74 65 76 65 72 2c 20 6f 72 or whatever, or
42d0: 20 77 61 73 20 74 68 61 74 0a 09 20 20 20 20 23 was that.. #
42e0: 20 61 74 20 73 6f 6d 65 20 70 6f 69 6e 74 20 69 at some point i
42f0: 6e 20 74 69 6d 65 2c 20 77 69 74 68 20 76 65 6e n time, with ven
4300: 64 6f 72 20 72 65 76 69 73 69 6f 6e 73 20 31 2e dor revisions 1.
4310: 31 2e 33 2e 31 2c 0a 09 20 20 20 20 23 20 31 2e 1.3.1,.. # 1.
4320: 31 2e 33 2e 32 2c 20 65 74 63 2e 20 20 42 75 74 1.3.2, etc. But
4330: 20 77 69 74 68 20 74 68 65 20 64 65 66 61 75 6c with the defaul
4340: 74 20 62 72 61 6e 63 68 20 67 6f 6e 65 20 6e 6f t branch gone no
4350: 77 2c 0a 09 20 20 20 20 23 20 77 65 27 64 20 68 w,.. # we'd h
4360: 61 76 65 20 6e 6f 20 62 61 73 69 73 20 66 6f 72 ave no basis for
4370: 20 61 73 73 75 6d 69 6e 67 20 74 68 61 74 20 74 assuming that t
4380: 68 65 20 6e 6f 6e 2d 73 74 61 6e 64 61 72 64 0a he non-standard.
4390: 09 20 20 20 20 23 20 76 65 6e 64 6f 72 20 62 72 . # vendor br
43a0: 61 6e 63 68 20 68 61 64 20 65 76 65 72 20 62 65 anch had ever be
43b0: 65 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 en the default b
43c0: 72 61 6e 63 68 20 61 6e 79 77 61 79 2e 0a 09 20 ranch anyway...
43d0: 20 20 20 0a 09 20 20 20 20 23 20 4e 6f 74 65 20 .. # Note
43e0: 74 68 61 74 20 77 65 20 72 65 6c 79 20 6f 6e 20 that we rely on
43f0: 63 6f 6d 70 61 72 69 73 6f 6e 73 20 62 65 74 77 comparisons betw
4400: 65 65 6e 20 74 68 65 20 74 69 6d 65 73 74 61 6d een the timestam
4410: 70 73 0a 09 20 20 20 20 23 20 6f 66 20 74 68 65 ps.. # of the
4420: 20 72 65 76 69 73 69 6f 6e 73 20 6f 6e 20 74 68 revisions on th
4430: 65 20 76 65 6e 64 6f 72 20 62 72 61 6e 63 68 20 e vendor branch
4440: 61 6e 64 20 74 68 61 74 20 6f 66 0a 09 20 20 20 and that of..
4450: 20 23 20 72 65 76 69 73 69 6f 6e 20 31 2e 32 2c # revision 1.2,
4460: 20 65 76 65 6e 20 74 68 6f 75 67 68 20 74 68 65 even though the
4470: 20 74 69 6d 65 73 74 61 6d 70 73 20 6d 69 67 68 timestamps migh
4480: 74 20 62 65 0a 09 20 20 20 20 23 20 69 6e 63 6f t be.. # inco
4490: 72 72 65 63 74 20 64 75 65 20 74 6f 20 63 6c 6f rrect due to clo
44a0: 63 6b 20 73 6b 65 77 2e 20 20 57 65 20 63 6f 75 ck skew. We cou
44b0: 6c 64 20 64 6f 20 61 20 73 6c 69 67 68 74 6c 79 ld do a slightly
44c0: 0a 09 20 20 20 20 23 20 62 65 74 74 65 72 20 6a .. # better j
44d0: 6f 62 20 69 66 20 77 65 20 75 73 65 64 20 74 68 ob if we used th
44e0: 65 20 63 68 61 6e 67 65 73 65 74 20 74 69 6d 65 e changeset time
44f0: 73 74 61 6d 70 73 2c 20 61 73 20 69 74 20 69 73 stamps, as it is
4500: 0a 09 20 20 20 20 23 20 70 6f 73 73 69 62 6c 65 .. # possible
4510: 20 74 68 61 74 20 74 68 65 20 64 65 70 65 6e 64 that the depend
4520: 65 6e 63 69 65 73 20 74 68 61 74 20 77 65 6e 74 encies that went
4530: 20 69 6e 74 6f 0a 09 20 20 20 20 23 20 64 65 74 into.. # det
4540: 65 72 6d 69 6e 69 6e 67 20 74 68 6f 73 65 20 74 ermining those t
4550: 69 6d 65 73 74 61 6d 70 73 20 61 72 65 20 6d 6f imestamps are mo
4560: 72 65 20 61 63 63 75 72 61 74 65 2e 20 20 42 75 re accurate. Bu
4570: 74 0a 09 20 20 20 20 23 20 74 68 61 74 20 77 6f t.. # that wo
4580: 75 6c 64 20 72 65 71 75 69 72 65 20 61 6e 20 65 uld require an e
4590: 78 74 72 61 20 70 61 73 73 20 6f 72 20 74 77 6f xtra pass or two
45a0: 2e 0a 0a 09 20 20 20 20 69 66 20 7b 21 5b 69 6e .... if {![in
45b0: 66 6f 20 65 78 69 73 74 73 20 6d 79 62 72 61 6e fo exists mybran
45c0: 63 68 65 73 28 31 2e 31 2e 31 29 5d 7d 20 7b 20 ches(1.1.1)]} {
45d0: 72 65 74 75 72 6e 20 7b 7d 20 7d 0a 0a 09 20 20 return {} }...
45e0: 20 20 6c 6f 67 20 77 72 69 74 65 20 35 20 66 69 log write 5 fi
45f0: 6c 65 20 22 44 65 64 75 63 65 64 20 65 78 69 73 le "Deduced exis
4600: 74 65 6e 63 65 20 6f 66 20 4e 54 44 42 22 0a 0a tence of NTDB"..
4610: 09 20 20 20 20 73 65 74 20 72 65 76 20 20 5b 24 . set rev [$
4620: 6d 79 62 72 61 6e 63 68 65 73 28 31 2e 31 2e 31 mybranches(1.1.1
4630: 29 20 63 68 69 6c 64 5d 0a 09 20 20 20 20 73 65 ) child].. se
4640: 74 20 72 65 73 20 20 7b 7d 0a 09 20 20 20 20 73 t res {}.. s
4650: 65 74 20 73 74 6f 70 20 5b 24 6d 79 72 6f 6f 74 et stop [$myroot
4660: 20 63 68 69 6c 64 5d 0a 0a 09 20 20 20 20 69 66 child]... if
4670: 20 7b 24 73 74 6f 70 20 65 71 20 22 22 7d 20 7b {$stop eq ""} {
4680: 0a 09 09 23 20 47 65 74 20 65 76 65 72 79 74 68 ...# Get everyth
4690: 69 6e 67 20 6f 6e 20 74 68 65 20 62 72 61 6e 63 ing on the branc
46a0: 68 0a 09 09 77 68 69 6c 65 20 7b 24 72 65 76 20 h...while {$rev
46b0: 6e 65 20 22 22 7d 20 7b 0a 09 09 20 20 20 20 6c ne ""} {... l
46c0: 61 70 70 65 6e 64 20 72 65 73 20 24 72 65 76 0a append res $rev.
46d0: 09 09 20 20 20 20 73 65 74 20 72 65 76 20 5b 24 .. set rev [$
46e0: 72 65 76 20 63 68 69 6c 64 5d 0a 09 09 7d 0a 09 rev child]...}..
46f0: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 09 23 } else {...#
4700: 20 43 6f 6c 6c 65 63 74 20 65 76 65 72 79 74 68 Collect everyth
4710: 69 6e 67 20 6f 6e 20 74 68 65 20 62 72 61 6e 63 ing on the branc
4720: 68 20 77 68 69 63 68 20 73 65 65 6d 73 20 74 6f h which seems to
4730: 20 68 61 76 65 0a 09 09 23 20 62 65 65 6e 20 63 have...# been c
4740: 6f 6d 6d 69 74 74 65 64 20 62 65 66 6f 72 65 20 ommitted before
4750: 74 68 65 20 66 69 72 73 74 20 70 72 69 6d 61 72 the first primar
4760: 79 20 63 68 69 6c 64 20 6f 66 20 74 68 65 0a 09 y child of the..
4770: 09 23 20 72 6f 6f 74 20 72 65 76 69 73 69 6f 6e .# root revision
4780: 2e 0a 09 09 73 65 74 20 73 74 6f 70 64 61 74 65 ....set stopdate
4790: 20 5b 24 73 74 6f 70 20 64 61 74 65 5d 0a 09 09 [$stop date]...
47a0: 77 68 69 6c 65 20 7b 24 72 65 76 20 6e 65 20 22 while {$rev ne "
47b0: 22 7d 20 7b 0a 09 09 20 20 20 20 69 66 20 7b 5b "} {... if {[
47c0: 24 72 65 76 20 64 61 74 65 5d 20 3e 3d 20 24 73 $rev date] >= $s
47d0: 74 6f 70 64 61 74 65 7d 20 62 72 65 61 6b 0a 09 topdate} break..
47e0: 09 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 . lappend res
47f0: 20 24 72 65 76 0a 09 09 20 20 20 20 73 65 74 20 $rev... set
4800: 72 65 76 20 5b 24 72 65 76 20 63 68 69 6c 64 5d rev [$rev child]
4810: 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 0a 09 20 20 ...}.. }...
4820: 20 20 72 65 74 75 72 6e 20 24 72 65 73 0a 0a 09 return $res...
4830: 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 72 65 } else {.. re
4840: 74 75 72 6e 20 7b 7d 0a 09 7d 0a 20 20 20 20 7d turn {}..}. }
4850: 0a 0a 20 20 20 20 23 20 47 65 6e 65 72 61 6c 20 .. # General
4860: 6e 6f 74 65 3a 20 49 6e 20 74 68 65 20 66 6f 6c note: In the fol
4870: 6c 6f 77 69 6e 67 20 6d 65 74 68 6f 64 73 20 77 lowing methods w
4880: 65 20 6f 6e 6c 79 20 6d 6f 64 69 66 79 20 74 68 e only modify th
4890: 65 20 6c 69 6e 6b 73 0a 20 20 20 20 23 20 62 65 e links. # be
48a0: 74 77 65 65 6e 20 72 65 76 69 73 69 6f 6e 73 20 tween revisions
48b0: 61 6e 64 20 73 79 6d 62 6f 6c 73 20 74 6f 20 72 and symbols to r
48c0: 65 73 74 72 75 63 74 75 72 65 20 74 68 65 20 72 estructure the r
48d0: 65 76 69 73 69 6f 6e 0a 20 20 20 20 23 20 74 72 evision. # tr
48e0: 65 65 2e 20 57 65 20 64 6f 20 5f 5f 6e 6f 74 5f ee. We do __not_
48f0: 5f 20 64 65 73 74 72 6f 79 20 74 68 65 20 6f 62 _ destroy the ob
4900: 6a 65 63 74 73 2e 20 47 69 76 65 6e 20 74 68 65 jects. Given the
4910: 20 63 6f 6d 70 6c 65 78 20 6c 69 6e 6b 73 0a 20 complex links.
4920: 20 20 20 23 20 47 43 20 69 73 20 64 69 66 66 69 # GC is diffi
4930: 63 75 6c 74 20 61 74 20 74 68 69 73 20 6c 65 76 cult at this lev
4940: 65 6c 2e 20 49 74 20 69 73 20 6d 75 63 68 20 65 el. It is much e
4950: 61 73 69 65 72 20 74 6f 20 64 72 6f 70 0a 20 20 asier to drop.
4960: 20 20 23 20 65 76 65 72 79 74 68 69 6e 67 20 77 # everything w
4970: 68 65 6e 20 77 65 20 77 65 20 61 72 65 20 64 6f hen we we are do
4980: 6e 65 2e 20 54 68 69 73 20 68 61 70 70 65 6e 73 ne. This happens
4990: 20 69 6e 20 27 64 72 6f 70 27 2c 20 75 73 69 6e in 'drop', usin
49a0: 67 0a 20 20 20 20 23 20 74 68 65 20 73 74 61 74 g. # the stat
49b0: 65 20 76 61 72 69 61 62 6c 65 20 27 6d 79 72 65 e variable 'myre
49c0: 76 27 2c 20 27 6d 79 62 72 61 6e 63 68 65 73 27 v', 'mybranches'
49d0: 2c 20 61 6e 64 20 27 6d 79 74 61 67 73 27 2e 20 , and 'mytags'.
49e0: 57 68 61 74 20 77 65 0a 20 20 20 20 23 20 68 61 What we. # ha
49f0: 76 65 20 74 6f 20 70 65 72 73 69 73 74 2c 20 70 ve to persist, p
4a00: 65 72 66 6f 72 6d 65 64 20 62 79 20 27 70 65 72 erformed by 'per
4a10: 73 69 73 74 27 2c 20 77 65 20 6b 6e 6f 77 20 77 sist', we know w
4a20: 69 6c 6c 20 62 65 0a 20 20 20 20 23 20 72 65 61 ill be. # rea
4a30: 63 68 61 62 6c 65 20 74 68 72 6f 75 67 68 20 74 chable through t
4a40: 68 65 20 72 65 76 69 73 69 6f 6e 73 20 6c 69 73 he revisions lis
4a50: 74 65 64 20 69 6e 20 27 6d 79 72 6f 6f 74 73 27 ted in 'myroots'
4a60: 20 61 6e 64 20 74 68 65 69 72 0a 20 20 20 20 23 and their. #
4a70: 20 63 68 69 6c 64 72 65 6e 20 61 6e 64 20 73 79 children and sy
4a80: 6d 62 6f 6c 73 2e 0a 0a 20 20 20 20 6d 65 74 68 mbols... meth
4a90: 6f 64 20 41 64 6a 75 73 74 4e 6f 6e 54 72 75 6e od AdjustNonTrun
4aa0: 6b 44 65 66 61 75 6c 74 42 72 61 6e 63 68 20 7b kDefaultBranch {
4ab0: 72 65 76 6c 69 73 74 7d 20 7b 0a 09 73 65 74 20 revlist} {..set
4ac0: 73 74 6f 70 20 5b 24 6d 79 72 6f 6f 74 20 63 68 stop [$myroot ch
4ad0: 69 6c 64 5d 20 3b 23 20 72 65 76 20 27 31 2e 32 ild] ;# rev '1.2
4ae0: 27 0a 0a 09 6c 6f 67 20 77 72 69 74 65 20 35 20 '...log write 5
4af0: 66 69 6c 65 20 22 41 64 6a 75 73 74 69 6e 67 20 file "Adjusting
4b00: 4e 54 44 42 20 63 6f 6e 74 61 69 6e 69 6e 67 20 NTDB containing
4b10: 5b 6e 73 70 20 5b 6c 6c 65 6e 67 74 68 20 24 72 [nsp [llength $r
4b20: 65 76 6c 69 73 74 5d 20 72 65 76 69 73 69 6f 6e evlist] revision
4b30: 5d 22 0a 0a 09 23 20 46 72 6f 6d 20 63 76 73 32 ]"...# From cvs2
4b40: 73 76 6e 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e svn the followin
4b50: 67 20 65 78 70 6c 61 6e 61 74 69 6f 6e 20 28 77 g explanation (w
4b60: 69 74 68 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e ith modification
4b70: 73 0a 09 23 20 66 6f 72 20 6f 75 72 20 61 6c 67 s..# for our alg
4b80: 6f 72 69 74 68 6d 29 3a 0a 0a 09 23 20 41 64 6a orithm):...# Adj
4b90: 75 73 74 20 74 68 65 20 6e 6f 6e 2d 74 72 75 6e ust the non-trun
4ba0: 6b 20 64 65 66 61 75 6c 74 20 62 72 61 6e 63 68 k default branch
4bb0: 20 72 65 76 69 73 69 6f 6e 73 20 66 6f 75 6e 64 revisions found
4bc0: 20 69 6e 20 74 68 65 0a 09 23 20 27 72 65 76 6c in the..# 'revl
4bd0: 69 73 74 27 2e 0a 0a 09 23 20 27 6d 79 69 6d 70 ist'....# 'myimp
4be0: 6f 72 74 65 64 27 20 69 73 20 61 20 62 6f 6f 6c orted' is a bool
4bf0: 65 61 6e 20 66 6c 61 67 20 69 6e 64 69 63 61 74 ean flag indicat
4c00: 69 6e 67 20 77 68 65 74 68 65 72 20 74 68 69 73 ing whether this
4c10: 20 66 69 6c 65 0a 09 23 20 61 70 70 65 61 72 73 file..# appears
4c20: 20 74 6f 20 68 61 76 65 20 62 65 65 6e 20 69 6d to have been im
4c30: 70 6f 72 74 65 64 2c 20 77 68 69 63 68 20 61 6c ported, which al
4c40: 73 6f 20 6d 65 61 6e 73 20 74 68 61 74 0a 09 23 so means that..#
4c50: 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 20 68 61 revision 1.1 ha
4c60: 73 20 61 20 67 65 6e 65 72 61 74 65 64 20 6c 6f s a generated lo
4c70: 67 20 6d 65 73 73 61 67 65 20 74 68 61 74 20 6e g message that n
4c80: 65 65 64 20 6e 6f 74 20 62 65 0a 09 23 20 70 72 eed not be..# pr
4c90: 65 73 65 72 76 65 64 2e 20 20 27 72 65 76 6c 69 eserved. 'revli
4ca0: 73 74 27 20 69 73 20 61 20 6c 69 73 74 20 6f 66 st' is a list of
4cb0: 20 6f 62 6a 65 63 74 20 72 65 66 65 72 65 6e 63 object referenc
4cc0: 65 73 20 66 6f 72 20 74 68 65 0a 09 23 20 72 65 es for the..# re
4cd0: 76 69 73 69 6f 6e 73 20 74 68 61 74 20 68 61 76 visions that hav
4ce0: 65 20 62 65 65 6e 20 64 65 74 65 72 6d 69 6e 65 e been determine
4cf0: 64 20 74 6f 20 62 65 20 6e 6f 6e 2d 74 72 75 6e d to be non-trun
4d00: 6b 20 64 65 66 61 75 6c 74 0a 09 23 20 62 72 61 k default..# bra
4d10: 6e 63 68 20 72 65 76 69 73 69 6f 6e 73 2e 0a 0a nch revisions...
4d20: 09 23 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 .# Note that the
4d30: 20 66 69 72 73 74 20 72 65 76 69 73 69 6f 6e 20 first revision
4d40: 6f 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 on the default b
4d50: 72 61 6e 63 68 20 69 73 0a 09 23 20 68 61 6e 64 ranch is..# hand
4d60: 6c 65 64 20 73 74 72 61 6e 67 65 6c 79 20 62 79 led strangely by
4d70: 20 43 56 53 2e 20 20 49 66 20 61 20 66 69 6c 65 CVS. If a file
4d80: 20 69 73 20 69 6d 70 6f 72 74 65 64 20 28 61 73 is imported (as
4d90: 20 6f 70 70 6f 73 65 64 0a 09 23 20 74 6f 20 62 opposed..# to b
4da0: 65 69 6e 67 20 61 64 64 65 64 29 2c 20 43 56 53 eing added), CVS
4db0: 20 63 72 65 61 74 65 73 20 61 20 31 2e 31 20 72 creates a 1.1 r
4dc0: 65 76 69 73 69 6f 6e 2c 20 74 68 65 6e 20 63 72 evision, then cr
4dd0: 65 61 74 65 73 20 61 0a 09 23 20 76 65 6e 64 6f eates a..# vendo
4de0: 72 20 62 72 61 6e 63 68 20 31 2e 31 2e 31 20 62 r branch 1.1.1 b
4df0: 61 73 65 64 20 6f 6e 20 31 2e 31 2c 20 74 68 65 ased on 1.1, the
4e00: 6e 20 63 72 65 61 74 65 73 20 61 20 31 2e 31 2e n creates a 1.1.
4e10: 31 2e 31 0a 09 23 20 72 65 76 69 73 69 6f 6e 20 1.1..# revision
4e20: 74 68 61 74 20 69 73 20 69 64 65 6e 74 69 63 61 that is identica
4e30: 6c 20 74 6f 20 74 68 65 20 31 2e 31 20 72 65 76 l to the 1.1 rev
4e40: 69 73 69 6f 6e 20 28 69 2e 65 2e 2c 20 69 74 73 ision (i.e., its
4e50: 0a 09 23 20 64 65 6c 74 61 74 65 78 74 20 69 73 ..# deltatext is
4e60: 20 65 6d 70 74 79 29 2e 20 20 54 68 65 20 6c 6f empty). The lo
4e70: 67 20 6d 65 73 73 61 67 65 20 74 68 61 74 20 74 g message that t
4e80: 68 65 20 75 73 65 72 20 74 79 70 65 64 0a 09 23 he user typed..#
4e90: 20 77 68 65 6e 20 69 6d 70 6f 72 74 69 6e 67 20 when importing
4ea0: 69 73 20 73 74 6f 72 65 64 20 77 69 74 68 20 74 is stored with t
4eb0: 68 65 20 31 2e 31 2e 31 2e 31 20 72 65 76 69 73 he 1.1.1.1 revis
4ec0: 69 6f 6e 2e 20 20 54 68 65 20 31 2e 31 0a 09 23 ion. The 1.1..#
4ed0: 20 72 65 76 69 73 69 6f 6e 20 61 6c 77 61 79 73 revision always
4ee0: 20 63 6f 6e 74 61 69 6e 73 20 61 20 73 74 61 6e contains a stan
4ef0: 64 61 72 64 2c 20 67 65 6e 65 72 61 74 65 64 20 dard, generated
4f00: 6c 6f 67 20 6d 65 73 73 61 67 65 2c 0a 09 23 20 log message,..#
4f10: 27 49 6e 69 74 69 61 6c 20 72 65 76 69 73 69 6f 'Initial revisio
4f20: 6e 5c 6e 27 2e 0a 0a 09 23 20 57 68 65 6e 20 77 n\n'....# When w
4f30: 65 20 64 65 74 65 63 74 20 61 20 73 74 72 61 69 e detect a strai
4f40: 67 68 74 66 6f 72 77 61 72 64 20 69 6d 70 6f 72 ghtforward impor
4f50: 74 20 6c 69 6b 65 20 74 68 69 73 2c 20 77 65 20 t like this, we
4f60: 77 61 6e 74 0a 09 23 20 74 6f 20 68 61 6e 64 6c want..# to handl
4f70: 65 20 69 74 20 62 79 20 64 65 6c 65 74 69 6e 67 e it by deleting
4f80: 20 74 68 65 20 31 2e 31 20 72 65 76 69 73 69 6f the 1.1 revisio
4f90: 6e 20 28 77 68 69 63 68 20 64 6f 65 73 6e 27 74 n (which doesn't
4fa0: 0a 09 23 20 63 6f 6e 74 61 69 6e 20 61 6e 79 20 ..# contain any
4fb0: 75 73 65 66 75 6c 20 69 6e 66 6f 72 6d 61 74 69 useful informati
4fc0: 6f 6e 29 20 61 6e 64 20 6d 61 6b 69 6e 67 20 31 on) and making 1
4fd0: 2e 31 2e 31 2e 31 20 69 6e 74 6f 20 61 6e 0a 09 .1.1.1 into an..
4fe0: 23 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 72 6f # independent ro
4ff0: 6f 74 20 69 6e 20 74 68 65 20 66 69 6c 65 27 73 ot in the file's
5000: 20 64 65 70 65 6e 64 65 6e 63 79 20 74 72 65 65 dependency tree
5010: 2e 20 20 49 6e 20 53 56 4e 2c 0a 09 23 20 31 2e . In SVN,..# 1.
5020: 31 2e 31 2e 31 20 77 69 6c 6c 20 62 65 20 61 64 1.1.1 will be ad
5030: 64 65 64 20 64 69 72 65 63 74 6c 79 20 74 6f 20 ded directly to
5040: 74 68 65 20 76 65 6e 64 6f 72 20 62 72 61 6e 63 the vendor branc
5050: 68 20 77 69 74 68 20 69 74 73 0a 09 23 20 69 6e h with its..# in
5060: 69 74 69 61 6c 20 63 6f 6e 74 65 6e 74 2e 20 20 itial content.
5070: 54 68 65 6e 20 69 6e 20 61 20 73 70 65 63 69 61 Then in a specia
5080: 6c 20 27 70 6f 73 74 2d 63 6f 6d 6d 69 74 27 2c l 'post-commit',
5090: 20 74 68 65 0a 09 23 20 31 2e 31 2e 31 2e 31 20 the..# 1.1.1.1
50a0: 72 65 76 69 73 69 6f 6e 20 69 73 20 63 6f 70 69 revision is copi
50b0: 65 64 20 62 61 63 6b 20 74 6f 20 74 72 75 6e 6b ed back to trunk
50c0: 2e 0a 0a 09 23 20 49 66 20 74 68 65 20 75 73 65 ....# If the use
50d0: 72 20 69 6d 70 6f 72 74 73 20 61 67 61 69 6e 20 r imports again
50e0: 74 6f 20 74 68 65 20 73 61 6d 65 20 76 65 6e 64 to the same vend
50f0: 6f 72 20 62 72 61 6e 63 68 2c 20 74 68 65 6e 20 or branch, then
5100: 43 56 53 0a 09 23 20 63 72 65 61 74 65 73 20 72 CVS..# creates r
5110: 65 76 69 73 69 6f 6e 73 20 31 2e 31 2e 31 2e 32 evisions 1.1.1.2
5120: 2c 20 31 2e 31 2e 31 2e 33 2c 20 65 74 63 2e 20 , 1.1.1.3, etc.
5130: 6f 6e 20 74 68 65 20 76 65 6e 64 6f 72 20 62 72 on the vendor br
5140: 61 6e 63 68 2c 0a 09 23 20 2a 77 69 74 68 6f 75 anch,..# *withou
5150: 74 2a 20 63 6f 75 6e 74 65 72 70 61 72 74 73 20 t* counterparts
5160: 69 6e 20 74 72 75 6e 6b 20 28 65 76 65 6e 20 74 in trunk (even t
5170: 68 6f 75 67 68 20 74 68 65 73 65 20 72 65 76 69 hough these revi
5180: 73 69 6f 6e 73 0a 09 23 20 65 66 66 65 63 74 69 sions..# effecti
5190: 76 65 6c 79 20 70 6c 61 79 20 74 68 65 20 72 6f vely play the ro
51a0: 6c 65 20 6f 66 20 74 72 75 6e 6b 20 72 65 76 69 le of trunk revi
51b0: 73 69 6f 6e 73 29 2e 20 20 53 6f 20 61 66 74 65 sions). So afte
51c0: 72 20 77 65 20 61 64 64 0a 09 23 20 73 75 63 68 r we add..# such
51d0: 20 72 65 76 69 73 69 6f 6e 73 20 74 6f 20 74 68 revisions to th
51e0: 65 20 76 65 6e 64 6f 72 20 62 72 61 6e 63 68 2c e vendor branch,
51f0: 20 77 65 20 61 6c 73 6f 20 63 6f 70 79 20 74 68 we also copy th
5200: 65 6d 20 62 61 63 6b 20 74 6f 0a 09 23 20 74 72 em back to..# tr
5210: 75 6e 6b 20 69 6e 20 70 6f 73 74 2d 63 6f 6d 6d unk in post-comm
5220: 69 74 73 2e 0a 0a 09 23 20 57 65 20 6d 61 72 6b its....# We mark
5230: 20 74 68 65 20 72 65 76 69 73 69 6f 6e 73 20 66 the revisions f
5240: 6f 75 6e 64 20 69 6e 20 27 72 65 76 6c 69 73 74 ound in 'revlist
5250: 27 20 61 73 20 64 65 66 61 75 6c 74 20 62 72 61 ' as default bra
5260: 6e 63 68 0a 09 23 20 72 65 76 69 73 69 6f 6e 73 nch..# revisions
5270: 2e 20 20 41 6c 73 6f 2c 20 69 66 20 74 68 65 20 . Also, if the
5280: 72 6f 6f 74 20 72 65 76 69 73 69 6f 6e 20 68 61 root revision ha
5290: 73 20 61 20 70 72 69 6d 61 72 79 20 63 68 69 6c s a primary chil
52a0: 64 0a 09 23 20 77 65 20 73 65 74 20 74 68 61 74 d..# we set that
52b0: 20 72 65 76 69 73 69 6f 6e 20 74 6f 20 64 65 70 revision to dep
52c0: 65 6e 64 20 6f 6e 20 74 68 65 20 6c 61 73 74 20 end on the last
52d0: 6e 6f 6e 2d 74 72 75 6e 6b 20 64 65 66 61 75 6c non-trunk defaul
52e0: 74 0a 09 23 20 62 72 61 6e 63 68 20 72 65 76 69 t..# branch revi
52f0: 73 69 6f 6e 20 61 6e 64 20 70 6f 73 73 69 62 6c sion and possibl
5300: 79 20 61 64 6a 75 73 74 20 69 74 73 20 74 79 70 y adjust its typ
5310: 65 20 61 63 63 6f 72 64 69 6e 67 6c 79 2e 0a 0a e accordingly...
5320: 09 73 65 74 20 66 69 72 73 74 20 5b 6c 69 6e 64 .set first [lind
5330: 65 78 20 24 72 65 76 6c 69 73 74 20 30 5d 0a 0a ex $revlist 0]..
5340: 09 6c 6f 67 20 77 72 69 74 65 20 36 20 66 69 6c .log write 6 fil
5350: 65 20 22 3c 5b 24 66 69 72 73 74 20 72 65 76 6e e "<[$first revn
5360: 72 5d 3e 20 5b 65 78 70 72 20 7b 24 6d 79 69 6d r]> [expr {$myim
5370: 70 6f 72 74 65 64 20 3f 20 22 69 6d 70 6f 72 74 ported ? "import
5380: 65 64 22 20 3a 20 22 6e 6f 74 20 69 6d 70 6f 72 ed" : "not impor
5390: 74 65 64 22 7d 5d 2c 20 5b 24 66 69 72 73 74 20 ted"}], [$first
53a0: 6f 70 65 72 61 74 69 6f 6e 5d 2c 20 5b 65 78 70 operation], [exp
53b0: 72 20 7b 5b 24 66 69 72 73 74 20 68 61 73 74 65 r {[$first haste
53c0: 78 74 5d 20 3f 20 22 68 61 73 20 74 65 78 74 22 xt] ? "has text"
53d0: 20 3a 20 22 6e 6f 20 74 65 78 74 22 7d 5d 22 0a : "no text"}]".
53e0: 0a 09 69 66 20 7b 24 6d 79 69 6d 70 6f 72 74 65 ..if {$myimporte
53f0: 64 20 26 26 0a 09 20 20 20 20 5b 24 66 69 72 73 d &&.. [$firs
5400: 74 20 72 65 76 6e 72 5d 20 65 71 20 22 31 2e 31 t revnr] eq "1.1
5410: 2e 31 2e 31 22 20 26 26 0a 09 20 20 20 20 5b 24 .1.1" &&.. [$
5420: 66 69 72 73 74 20 6f 70 65 72 61 74 69 6f 6e 5d first operation]
5430: 20 65 71 20 22 63 68 61 6e 67 65 22 20 26 26 0a eq "change" &&.
5440: 09 20 20 20 20 21 5b 24 66 69 72 73 74 20 68 61 . ![$first ha
5450: 73 74 65 78 74 5d 7d 20 7b 0a 0a 09 20 20 20 20 stext]} {...
5460: 73 65 74 20 72 65 76 31 31 20 5b 24 66 69 72 73 set rev11 [$firs
5470: 74 20 70 61 72 65 6e 74 5d 20 3b 20 23 20 41 73 t parent] ; # As
5480: 73 65 72 74 3a 20 53 68 6f 75 6c 64 20 62 65 20 sert: Should be
5490: 6d 79 72 6f 6f 74 2e 0a 09 20 20 20 20 6c 6f 67 myroot... log
54a0: 20 77 72 69 74 65 20 33 20 66 69 6c 65 20 22 52 write 3 file "R
54b0: 65 6d 6f 76 69 6e 67 20 69 72 72 65 6c 65 76 61 emoving irreleva
54c0: 6e 74 20 72 65 76 69 73 69 6f 6e 20 5b 24 72 65 nt revision [$re
54d0: 76 31 31 20 72 65 76 6e 72 5d 22 0a 0a 09 20 20 v11 revnr]"...
54e0: 20 20 23 20 43 75 74 20 6f 75 74 20 74 68 65 20 # Cut out the
54f0: 6f 6c 64 20 6d 79 72 6f 6f 74 20 72 65 76 69 73 old myroot revis
5500: 69 6f 6e 2e 0a 0a 09 20 20 20 20 6c 64 65 6c 65 ion.... ldele
5510: 74 65 20 6d 79 72 6f 6f 74 73 20 24 72 65 76 31 te myroots $rev1
5520: 31 20 3b 20 23 20 4e 6f 74 20 61 20 72 6f 6f 74 1 ; # Not a root
5530: 20 61 6e 79 20 6c 6f 6e 67 65 72 2e 0a 0a 09 20 any longer....
5540: 20 20 20 24 66 69 72 73 74 20 63 75 74 66 72 6f $first cutfro
5550: 6d 70 61 72 65 6e 74 20 3b 20 23 20 53 65 76 65 mparent ; # Seve
5560: 72 20 72 65 76 69 73 69 6f 6e 20 66 72 6f 6d 20 r revision from
5570: 70 61 72 65 6e 74 20 72 65 76 69 73 69 6f 6e 2e parent revision.
5580: 0a 09 20 20 20 20 69 66 20 7b 24 73 74 6f 70 20 .. if {$stop
5590: 6e 65 20 22 22 7d 20 7b 0a 09 09 24 73 74 6f 70 ne ""} {...$stop
55a0: 20 63 75 74 66 72 6f 6d 70 61 72 65 6e 74 0a 09 cutfromparent..
55b0: 09 6c 61 70 70 65 6e 64 20 6d 79 72 6f 6f 74 73 .lappend myroots
55c0: 20 24 73 74 6f 70 20 3b 20 23 20 4e 65 77 20 72 $stop ; # New r
55d0: 6f 6f 74 2c 20 61 66 74 65 72 20 76 65 6e 64 6f oot, after vendo
55e0: 72 20 62 72 61 6e 63 68 0a 09 20 20 20 20 7d 0a r branch.. }.
55f0: 0a 09 20 20 20 20 23 20 43 75 74 20 6f 75 74 20 .. # Cut out
5600: 74 68 65 20 76 65 6e 64 6f 72 20 62 72 61 6e 63 the vendor branc
5610: 68 20 73 79 6d 62 6f 6c 0a 0a 09 20 20 20 20 73 h symbol... s
5620: 65 74 20 76 65 6e 64 6f 72 20 5b 24 66 69 72 73 et vendor [$firs
5630: 74 20 70 61 72 65 6e 74 62 72 61 6e 63 68 5d 0a t parentbranch].
5640: 09 20 20 20 20 69 66 20 7b 24 76 65 6e 64 6f 72 . if {$vendor
5650: 20 65 71 20 22 22 7d 20 7b 20 74 72 6f 75 62 6c eq ""} { troubl
5660: 65 20 69 6e 74 65 72 6e 61 6c 20 22 46 69 72 73 e internal "Firs
5670: 74 20 4e 54 44 42 20 72 65 76 69 73 69 6f 6e 20 t NTDB revision
5680: 68 61 73 20 6e 6f 20 62 72 61 6e 63 68 22 20 7d has no branch" }
5690: 0a 09 20 20 20 20 69 66 20 7b 5b 24 76 65 6e 64 .. if {[$vend
56a0: 6f 72 20 70 61 72 65 6e 74 5d 20 65 71 20 24 72 or parent] eq $r
56b0: 65 76 31 31 7d 20 7b 0a 09 09 24 72 65 76 31 31 ev11} {...$rev11
56c0: 20 72 65 6d 6f 76 65 62 72 61 6e 63 68 20 20 20 removebranch
56d0: 20 20 20 20 20 24 76 65 6e 64 6f 72 0a 09 09 24 $vendor...$
56e0: 72 65 76 31 31 20 72 65 6d 6f 76 65 63 68 69 6c rev11 removechil
56f0: 64 6f 6e 62 72 61 6e 63 68 20 24 66 69 72 73 74 donbranch $first
5700: 0a 09 09 24 66 69 72 73 74 20 63 75 74 66 72 6f ...$first cutfro
5710: 6d 70 61 72 65 6e 74 62 72 61 6e 63 68 0a 09 09 mparentbranch...
5720: 6c 61 70 70 65 6e 64 20 6d 79 72 6f 6f 74 73 20 lappend myroots
5730: 24 66 69 72 73 74 0a 09 20 20 20 20 7d 0a 0a 09 $first.. }...
5740: 20 20 20 20 23 20 43 68 61 6e 67 65 20 74 68 65 # Change the
5750: 20 74 79 70 65 20 6f 66 20 66 69 72 73 74 20 28 type of first (
5760: 74 79 70 69 63 61 6c 6c 79 20 66 72 6f 6d 20 43 typically from C
5770: 68 61 6e 67 65 20 74 6f 20 41 64 64 29 3a 0a 09 hange to Add):..
5780: 20 20 20 20 24 66 69 72 73 74 20 72 65 74 79 70 $first retyp
5790: 65 20 61 64 64 0a 0a 09 20 20 20 20 23 20 4d 6f e add... # Mo
57a0: 76 65 20 61 6e 79 20 74 61 67 73 20 61 6e 64 20 ve any tags and
57b0: 62 72 61 6e 63 68 65 73 20 66 72 6f 6d 20 74 68 branches from th
57c0: 65 20 6f 6c 64 20 74 6f 20 74 68 65 20 6e 65 77 e old to the new
57d0: 20 72 6f 6f 74 2e 0a 09 20 20 20 20 24 72 65 76 root... $rev
57e0: 31 31 20 6d 6f 76 65 73 79 6d 62 6f 6c 73 74 6f 11 movesymbolsto
57f0: 20 24 66 69 72 73 74 0a 09 7d 0a 0a 09 23 20 4d $first..}...# M
5800: 61 72 6b 20 61 6c 6c 20 74 68 65 20 73 70 65 63 ark all the spec
5810: 69 61 6c 20 72 65 76 69 73 69 6f 6e 73 20 61 73 ial revisions as
5820: 20 73 75 63 68 0a 09 66 6f 72 65 61 63 68 20 72 such..foreach r
5830: 65 76 20 24 72 65 76 6c 69 73 74 20 7b 0a 09 20 ev $revlist {..
5840: 20 20 20 6c 6f 67 20 77 72 69 74 65 20 33 20 66 log write 3 f
5850: 69 6c 65 20 22 52 65 76 69 73 69 6f 6e 20 6f 6e ile "Revision on
5860: 20 64 65 66 61 75 6c 74 20 62 72 61 6e 63 68 3a default branch:
5870: 20 5b 24 72 65 76 20 72 65 76 6e 72 5d 22 0a 09 [$rev revnr]"..
5880: 20 20 20 20 24 72 65 76 20 73 65 74 6f 6e 64 65 $rev setonde
5890: 66 61 75 6c 74 62 72 61 6e 63 68 20 31 0a 09 7d faultbranch 1..}
58a0: 0a 0a 09 69 66 20 7b 24 73 74 6f 70 20 6e 65 20 ...if {$stop ne
58b0: 22 22 7d 20 7b 0a 09 20 20 20 20 23 20 52 65 76 ""} {.. # Rev
58c0: 69 73 69 6f 6e 20 31 2e 32 20 6c 6f 67 69 63 61 ision 1.2 logica
58d0: 6c 6c 79 20 66 6f 6c 6c 6f 77 73 20 74 68 65 20 lly follows the
58e0: 69 6d 70 6f 72 74 65 64 20 72 65 76 69 73 69 6f imported revisio
58f0: 6e 73 2c 0a 09 20 20 20 20 23 20 6e 6f 74 20 31 ns,.. # not 1
5900: 2e 31 2e 20 20 41 63 63 6f 72 64 69 6e 67 6c 79 .1. Accordingly
5910: 2c 20 63 6f 6e 6e 65 63 74 20 69 74 20 74 6f 20 , connect it to
5920: 74 68 65 20 6c 61 73 74 20 4e 54 44 42 52 20 61 the last NTDBR a
5930: 6e 64 0a 09 20 20 20 20 23 20 70 6f 73 73 69 62 nd.. # possib
5940: 6c 79 20 63 68 61 6e 67 65 20 69 74 73 20 74 79 ly change its ty
5950: 70 65 2e 0a 0a 09 20 20 20 20 73 65 74 20 6c 61 pe.... set la
5960: 73 74 20 5b 6c 69 6e 64 65 78 20 24 72 65 76 6c st [lindex $revl
5970: 69 73 74 20 65 6e 64 5d 0a 09 20 20 20 20 24 73 ist end].. $s
5980: 74 6f 70 20 73 65 74 64 65 66 61 75 6c 74 62 72 top setdefaultbr
5990: 61 6e 63 68 70 61 72 65 6e 74 20 24 6c 61 73 74 anchparent $last
59a0: 20 3b 20 23 20 52 65 74 79 70 65 73 20 74 68 65 ; # Retypes the
59b0: 20 72 65 76 69 73 69 6f 6e 20 74 6f 6f 2e 0a 09 revision too...
59c0: 20 20 20 20 24 6c 61 73 74 20 73 65 74 64 65 66 $last setdef
59d0: 61 75 6c 74 62 72 61 6e 63 68 63 68 69 6c 64 20 aultbranchchild
59e0: 20 24 73 74 6f 70 0a 09 7d 0a 09 72 65 74 75 72 $stop..}..retur
59f0: 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 n. }.. met
5a00: 68 6f 64 20 43 68 65 63 6b 4c 4f 44 73 20 7b 7d hod CheckLODs {}
5a10: 20 7b 0a 09 66 6f 72 65 61 63 68 20 7b 5f 20 62 {..foreach {_ b
5a20: 72 61 6e 63 68 7d 20 20 5b 61 72 72 61 79 20 67 ranch} [array g
5a30: 65 74 20 6d 79 62 72 61 6e 63 68 65 73 5d 20 7b et mybranches] {
5a40: 20 24 62 72 61 6e 63 68 20 63 68 65 63 6b 6c 6f $branch checklo
5a50: 64 20 7d 0a 09 66 6f 72 65 61 63 68 20 7b 5f 20 d }..foreach {_
5a60: 74 61 67 6c 69 73 74 7d 20 5b 61 72 72 61 79 20 taglist} [array
5a70: 67 65 74 20 6d 79 74 61 67 73 5d 20 7b 0a 09 20 get mytags] {..
5a80: 20 20 20 66 6f 72 65 61 63 68 20 74 61 67 20 24 foreach tag $
5a90: 74 61 67 6c 69 73 74 20 7b 20 24 74 61 67 20 63 taglist { $tag c
5aa0: 68 65 63 6b 6c 6f 64 20 7d 0a 09 7d 0a 09 72 65 hecklod }..}..re
5ab0: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 turn. }..
5ac0: 6d 65 74 68 6f 64 20 52 65 6d 6f 76 65 49 72 72 method RemoveIrr
5ad0: 65 6c 65 76 61 6e 74 44 65 6c 65 74 69 6f 6e 73 elevantDeletions
5ae0: 20 7b 7d 20 7b 0a 09 23 20 46 72 6f 6d 20 63 76 {} {..# From cv
5af0: 73 32 73 76 6e 3a 20 49 66 20 61 20 66 69 6c 65 s2svn: If a file
5b00: 20 69 73 20 61 64 64 65 64 20 6f 6e 20 61 20 62 is added on a b
5b10: 72 61 6e 63 68 2c 20 74 68 65 6e 20 61 20 74 72 ranch, then a tr
5b20: 75 6e 6b 0a 09 23 20 72 65 76 69 73 69 6f 6e 20 unk..# revision
5b30: 69 73 20 61 64 64 65 64 20 61 74 20 74 68 65 20 is added at the
5b40: 73 61 6d 65 20 74 69 6d 65 20 69 6e 20 74 68 65 same time in the
5b50: 20 27 44 65 61 64 27 20 73 74 61 74 65 2e 0a 09 'Dead' state...
5b60: 23 20 54 68 69 73 20 72 65 76 69 73 69 6f 6e 20 # This revision
5b70: 64 6f 65 73 6e 27 74 20 64 6f 20 61 6e 79 74 68 doesn't do anyth
5b80: 69 6e 67 20 75 73 65 66 75 6c 2c 20 73 6f 20 64 ing useful, so d
5b90: 65 6c 65 74 65 20 69 74 2e 0a 0a 09 66 6f 72 65 elete it....fore
5ba0: 61 63 68 20 72 6f 6f 74 20 24 6d 79 72 6f 6f 74 ach root $myroot
5bb0: 73 20 7b 0a 09 20 20 20 20 69 66 20 7b 5b 24 72 s {.. if {[$r
5bc0: 6f 6f 74 20 69 73 6e 65 65 64 65 64 5d 7d 20 63 oot isneeded]} c
5bd0: 6f 6e 74 69 6e 75 65 0a 09 20 20 20 20 6c 6f 67 ontinue.. log
5be0: 20 77 72 69 74 65 20 32 20 66 69 6c 65 20 22 52 write 2 file "R
5bf0: 65 6d 6f 76 69 6e 67 20 75 6e 6e 65 63 65 73 73 emoving unnecess
5c00: 61 72 79 20 64 65 61 64 20 72 65 76 69 73 69 6f ary dead revisio
5c10: 6e 20 5b 24 72 6f 6f 74 20 72 65 76 6e 72 5d 22 n [$root revnr]"
5c20: 0a 0a 09 20 20 20 20 23 20 52 65 6d 6f 76 65 20 ... # Remove
5c30: 61 73 20 72 6f 6f 74 2c 20 6d 61 6b 65 20 69 74 as root, make it
5c40: 73 20 63 68 69 6c 64 20 6e 65 77 20 72 6f 6f 74 s child new root
5c50: 20 61 66 74 65 72 0a 09 20 20 20 20 23 20 64 69 after.. # di
5c60: 73 63 6f 6e 6e 65 63 74 69 6e 67 20 69 74 20 66 sconnecting it f
5c70: 72 6f 6d 20 74 68 65 20 72 65 76 69 73 69 6f 6e rom the revision
5c80: 20 6a 75 73 74 20 67 6f 69 6e 67 20 61 77 61 79 just going away
5c90: 2e 0a 0a 09 20 20 20 20 6c 64 65 6c 65 74 65 20 .... ldelete
5ca0: 6d 79 72 6f 6f 74 73 20 24 72 6f 6f 74 0a 09 20 myroots $root..
5cb0: 20 20 20 69 66 20 7b 5b 24 72 6f 6f 74 20 68 61 if {[$root ha
5cc0: 73 63 68 69 6c 64 5d 7d 20 7b 0a 09 09 73 65 74 schild]} {...set
5cd0: 20 63 68 69 6c 64 20 5b 24 72 6f 6f 74 20 63 68 child [$root ch
5ce0: 69 6c 64 5d 0a 09 09 24 63 68 69 6c 64 20 63 75 ild]...$child cu
5cf0: 74 66 72 6f 6d 70 61 72 65 6e 74 0a 09 09 6c 61 tfromparent...la
5d00: 70 70 65 6e 64 20 6d 79 72 6f 6f 74 73 20 24 63 ppend myroots $c
5d10: 68 69 6c 64 0a 09 20 20 20 20 7d 0a 0a 09 20 20 hild.. }...
5d20: 20 20 23 20 52 65 6d 6f 76 65 20 74 68 65 20 62 # Remove the b
5d30: 72 61 6e 63 68 65 73 20 73 70 61 77 6e 65 64 20 ranches spawned
5d40: 62 79 20 74 68 65 20 72 65 76 69 73 69 6f 6e 20 by the revision
5d50: 74 6f 20 62 65 0a 09 20 20 20 20 23 20 64 65 6c to be.. # del
5d60: 65 74 65 64 2e 20 49 66 20 74 68 65 20 62 72 61 eted. If the bra
5d70: 6e 63 68 20 68 61 73 20 72 65 76 69 73 69 6f 6e nch has revision
5d80: 73 20 74 68 65 79 20 73 68 6f 75 6c 64 20 61 6c s they should al
5d90: 72 65 61 64 79 0a 09 20 20 20 20 23 20 75 73 65 ready.. # use
5da0: 20 6f 70 65 72 61 74 69 6f 6e 20 27 61 64 64 27 operation 'add'
5db0: 2c 20 6e 6f 20 6e 65 65 64 20 74 6f 20 63 68 61 , no need to cha
5dc0: 6e 67 65 20 74 68 61 74 2e 20 54 68 65 20 66 69 nge that. The fi
5dd0: 72 73 74 0a 09 20 20 20 20 23 20 72 65 76 69 73 rst.. # revis
5de0: 69 6f 6e 20 6f 6e 20 65 61 63 68 20 62 72 61 6e ion on each bran
5df0: 63 68 20 62 65 63 6f 6d 65 73 20 61 20 6e 65 77 ch becomes a new
5e00: 20 61 6e 64 20 64 69 73 63 6f 6e 6e 65 63 74 65 and disconnecte
5e10: 64 0a 09 20 20 20 20 23 20 72 6f 6f 74 2e 0a 0a d.. # root...
5e20: 09 20 20 20 20 66 6f 72 65 61 63 68 20 62 72 61 . foreach bra
5e30: 6e 63 68 20 5b 24 72 6f 6f 74 20 62 72 61 6e 63 nch [$root branc
5e40: 68 65 73 5d 20 7b 0a 09 09 69 66 20 7b 21 5b 24 hes] {...if {![$
5e50: 62 72 61 6e 63 68 20 68 61 73 63 68 69 6c 64 5d branch haschild]
5e60: 7d 20 63 6f 6e 74 69 6e 75 65 0a 09 09 73 65 74 } continue...set
5e70: 20 66 69 72 73 74 20 5b 24 62 72 61 6e 63 68 20 first [$branch
5e80: 63 68 69 6c 64 5d 0a 09 09 24 66 69 72 73 74 20 child]...$first
5e90: 63 75 74 66 72 6f 6d 70 61 72 65 6e 74 62 72 61 cutfromparentbra
5ea0: 6e 63 68 0a 09 09 24 66 69 72 73 74 20 63 75 74 nch...$first cut
5eb0: 66 72 6f 6d 70 61 72 65 6e 74 0a 09 09 6c 61 70 fromparent...lap
5ec0: 70 65 6e 64 20 6d 79 72 6f 6f 74 73 20 24 66 69 pend myroots $fi
5ed0: 72 73 74 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 rst.. }..
5ee0: 24 72 6f 6f 74 20 72 65 6d 6f 76 65 61 6c 6c 62 $root removeallb
5ef0: 72 61 6e 63 68 65 73 0a 0a 09 20 20 20 20 23 20 ranches... #
5f00: 54 61 67 67 69 6e 67 20 61 20 64 65 61 64 20 72 Tagging a dead r
5f10: 65 76 69 73 69 6f 6e 20 64 6f 65 73 6e 27 74 20 evision doesn't
5f20: 64 6f 20 61 6e 79 74 68 69 6e 67 2c 20 73 6f 20 do anything, so
5f30: 72 65 6d 6f 76 65 0a 09 20 20 20 20 23 20 61 6e remove.. # an
5f40: 79 20 74 61 67 73 20 74 68 61 74 20 77 65 72 65 y tags that were
5f50: 20 73 65 74 20 6f 6e 20 69 74 2e 0a 0a 09 20 20 set on it....
5f60: 20 20 24 72 6f 6f 74 20 72 65 6d 6f 76 65 61 6c $root removeal
5f70: 6c 74 61 67 73 0a 0a 09 20 20 20 20 23 20 54 68 ltags... # Th
5f80: 69 73 20 63 61 6e 20 6f 6e 6c 79 20 68 61 70 70 is can only happ
5f90: 65 6e 20 6f 6e 63 65 20 70 65 72 20 66 69 6c 65 en once per file
5fa0: 2c 20 61 6e 64 20 77 65 20 6d 69 67 68 74 20 68 , and we might h
5fb0: 61 76 65 0a 09 20 20 20 20 23 20 6a 75 73 74 20 ave.. # just
5fc0: 63 68 61 6e 67 65 64 20 6d 79 72 6f 6f 74 73 2c changed myroots,
5fd0: 20 73 6f 20 65 6e 64 20 74 68 65 20 6c 6f 6f 70 so end the loop
5fe0: 0a 09 20 20 20 20 62 72 65 61 6b 0a 09 7d 0a 09 .. break..}..
5ff0: 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 return. }..
6000: 20 20 6d 65 74 68 6f 64 20 52 65 6d 6f 76 65 49 method RemoveI
6010: 6e 69 74 69 61 6c 42 72 61 6e 63 68 44 65 6c 65 nitialBranchDele
6020: 74 69 6f 6e 73 20 7b 7d 20 7b 0a 09 23 20 46 72 tions {} {..# Fr
6030: 6f 6d 20 63 76 73 32 73 76 6e 3a 20 49 66 20 74 om cvs2svn: If t
6040: 68 65 20 66 69 72 73 74 20 72 65 76 69 73 69 6f he first revisio
6050: 6e 20 6f 6e 20 61 20 62 72 61 6e 63 68 20 69 73 n on a branch is
6060: 20 61 6e 0a 09 23 20 75 6e 6e 65 63 65 73 73 61 an..# unnecessa
6070: 72 79 20 64 65 6c 65 74 65 2c 20 72 65 6d 6f 76 ry delete, remov
6080: 65 20 69 74 2e 0a 09 23 0a 09 23 20 49 66 20 61 e it...#..# If a
6090: 20 66 69 6c 65 20 69 73 20 61 64 64 65 64 20 6f file is added o
60a0: 6e 20 61 20 62 72 61 6e 63 68 20 28 77 68 65 74 n a branch (whet
60b0: 68 65 72 20 6f 72 20 6e 6f 74 20 69 74 20 61 6c her or not it al
60c0: 72 65 61 64 79 0a 09 23 20 65 78 69 73 74 65 64 ready..# existed
60d0: 20 6f 6e 20 74 72 75 6e 6b 29 2c 20 74 68 65 6e on trunk), then
60e0: 20 6e 65 77 20 76 65 72 73 69 6f 6e 73 20 6f 66 new versions of
60f0: 20 43 56 53 20 61 64 64 20 61 20 66 69 72 73 74 CVS add a first
6100: 0a 09 23 20 62 72 61 6e 63 68 20 72 65 76 69 73 ..# branch revis
6110: 69 6f 6e 20 69 6e 20 74 68 65 20 27 64 65 61 64 ion in the 'dead
6120: 27 20 73 74 61 74 65 20 28 74 6f 20 69 6e 64 69 ' state (to indi
6130: 63 61 74 65 20 74 68 61 74 20 74 68 65 0a 09 23 cate that the..#
6140: 20 66 69 6c 65 20 64 69 64 20 6e 6f 74 20 65 78 file did not ex
6150: 69 73 74 20 6f 6e 20 74 68 65 20 62 72 61 6e 63 ist on the branc
6160: 68 20 77 68 65 6e 20 74 68 65 20 62 72 61 6e 63 h when the branc
6170: 68 20 77 61 73 0a 09 23 20 63 72 65 61 74 65 64 h was..# created
6180: 29 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 74 68 ) followed by th
6190: 65 20 73 65 63 6f 6e 64 20 62 72 61 6e 63 68 20 e second branch
61a0: 72 65 76 69 73 69 6f 6e 2c 20 77 68 69 63 68 20 revision, which
61b0: 69 73 20 61 6e 0a 09 23 20 61 64 64 2e 20 20 57 is an..# add. W
61c0: 68 65 6e 20 77 65 20 65 6e 63 6f 75 6e 74 65 72 hen we encounter
61d0: 20 74 68 69 73 20 73 69 74 75 61 74 69 6f 6e 2c this situation,
61e0: 20 77 65 20 73 65 76 65 72 20 74 68 65 20 62 72 we sever the br
61f0: 61 6e 63 68 0a 09 23 20 66 72 6f 6d 20 74 72 75 anch..# from tru
6200: 6e 6b 20 61 6e 64 20 64 65 6c 65 74 65 20 74 68 nk and delete th
6210: 65 20 66 69 72 73 74 20 62 72 61 6e 63 68 20 72 e first branch r
6220: 65 76 69 73 69 6f 6e 2e 0a 0a 09 23 20 41 74 20 evision....# At
6230: 74 68 69 73 20 70 6f 69 6e 74 20 77 65 20 6d 61 this point we ma
6240: 79 20 68 61 76 65 20 61 6c 72 65 61 64 79 20 6d y have already m
6250: 75 6c 74 69 70 6c 65 20 72 6f 6f 74 73 20 69 6e ultiple roots in
6260: 20 6d 79 72 6f 6f 74 73 2c 0a 09 23 20 77 65 20 myroots,..# we
6270: 68 61 76 65 20 74 6f 20 70 72 6f 63 65 73 73 20 have to process
6280: 74 68 65 6d 20 61 6c 6c 2e 0a 0a 09 66 6f 72 65 them all....fore
6290: 61 63 68 20 72 6f 6f 74 20 5b 24 73 65 6c 66 20 ach root [$self
62a0: 4c 69 6e 65 73 4f 66 44 65 76 65 6c 6f 70 6d 65 LinesOfDevelopme
62b0: 6e 74 5d 20 7b 0a 09 20 20 20 20 69 66 20 7b 5b nt] {.. if {[
62c0: 24 72 6f 6f 74 20 69 73 6e 65 65 64 65 64 62 72 $root isneededbr
62d0: 61 6e 63 68 64 65 6c 5d 7d 20 63 6f 6e 74 69 6e anchdel]} contin
62e0: 75 65 0a 09 20 20 20 20 6c 6f 67 20 77 72 69 74 ue.. log writ
62f0: 65 20 32 20 66 69 6c 65 20 22 52 65 6d 6f 76 69 e 2 file "Removi
6300: 6e 67 20 75 6e 6e 65 63 65 73 73 61 72 79 20 69 ng unnecessary i
6310: 6e 69 74 69 61 6c 20 62 72 61 6e 63 68 20 64 65 nitial branch de
6320: 6c 65 74 65 20 5b 24 72 6f 6f 74 20 72 65 76 6e lete [$root revn
6330: 72 5d 22 0a 0a 09 20 20 20 20 73 65 74 20 62 72 r]"... set br
6340: 61 6e 63 68 20 5b 24 72 6f 6f 74 20 70 61 72 65 anch [$root pare
6350: 6e 74 62 72 61 6e 63 68 5d 0a 09 20 20 20 20 73 ntbranch].. s
6360: 65 74 20 70 61 72 65 6e 74 20 5b 24 72 6f 6f 74 et parent [$root
6370: 20 70 61 72 65 6e 74 5d 0a 09 20 20 20 20 73 65 parent].. se
6380: 74 20 63 68 69 6c 64 20 20 5b 24 72 6f 6f 74 20 t child [$root
6390: 63 68 69 6c 64 5d 0a 0a 09 20 20 20 20 6c 64 65 child]... lde
63a0: 6c 65 74 65 20 6d 79 72 6f 6f 74 73 20 24 72 6f lete myroots $ro
63b0: 6f 74 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 20 ot.. lappend
63c0: 6d 79 72 6f 6f 74 73 20 24 63 68 69 6c 64 0a 0a myroots $child..
63d0: 09 20 20 20 20 24 63 68 69 6c 64 20 20 63 75 74 . $child cut
63e0: 66 72 6f 6d 70 61 72 65 6e 74 0a 09 20 20 20 20 fromparent..
63f0: 24 70 61 72 65 6e 74 20 72 65 6d 6f 76 65 62 72 $parent removebr
6400: 61 6e 63 68 20 20 20 20 20 20 20 20 24 62 72 61 anch $bra
6410: 6e 63 68 0a 09 20 20 20 20 24 70 61 72 65 6e 74 nch.. $parent
6420: 20 72 65 6d 6f 76 65 63 68 69 6c 64 6f 6e 62 72 removechildonbr
6430: 61 6e 63 68 20 24 72 6f 6f 74 0a 09 7d 0a 09 72 anch $root..}..r
6440: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }..
6450: 20 6d 65 74 68 6f 64 20 4c 69 6e 65 73 4f 66 44 method LinesOfD
6460: 65 76 65 6c 6f 70 6d 65 6e 74 20 7b 7d 20 7b 0a evelopment {} {.
6470: 09 23 20 44 65 74 65 72 6d 69 6e 65 20 61 6c 6c .# Determine all
6480: 20 6c 69 6e 65 73 20 6f 66 20 64 65 76 65 6c 6f lines of develo
6490: 70 6d 65 6e 74 20 66 6f 72 20 74 68 65 20 66 69 pment for the fi
64a0: 6c 65 2e 20 54 68 69 73 20 61 72 65 0a 09 23 20 le. This are..#
64b0: 74 68 65 20 6b 6e 6f 77 6e 20 72 6f 6f 74 73 2c the known roots,
64c0: 20 61 6e 64 20 74 68 65 20 72 6f 6f 74 20 6f 66 and the root of
64d0: 20 61 6c 6c 20 62 72 61 6e 63 68 65 73 20 66 6f all branches fo
64e0: 75 6e 64 20 6f 6e 20 74 68 65 0a 09 23 20 6c 69 und on the..# li
64f0: 6e 65 20 6f 66 20 70 72 69 6d 61 72 79 20 63 68 ne of primary ch
6500: 69 6c 64 72 65 6e 2e 0a 0a 09 73 65 74 20 6c 6f ildren....set lo
6510: 64 72 6f 6f 74 73 20 7b 7d 0a 09 66 6f 72 65 61 droots {}..forea
6520: 63 68 20 72 6f 6f 74 20 24 6d 79 72 6f 6f 74 73 ch root $myroots
6530: 20 7b 0a 09 20 20 20 20 24 73 65 6c 66 20 41 64 {.. $self Ad
6540: 64 42 72 61 6e 63 68 65 64 4c 69 6e 65 73 4f 66 dBranchedLinesOf
6550: 44 65 76 65 6c 6f 70 6d 65 6e 74 20 6c 6f 64 72 Development lodr
6560: 6f 6f 74 73 20 24 72 6f 6f 74 0a 09 20 20 20 20 oots $root..
6570: 6c 61 70 70 65 6e 64 20 6c 6f 64 72 6f 6f 74 73 lappend lodroots
6580: 20 24 72 6f 6f 74 0a 09 7d 0a 09 72 65 74 75 72 $root..}..retur
6590: 6e 20 24 6c 6f 64 72 6f 6f 74 73 0a 20 20 20 20 n $lodroots.
65a0: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 41 64 }.. method Ad
65b0: 64 42 72 61 6e 63 68 65 64 4c 69 6e 65 73 4f 66 dBranchedLinesOf
65c0: 44 65 76 65 6c 6f 70 6d 65 6e 74 20 7b 6c 76 20 Development {lv
65d0: 72 6f 6f 74 7d 20 7b 0a 09 75 70 76 61 72 20 31 root} {..upvar 1
65e0: 20 24 6c 76 20 6c 6f 64 72 6f 6f 74 73 0a 09 77 $lv lodroots..w
65f0: 68 69 6c 65 20 7b 24 72 6f 6f 74 20 6e 65 20 22 hile {$root ne "
6600: 22 7d 20 7b 0a 09 20 20 20 20 66 6f 72 65 61 63 "} {.. foreac
6610: 68 20 62 72 61 6e 63 68 20 5b 24 72 6f 6f 74 20 h branch [$root
6620: 62 72 61 6e 63 68 65 73 5d 20 7b 0a 09 09 69 66 branches] {...if
6630: 20 7b 21 5b 24 62 72 61 6e 63 68 20 68 61 73 63 {![$branch hasc
6640: 68 69 6c 64 5d 7d 20 63 6f 6e 74 69 6e 75 65 0a hild]} continue.
6650: 09 09 73 65 74 20 63 68 69 6c 64 20 5b 24 62 72 ..set child [$br
6660: 61 6e 63 68 20 63 68 69 6c 64 5d 0a 09 09 23 20 anch child]...#
6670: 52 65 63 75 72 73 65 20 69 6e 74 6f 20 74 68 65 Recurse into the
6680: 20 62 72 61 6e 63 68 20 66 6f 72 20 64 65 65 70 branch for deep
6690: 65 72 20 62 72 61 6e 63 68 65 73 2e 0a 09 09 24 er branches....$
66a0: 73 65 6c 66 20 41 64 64 42 72 61 6e 63 68 65 64 self AddBranched
66b0: 4c 69 6e 65 73 4f 66 44 65 76 65 6c 6f 70 6d 65 LinesOfDevelopme
66c0: 6e 74 20 6c 6f 64 72 6f 6f 74 73 20 24 63 68 69 nt lodroots $chi
66d0: 6c 64 0a 09 09 6c 61 70 70 65 6e 64 20 6c 6f 64 ld...lappend lod
66e0: 72 6f 6f 74 73 20 24 63 68 69 6c 64 0a 09 20 20 roots $child..
66f0: 20 20 7d 0a 09 20 20 20 20 73 65 74 20 72 6f 6f }.. set roo
6700: 74 20 5b 24 72 6f 6f 74 20 63 68 69 6c 64 5d 0a t [$root child].
6710: 09 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d .}..return. }
6720: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 45 78 63 .. method Exc
6730: 6c 75 64 65 4e 6f 6e 54 72 75 6e 6b 49 6e 66 6f ludeNonTrunkInfo
6740: 72 6d 61 74 69 6f 6e 20 7b 7d 20 7b 0a 09 23 20 rmation {} {..#
6750: 52 65 6d 6f 76 65 20 61 6c 6c 20 6e 6f 6e 2d 74 Remove all non-t
6760: 72 75 6e 6b 20 62 72 61 6e 63 68 65 73 2c 20 72 runk branches, r
6770: 65 76 69 73 69 6f 6e 73 2c 20 61 6e 64 20 74 61 evisions, and ta
6780: 67 73 2e 20 57 65 20 64 6f 0a 09 23 20 6b 65 65 gs. We do..# kee
6790: 70 20 74 68 65 20 74 61 67 73 20 77 68 69 63 68 p the tags which
67a0: 20 61 72 65 20 6f 6e 20 74 68 65 20 74 72 75 6e are on the trun
67b0: 6b 2e 0a 0a 09 73 65 74 20 6e 74 64 62 72 6f 6f k....set ntdbroo
67c0: 74 20 22 22 0a 09 66 6f 72 65 61 63 68 20 72 6f t ""..foreach ro
67d0: 6f 74 20 5b 24 73 65 6c 66 20 4c 69 6e 65 73 4f ot [$self LinesO
67e0: 66 44 65 76 65 6c 6f 70 6d 65 6e 74 5d 20 7b 0a fDevelopment] {.
67f0: 09 20 20 20 20 23 20 4e 6f 74 65 3a 20 48 65 72 . # Note: Her
6800: 65 20 74 68 65 20 6f 72 64 65 72 20 6f 66 20 74 e the order of t
6810: 68 65 20 72 6f 6f 74 73 20 69 73 20 69 6d 70 6f he roots is impo
6820: 72 74 61 6e 74 2c 0a 09 20 20 20 20 23 20 69 2e rtant,.. # i.
6830: 65 2e 20 74 68 61 74 20 77 65 20 67 65 74 20 74 e. that we get t
6840: 68 65 6d 20 69 6e 20 64 65 70 74 68 20 66 69 72 hem in depth fir
6850: 73 74 20 6f 72 64 65 72 2e 20 54 68 69 73 20 65 st order. This e
6860: 6e 73 75 72 65 73 0a 09 20 20 20 20 23 20 74 68 nsures.. # th
6870: 61 74 20 74 68 65 20 72 65 6d 6f 76 61 6c 20 6f at the removal o
6880: 66 20 61 20 62 72 61 6e 63 68 20 68 61 70 70 65 f a branch happe
6890: 6e 73 20 6f 6e 6c 79 20 61 66 74 65 72 20 74 68 ns only after th
68a0: 65 0a 09 20 20 20 20 23 20 62 72 61 6e 63 68 65 e.. # branche
68b0: 73 20 73 70 61 77 6e 65 64 20 66 72 6f 6d 20 69 s spawned from i
68c0: 74 20 77 65 72 65 20 72 65 6d 6f 76 65 64 2e 20 t were removed.
68d0: 4f 74 68 65 72 77 69 73 65 20 74 68 65 0a 09 20 Otherwise the..
68e0: 20 20 20 23 20 73 79 73 74 65 6d 20 6d 69 67 68 # system migh
68f0: 74 20 74 72 79 20 74 6f 20 61 63 63 65 73 73 20 t try to access
6900: 64 65 6c 65 74 65 64 20 6f 62 6a 65 63 74 73 2e deleted objects.
6910: 0a 0a 09 20 20 20 20 23 20 44 6f 20 6e 6f 74 20 ... # Do not
6920: 65 78 63 6c 75 64 65 20 74 68 65 20 74 72 75 6e exclude the trun
6930: 6b 2e 0a 09 20 20 20 20 69 66 20 7b 5b 5b 24 72 k... if {[[$r
6940: 6f 6f 74 20 6c 6f 64 5d 20 69 73 74 72 75 6e 6b oot lod] istrunk
6950: 5d 7d 20 63 6f 6e 74 69 6e 75 65 0a 09 20 20 20 ]} continue..
6960: 20 24 73 65 6c 66 20 45 78 63 6c 75 64 65 42 72 $self ExcludeBr
6970: 61 6e 63 68 20 24 72 6f 6f 74 20 6e 74 64 62 72 anch $root ntdbr
6980: 6f 6f 74 0a 09 7d 0a 0a 09 69 66 20 7b 24 6e 74 oot..}...if {$nt
6990: 64 62 72 6f 6f 74 20 6e 65 20 22 22 7d 20 7b 0a dbroot ne ""} {.
69a0: 09 20 20 20 20 24 73 65 6c 66 20 47 72 61 66 74 . $self Graft
69b0: 4e 54 44 42 32 54 72 75 6e 6b 20 24 6e 74 64 62 NTDB2Trunk $ntdb
69c0: 72 6f 6f 74 0a 09 7d 0a 09 72 65 74 75 72 6e 0a root..}..return.
69d0: 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f }.. metho
69e0: 64 20 45 78 63 6c 75 64 65 42 72 61 6e 63 68 20 d ExcludeBranch
69f0: 7b 72 6f 6f 74 20 6e 76 7d 20 7b 0a 09 23 20 45 {root nv} {..# E
6a00: 78 63 6c 75 64 65 20 74 68 65 20 62 72 61 6e 63 xclude the branc
6a10: 68 2f 6c 6f 64 20 73 74 61 72 74 69 6e 67 20 61 h/lod starting a
6a20: 74 20 72 6f 6f 74 2c 20 61 20 72 65 76 69 73 69 t root, a revisi
6a30: 6f 6e 2e 0a 09 23 0a 09 23 20 49 66 20 74 68 65 on...#..# If the
6a40: 20 4c 4f 44 20 73 74 61 72 74 73 20 77 69 74 68 LOD starts with
6a50: 20 6e 6f 6e 2d 74 72 75 6e 6b 20 64 65 66 61 75 non-trunk defau
6a60: 6c 74 20 62 72 61 6e 63 68 20 72 65 76 69 73 69 lt branch revisi
6a70: 6f 6e 73 2c 0a 09 23 20 77 65 20 6c 65 61 76 65 ons,..# we leave
6a80: 20 74 68 65 6d 20 69 6e 20 70 6c 61 63 65 20 61 them in place a
6a90: 6e 64 20 64 6f 20 6e 6f 74 20 64 65 6c 65 74 65 nd do not delete
6aa0: 20 74 68 65 20 62 72 61 6e 63 68 2e 20 49 6e 20 the branch. In
6ab0: 74 68 61 74 0a 09 23 20 63 61 73 65 20 74 68 65 that..# case the
6ac0: 20 63 6f 6d 6d 61 6e 64 20 73 65 74 73 20 74 68 command sets th
6ad0: 65 20 76 61 72 69 61 62 6c 65 20 69 6e 20 4e 56 e variable in NV
6ae0: 20 73 6f 20 74 68 61 74 20 77 65 20 63 61 6e 0a so that we can.
6af0: 09 23 20 6c 61 74 65 72 20 72 65 77 6f 72 6b 20 .# later rework
6b00: 74 68 65 73 65 20 72 65 76 69 73 6f 6e 73 20 74 these revisons t
6b10: 6f 20 62 65 20 70 75 72 65 6c 79 20 74 72 75 6e o be purely trun
6b20: 6b 2e 0a 0a 09 69 66 20 7b 5b 24 72 6f 6f 74 20 k....if {[$root
6b30: 69 73 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e 63 isondefaultbranc
6b40: 68 5d 7d 20 7b 0a 09 20 20 20 20 23 20 48 61 6e h]} {.. # Han
6b50: 64 6c 69 6e 67 20 61 20 4e 54 44 42 2e 20 54 68 dling a NTDB. Th
6b60: 69 73 20 62 72 61 6e 63 68 20 6d 61 79 20 63 6f is branch may co
6b70: 6e 73 69 73 74 73 20 6e 6f 74 20 6f 6e 6c 79 20 nsists not only
6b80: 6f 66 0a 09 20 20 20 20 23 20 4e 54 44 42 20 72 of.. # NTDB r
6b90: 65 76 69 73 69 6f 6e 73 2c 20 62 75 74 20 61 6c evisions, but al
6ba0: 73 6f 20 73 6f 6d 65 20 6e 6f 6e 2d 4e 54 44 42 so some non-NTDB
6bb0: 2e 20 54 68 65 20 6c 61 74 74 65 72 20 61 72 65 . The latter are
6bc0: 0a 09 20 20 20 20 23 20 74 72 75 6c 79 20 6f 6e .. # truly on
6bd0: 20 61 20 62 72 61 6e 63 68 20 61 6e 64 20 68 61 a branch and ha
6be0: 76 65 20 74 6f 20 62 65 20 65 78 63 6c 75 64 65 ve to be exclude
6bf0: 64 2e 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 d. The following
6c00: 0a 09 20 20 20 20 23 20 6c 6f 6f 70 20 64 65 74 .. # loop det
6c10: 65 72 6d 69 6e 65 73 20 69 66 20 74 68 65 72 65 ermines if there
6c20: 20 61 72 65 20 73 75 63 68 20 72 65 76 69 73 69 are such revisi
6c30: 6f 6e 73 2e 0a 0a 09 20 20 20 20 75 70 76 61 72 ons.... upvar
6c40: 20 31 20 24 6e 76 20 6e 74 64 62 72 6f 6f 74 0a 1 $nv ntdbroot.
6c50: 09 20 20 20 20 73 65 74 20 6e 74 64 62 72 6f 6f . set ntdbroo
6c60: 74 20 24 72 6f 6f 74 0a 09 20 20 20 20 24 72 6f t $root.. $ro
6c70: 6f 74 20 63 75 74 66 72 6f 6d 70 61 72 65 6e 74 ot cutfromparent
6c80: 62 72 61 6e 63 68 0a 0a 09 20 20 20 20 73 65 74 branch... set
6c90: 20 72 65 76 20 24 72 6f 6f 74 0a 09 20 20 20 20 rev $root..
6ca0: 77 68 69 6c 65 20 7b 24 72 65 76 20 6e 65 20 22 while {$rev ne "
6cb0: 22 7d 20 7b 0a 09 09 24 72 65 76 20 72 65 6d 6f "} {...$rev remo
6cc0: 76 65 61 6c 6c 62 72 61 6e 63 68 65 73 0a 09 09 veallbranches...
6cd0: 23 20 53 65 65 20 6e 6f 74 65 20 5b 78 5d 2e 0a # See note [x]..
6ce0: 0a 09 09 69 66 20 7b 5b 24 72 65 76 20 69 73 6f ...if {[$rev iso
6cf0: 6e 64 65 66 61 75 6c 74 62 72 61 6e 63 68 5d 7d ndefaultbranch]}
6d00: 20 7b 0a 09 09 20 20 20 20 73 65 74 20 72 65 76 {... set rev
6d10: 20 5b 24 72 65 76 20 63 68 69 6c 64 5d 0a 09 09 [$rev child]...
6d20: 7d 20 65 6c 73 65 20 7b 0a 09 09 20 20 20 20 62 } else {... b
6d30: 72 65 61 6b 0a 09 09 7d 0a 09 20 20 20 20 7d 0a reak...}.. }.
6d40: 0a 09 20 20 20 20 23 20 72 65 76 20 6e 6f 77 20 .. # rev now
6d50: 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 66 69 72 contains the fir
6d60: 73 74 20 6e 6f 6e 2d 4e 54 44 42 20 72 65 76 69 st non-NTDB revi
6d70: 73 69 6f 6e 20 61 66 74 65 72 20 74 68 65 0a 09 sion after the..
6d80: 20 20 20 20 23 20 4e 54 44 42 2c 20 6f 72 20 69 # NTDB, or i
6d90: 73 20 65 6d 70 74 79 20 69 66 20 74 68 65 72 65 s empty if there
6da0: 20 69 73 20 6e 6f 20 73 75 63 68 2e 20 49 66 20 is no such. If
6db0: 77 65 20 68 61 76 65 20 73 6f 6d 65 0a 09 20 20 we have some..
6dc0: 20 20 23 20 74 68 65 79 20 68 61 76 65 20 74 6f # they have to
6dd0: 20 72 65 6d 6f 76 65 64 2e 0a 0a 09 20 20 20 20 removed....
6de0: 69 66 20 7b 24 72 65 76 20 6e 65 20 22 22 7d 20 if {$rev ne ""}
6df0: 20 7b 0a 09 09 73 65 74 20 6c 61 73 74 6e 74 64 {...set lastntd
6e00: 62 20 5b 24 72 65 76 20 70 61 72 65 6e 74 5d 0a b [$rev parent].
6e10: 09 09 24 6c 61 73 74 6e 74 64 62 20 63 75 74 66 ..$lastntdb cutf
6e20: 72 6f 6d 63 68 69 6c 64 0a 09 09 77 68 69 6c 65 romchild...while
6e30: 20 7b 24 72 65 76 20 6e 65 20 22 22 7d 20 7b 0a {$rev ne ""} {.
6e40: 09 09 20 20 20 20 24 72 65 76 20 72 65 6d 6f 76 .. $rev remov
6e50: 65 61 6c 6c 74 61 67 73 0a 09 09 20 20 20 20 24 ealltags... $
6e60: 72 65 76 20 72 65 6d 6f 76 65 61 6c 6c 62 72 61 rev removeallbra
6e70: 6e 63 68 65 73 0a 09 09 20 20 20 20 23 20 4e 6f nches... # No
6e80: 74 65 20 5b 78 5d 3a 20 57 65 20 6d 61 79 20 73 te [x]: We may s
6e90: 74 69 6c 6c 20 68 61 76 65 20 68 61 64 20 62 72 till have had br
6ea0: 61 6e 63 68 65 73 20 6f 6e 20 74 68 65 0a 09 09 anches on the...
6eb0: 20 20 20 20 23 20 72 65 76 69 73 69 6f 6e 2e 20 # revision.
6ec0: 42 72 61 6e 63 68 65 73 20 77 69 74 68 6f 75 74 Branches without
6ed0: 20 72 65 76 69 73 69 6f 6e 73 20 63 6f 6d 6d 69 revisions commi
6ee0: 74 74 65 64 0a 09 09 20 20 20 20 23 20 6f 6e 20 tted... # on
6ef0: 74 68 65 6d 20 64 6f 20 6e 6f 74 20 73 68 6f 77 them do not show
6f00: 20 75 70 20 69 6e 20 74 68 65 20 6c 69 73 74 20 up in the list
6f10: 6f 66 20 72 6f 6f 74 73 20 61 6b 61 0a 09 09 20 of roots aka...
6f20: 20 20 20 23 20 6c 69 6e 65 73 20 6f 66 20 64 65 # lines of de
6f30: 76 65 6c 6f 70 6d 65 6e 74 2e 0a 09 09 20 20 20 velopment....
6f40: 20 73 65 74 20 72 65 76 20 5b 24 72 65 76 20 63 set rev [$rev c
6f50: 68 69 6c 64 5d 0a 09 09 7d 0a 09 20 20 20 20 7d hild]...}.. }
6f60: 0a 09 20 20 20 20 72 65 74 75 72 6e 0a 09 7d 0a .. return..}.
6f70: 0a 09 23 20 4e 6f 20 4e 54 44 42 20 73 74 75 66 ..# No NTDB stuf
6f80: 66 20 74 6f 20 64 65 61 6c 20 77 69 74 68 2e 20 f to deal with.
6f90: 46 69 72 73 74 20 64 65 6c 65 74 65 20 74 68 65 First delete the
6fa0: 20 62 72 61 6e 63 68 20 6f 62 6a 65 63 74 0a 09 branch object..
6fb0: 23 20 69 74 73 65 6c 66 2c 20 61 66 74 65 72 20 # itself, after
6fc0: 63 75 74 74 69 6e 67 20 61 6c 6c 20 74 68 65 20 cutting all the
6fd0: 76 61 72 69 6f 75 73 20 63 6f 6e 6e 65 63 74 69 various connecti
6fe0: 6f 6e 73 2e 0a 0a 09 73 65 74 20 62 72 61 6e 63 ons....set branc
6ff0: 68 20 5b 24 72 6f 6f 74 20 70 61 72 65 6e 74 62 h [$root parentb
7000: 72 61 6e 63 68 5d 0a 09 69 66 20 7b 24 62 72 61 ranch]..if {$bra
7010: 6e 63 68 20 6e 65 20 22 22 7d 20 7b 0a 09 20 20 nch ne ""} {..
7020: 20 20 73 65 74 20 62 72 61 6e 63 68 70 61 72 65 set branchpare
7030: 6e 74 20 5b 24 62 72 61 6e 63 68 20 70 61 72 65 nt [$branch pare
7040: 6e 74 5d 0a 09 20 20 20 20 24 62 72 61 6e 63 68 nt].. $branch
7050: 70 61 72 65 6e 74 20 72 65 6d 6f 76 65 62 72 61 parent removebra
7060: 6e 63 68 20 20 20 20 20 20 20 20 24 62 72 61 6e nch $bran
7070: 63 68 0a 09 20 20 20 20 24 62 72 61 6e 63 68 70 ch.. $branchp
7080: 61 72 65 6e 74 20 72 65 6d 6f 76 65 63 68 69 6c arent removechil
7090: 64 6f 6e 62 72 61 6e 63 68 20 24 72 6f 6f 74 0a donbranch $root.
70a0: 09 7d 0a 0a 09 23 20 54 68 65 20 72 6f 6f 74 20 .}...# The root
70b0: 69 73 20 6e 6f 20 73 75 63 68 20 61 6e 79 20 6c is no such any l
70c0: 6f 6e 67 65 72 20 65 69 74 68 65 72 2e 0a 09 6c onger either...l
70d0: 64 65 6c 65 74 65 20 6d 79 72 6f 6f 74 73 20 24 delete myroots $
70e0: 72 6f 6f 74 0a 0a 09 23 20 4e 6f 77 20 67 6f 20 root...# Now go
70f0: 74 68 72 6f 75 67 68 20 74 68 65 20 6c 69 6e 65 through the line
7100: 20 61 6e 64 20 72 65 6d 6f 76 65 20 61 6c 6c 20 and remove all
7110: 69 74 73 20 72 65 76 69 73 69 6f 6e 73 2e 0a 0a its revisions...
7120: 09 77 68 69 6c 65 20 7b 24 72 6f 6f 74 20 6e 65 .while {$root ne
7130: 20 22 22 7d 20 7b 0a 09 20 20 20 20 24 72 6f 6f ""} {.. $roo
7140: 74 20 72 65 6d 6f 76 65 61 6c 6c 74 61 67 73 0a t removealltags.
7150: 09 20 20 20 20 24 72 6f 6f 74 20 72 65 6d 6f 76 . $root remov
7160: 65 61 6c 6c 62 72 61 6e 63 68 65 73 0a 09 20 20 eallbranches..
7170: 20 20 23 20 4e 6f 74 65 3a 20 53 65 65 20 74 68 # Note: See th
7180: 65 20 6e 6f 74 65 20 5b 78 5d 2e 0a 0a 09 20 20 e note [x]....
7190: 20 20 23 20 46 72 6f 6d 20 63 76 73 32 73 76 6e # From cvs2svn
71a0: 3a 20 49 66 20 74 68 69 73 20 69 73 20 74 68 65 : If this is the
71b0: 20 6c 61 73 74 20 64 65 66 61 75 6c 74 20 72 65 last default re
71c0: 76 69 73 69 6f 6e 20 6f 6e 20 61 0a 09 20 20 20 vision on a..
71d0: 20 23 20 6e 6f 6e 2d 74 72 75 6e 6b 20 64 65 66 # non-trunk def
71e0: 61 75 6c 74 20 62 72 61 6e 63 68 20 66 6f 6c 6c ault branch foll
71f0: 6f 77 65 64 20 62 79 20 61 20 31 2e 32 20 72 65 owed by a 1.2 re
7200: 76 69 73 69 6f 6e 2c 0a 09 20 20 20 20 23 20 74 vision,.. # t
7210: 68 65 6e 20 74 68 65 20 31 2e 32 20 72 65 76 69 hen the 1.2 revi
7220: 73 69 6f 6e 20 64 65 70 65 6e 64 73 20 6f 6e 20 sion depends on
7230: 74 68 69 73 20 6f 6e 65 2e 20 20 46 49 58 4d 45 this one. FIXME
7240: 3a 20 49 74 20 69 73 0a 09 20 20 20 20 23 20 71 : It is.. # q
7250: 75 65 73 74 69 6f 6e 61 62 6c 65 20 77 68 65 74 uestionable whet
7260: 68 65 72 20 74 68 69 73 20 68 61 6e 64 6c 69 6e her this handlin
7270: 67 20 69 73 20 63 6f 72 72 65 63 74 2c 20 73 69 g is correct, si
7280: 6e 63 65 20 74 68 65 0a 09 20 20 20 20 23 20 6e nce the.. # n
7290: 6f 6e 2d 74 72 75 6e 6b 20 64 65 66 61 75 6c 74 on-trunk default
72a0: 20 62 72 61 6e 63 68 20 72 65 76 69 73 69 6f 6e branch revision
72b0: 73 20 61 66 66 65 63 74 20 74 72 75 6e 6b 20 61 s affect trunk a
72c0: 6e 64 0a 09 20 20 20 20 23 20 73 68 6f 75 6c 64 nd.. # should
72d0: 20 74 68 65 72 65 66 6f 72 65 20 6e 6f 74 20 6a therefore not j
72e0: 75 73 74 20 62 65 20 64 69 73 63 61 72 64 65 64 ust be discarded
72f0: 20 65 76 65 6e 20 69 66 0a 09 20 20 20 20 23 20 even if.. #
7300: 2d 2d 74 72 75 6e 6b 2d 6f 6e 6c 79 2e 0a 0a 09 --trunk-only....
7310: 20 20 20 20 69 66 20 7b 5b 24 72 6f 6f 74 20 68 if {[$root h
7320: 61 73 64 65 66 61 75 6c 74 62 72 61 6e 63 68 63 asdefaultbranchc
7330: 68 69 6c 64 5d 7d 20 7b 0a 09 09 73 65 74 20 6e hild]} {...set n
7340: 74 64 62 63 68 69 6c 64 20 5b 24 72 6f 6f 74 20 tdbchild [$root
7350: 64 65 66 61 75 6c 74 62 72 61 6e 63 68 63 68 69 defaultbranchchi
7360: 6c 64 5d 0a 09 09 69 66 20 7b 5b 24 6e 74 64 62 ld]...if {[$ntdb
7370: 63 68 69 6c 64 20 64 65 66 61 75 6c 74 62 72 61 child defaultbra
7380: 6e 63 68 70 61 72 65 6e 74 5d 20 6e 65 20 24 6e nchparent] ne $n
7390: 74 64 62 63 68 69 6c 64 7d 20 7b 0a 09 09 20 20 tdbchild} {...
73a0: 20 20 74 72 6f 75 62 6c 65 20 69 6e 74 65 72 6e trouble intern
73b0: 61 6c 20 22 6e 74 64 62 20 2d 20 74 72 75 6e 6b al "ntdb - trunk
73c0: 20 6c 69 6e 6b 61 67 65 20 62 72 6f 6b 65 6e 22 linkage broken"
73d0: 0a 09 09 7d 0a 09 09 24 6e 74 64 62 63 68 69 6c ...}...$ntdbchil
73e0: 64 20 63 75 74 64 65 66 61 75 6c 74 62 72 61 6e d cutdefaultbran
73f0: 63 68 70 61 72 65 6e 74 0a 09 09 69 66 20 7b 5b chparent...if {[
7400: 24 6e 74 64 62 63 68 69 6c 64 20 68 61 73 70 61 $ntdbchild haspa
7410: 72 65 6e 74 5d 7d 20 7b 0a 09 09 20 20 20 20 6c rent]} {... l
7420: 61 70 70 65 6e 64 20 6d 79 72 6f 6f 74 73 20 5b append myroots [
7430: 24 6e 74 64 62 63 68 69 6c 64 20 70 61 72 65 6e $ntdbchild paren
7440: 74 5d 0a 09 09 7d 0a 09 20 20 20 20 7d 0a 0a 09 t]...}.. }...
7450: 20 20 20 20 73 65 74 20 72 6f 6f 74 20 5b 24 72 set root [$r
7460: 6f 6f 74 20 63 68 69 6c 64 5d 0a 09 7d 0a 0a 09 oot child]..}...
7470: 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 return. }..
7480: 20 20 6d 65 74 68 6f 64 20 47 72 61 66 74 4e 54 method GraftNT
7490: 44 42 32 54 72 75 6e 6b 20 7b 72 6f 6f 74 7d 20 DB2Trunk {root}
74a0: 7b 0a 09 23 20 57 65 20 63 61 6e 20 6e 6f 77 20 {..# We can now
74b0: 67 72 61 66 74 20 74 68 65 20 6e 6f 6e 2d 74 72 graft the non-tr
74c0: 75 6e 6b 20 64 65 66 61 75 6c 74 20 62 72 61 6e unk default bran
74d0: 63 68 20 72 65 76 69 73 69 6f 6e 73 20 74 6f 0a ch revisions to.
74e0: 09 23 20 74 72 75 6e 6b 2e 20 54 68 65 79 20 73 .# trunk. They s
74f0: 68 6f 75 6c 64 20 61 6c 72 65 61 64 79 20 62 65 hould already be
7500: 20 61 6c 6f 6e 65 20 6f 6e 20 61 20 43 56 53 42 alone on a CVSB
7510: 72 61 6e 63 68 2d 6c 65 73 73 0a 09 23 20 62 72 ranch-less..# br
7520: 61 6e 63 68 2e 0a 0a 09 69 66 20 7b 5b 24 72 6f anch....if {[$ro
7530: 6f 74 20 68 61 73 70 61 72 65 6e 74 62 72 61 6e ot hasparentbran
7540: 63 68 5d 7d 20 7b 20 74 72 6f 75 62 6c 65 20 69 ch]} { trouble i
7550: 6e 74 65 72 6e 61 6c 20 22 4e 54 44 42 20 72 6f nternal "NTDB ro
7560: 6f 74 20 73 74 69 6c 6c 20 68 61 73 20 69 74 73 ot still has its
7570: 20 62 72 61 6e 63 68 20 73 79 6d 62 6f 6c 22 20 branch symbol"
7580: 7d 0a 09 69 66 20 7b 5b 24 72 6f 6f 74 20 68 61 }..if {[$root ha
7590: 73 62 72 61 6e 63 68 65 73 5d 7d 20 20 20 20 20 sbranches]}
75a0: 7b 20 74 72 6f 75 62 6c 65 20 69 6e 74 65 72 6e { trouble intern
75b0: 61 6c 20 22 4e 54 44 42 20 72 6f 6f 74 20 73 74 al "NTDB root st
75c0: 69 6c 6c 20 68 61 73 20 73 70 61 77 6e 65 64 20 ill has spawned
75d0: 62 72 61 6e 63 68 65 73 22 20 7d 0a 0a 09 73 65 branches" }...se
75e0: 74 20 6c 61 73 74 20 24 72 6f 6f 74 0a 09 77 68 t last $root..wh
75f0: 69 6c 65 20 7b 5b 24 6c 61 73 74 20 68 61 73 63 ile {[$last hasc
7600: 68 69 6c 64 5d 7d 20 7b 73 65 74 20 6c 61 73 74 hild]} {set last
7610: 20 5b 24 6c 61 73 74 20 63 68 69 6c 64 5d 7d 0a [$last child]}.
7620: 0a 09 69 66 20 7b 5b 24 6c 61 73 74 20 68 61 73 ..if {[$last has
7630: 64 65 66 61 75 6c 74 62 72 61 6e 63 68 63 68 69 defaultbranchchi
7640: 6c 64 5d 7d 20 7b 0a 0a 09 20 20 20 20 73 65 74 ld]} {... set
7650: 20 72 65 76 31 32 20 5b 24 6c 61 73 74 20 64 65 rev12 [$last de
7660: 66 61 75 6c 74 62 72 61 6e 63 68 63 68 69 6c 64 faultbranchchild
7670: 5d 0a 09 20 20 20 20 24 72 65 76 31 32 20 63 75 ].. $rev12 cu
7680: 74 64 65 66 61 75 6c 74 62 72 61 6e 63 68 70 61 tdefaultbranchpa
7690: 72 65 6e 74 0a 09 20 20 20 20 24 6c 61 73 74 20 rent.. $last
76a0: 20 63 75 74 64 65 66 61 75 6c 74 62 72 61 6e 63 cutdefaultbranc
76b0: 68 63 68 69 6c 64 0a 0a 09 20 20 20 20 24 72 65 hchild... $re
76c0: 76 31 32 20 63 68 61 6e 67 65 70 61 72 65 6e 74 v12 changeparent
76d0: 20 24 6c 61 73 74 0a 09 20 20 20 20 24 6c 61 73 $last.. $las
76e0: 74 20 20 63 68 61 6e 67 65 63 68 69 6c 64 20 24 t changechild $
76f0: 72 65 76 31 32 0a 0a 09 20 20 20 20 6c 64 65 6c rev12... ldel
7700: 65 74 65 20 6d 79 72 6f 6f 74 73 20 24 72 65 76 ete myroots $rev
7710: 31 32 0a 0a 09 20 20 20 20 23 20 4e 6f 74 65 20 12... # Note
7720: 61 6e 64 20 72 65 6d 65 6d 62 65 72 20 74 68 61 and remember tha
7730: 74 20 74 68 65 20 74 79 70 65 20 6f 66 20 72 65 t the type of re
7740: 76 31 32 20 77 61 73 20 61 6c 72 65 61 64 79 0a v12 was already.
7750: 09 20 20 20 20 23 20 61 64 6a 75 73 74 65 64 20 . # adjusted
7760: 62 79 20 41 64 6a 75 73 74 4e 6f 6e 54 72 75 6e by AdjustNonTrun
7770: 6b 44 65 66 61 75 6c 74 42 72 61 6e 63 68 2c 20 kDefaultBranch,
7780: 73 6f 20 77 65 20 64 6f 6e 27 74 0a 09 20 20 20 so we don't..
7790: 20 23 20 68 61 76 65 20 74 6f 20 63 68 61 6e 67 # have to chang
77a0: 65 20 69 74 73 20 74 79 70 65 20 68 65 72 65 2e e its type here.
77b0: 0a 09 7d 0a 0a 09 77 68 69 6c 65 20 7b 24 72 6f ..}...while {$ro
77c0: 6f 74 20 6e 65 20 22 22 7d 20 7b 0a 09 20 20 20 ot ne ""} {..
77d0: 20 24 72 6f 6f 74 20 73 65 74 6f 6e 64 65 66 61 $root setondefa
77e0: 75 6c 74 62 72 61 6e 63 68 20 30 0a 09 20 20 20 ultbranch 0..
77f0: 20 24 72 6f 6f 74 20 73 65 74 6c 6f 64 20 24 6d $root setlod $m
7800: 79 74 72 75 6e 6b 0a 09 20 20 20 20 66 6f 72 65 ytrunk.. fore
7810: 61 63 68 20 74 61 67 20 5b 24 72 6f 6f 74 20 74 ach tag [$root t
7820: 61 67 73 5d 20 7b 0a 09 09 24 74 61 67 20 73 65 ags] {...$tag se
7830: 74 6c 6f 64 20 24 6d 79 74 72 75 6e 6b 0a 09 20 tlod $mytrunk..
7840: 20 20 20 7d 0a 09 20 20 20 20 73 65 74 20 72 6f }.. set ro
7850: 6f 74 20 5b 24 72 6f 6f 74 20 63 68 69 6c 64 5d ot [$root child]
7860: 0a 09 7d 0a 0a 20 20 20 20 20 20 20 20 72 65 74 ..}.. ret
7870: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 urn. }.. #
7880: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 # ## ### #####
7890: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 ######## #######
78a0: 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 43 6f ######. ## Co
78b0: 6e 66 69 67 75 72 61 74 69 6f 6e 0a 0a 20 20 20 nfiguration..
78c0: 20 70 72 61 67 6d 61 20 2d 68 61 73 74 79 70 65 pragma -hastype
78d0: 69 6e 66 6f 20 20 20 20 6e 6f 20 20 3b 20 23 20 info no ; #
78e0: 6e 6f 20 74 79 70 65 20 69 6e 74 72 6f 73 70 65 no type introspe
78f0: 63 74 69 6f 6e 0a 20 20 20 20 70 72 61 67 6d 61 ction. pragma
7900: 20 2d 68 61 73 69 6e 66 6f 20 20 20 20 20 20 20 -hasinfo
7910: 20 6e 6f 20 20 3b 20 23 20 6e 6f 20 6f 62 6a 65 no ; # no obje
7920: 63 74 20 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e ct introspection
7930: 0a 20 20 20 20 70 72 61 67 6d 61 20 2d 68 61 73 . pragma -has
7940: 74 79 70 65 6d 65 74 68 6f 64 73 20 6e 6f 20 20 typemethods no
7950: 3b 20 23 20 74 79 70 65 20 69 73 20 6e 6f 74 20 ; # type is not
7960: 72 65 6c 65 76 61 6e 74 2e 0a 0a 20 20 20 20 23 relevant... #
7970: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 # ## ### #####
7980: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 ######## #######
7990: 23 23 23 23 23 23 0a 7d 0a 0a 6e 61 6d 65 73 70 ######.}..namesp
79a0: 61 63 65 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 66 ace eval ::vc::f
79b0: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 ossil::import::c
79c0: 76 73 20 7b 0a 20 20 20 20 6e 61 6d 65 73 70 61 vs {. namespa
79d0: 63 65 20 65 78 70 6f 72 74 20 66 69 6c 65 0a 20 ce export file.
79e0: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 namespace eva
79f0: 6c 20 66 69 6c 65 20 7b 0a 09 23 20 49 6d 70 6f l file {..# Impo
7a00: 72 74 20 6e 6f 74 20 72 65 71 75 69 72 65 64 2c rt not required,
7a10: 20 61 6c 72 65 61 64 79 20 61 20 63 68 69 6c 64 already a child
7a20: 20 6e 61 6d 65 73 70 61 63 65 2e 0a 09 23 20 6e namespace...# n
7a30: 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 amespace import
7a40: 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d ::vc::fossil::im
7a50: 70 6f 72 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 3a port::cvs::file:
7a60: 3a 72 65 76 0a 09 23 20 6e 61 6d 65 73 70 61 63 :rev..# namespac
7a70: 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 66 e import ::vc::f
7a80: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 ossil::import::c
7a90: 76 73 3a 3a 66 69 6c 65 3a 3a 73 79 6d 0a 09 6e vs::file::sym..n
7aa0: 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 amespace import
7ab0: 3a 3a 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6d 69 73 ::vc::tools::mis
7ac0: 63 3a 3a 2a 0a 09 6e 61 6d 65 73 70 61 63 65 20 c::*..namespace
7ad0: 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 74 6f 6f import ::vc::too
7ae0: 6c 73 3a 3a 74 72 6f 75 62 6c 65 0a 09 6e 61 6d ls::trouble..nam
7af0: 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a espace import ::
7b00: 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6c 6f 67 0a 20 vc::tools::log.
7b10: 20 20 20 7d 0a 7d 0a 0a 23 20 23 20 23 23 20 23 }.}..# # ## #
7b20: 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 ## ##### #######
7b30: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 20 # #############
7b40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
7b50: 23 23 23 23 23 0a 23 23 20 52 65 61 64 79 0a 0a #####.## Ready..
7b60: 70 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65 20 package provide
7b70: 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f vc::fossil::impo
7b80: 72 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 20 31 2e rt::cvs::file 1.
7b90: 30 0a 72 65 74 75 72 6e 0a 0.return.