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 23 20 23 20 . }.. # #
0a30: 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 ## ### ##### ###
0a40: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 ##### ##########
0a50: 23 23 23 0a 20 20 20 20 23 23 20 49 6d 70 6c 65 ###. ## Imple
0a60: 6d 65 6e 74 20 74 68 65 20 73 69 6e 6b 0a 0a 20 ment the sink..
0a70: 20 20 20 6d 65 74 68 6f 64 20 62 65 67 69 6e 20 method begin
0a80: 7b 7d 20 7b 23 69 67 6e 6f 72 65 7d 0a 0a 20 20 {} {#ignore}..
0a90: 20 20 6d 65 74 68 6f 64 20 73 65 74 68 65 61 64 method sethead
0aa0: 20 7b 72 65 76 6e 72 7d 20 7b 0a 09 73 65 74 20 {revnr} {..set
0ab0: 6d 79 68 65 61 64 72 65 76 6e 72 20 24 72 65 76 myheadrevnr $rev
0ac0: 6e 72 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d nr..return. }
0ad0: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 65 74 .. method set
0ae0: 70 72 69 6e 63 69 70 61 6c 62 72 61 6e 63 68 20 principalbranch
0af0: 7b 62 72 61 6e 63 68 6e 72 7d 20 7b 0a 09 73 65 {branchnr} {..se
0b00: 74 20 6d 79 70 72 69 6e 63 69 70 61 6c 20 24 62 t myprincipal $b
0b10: 72 61 6e 63 68 6e 72 0a 09 72 65 74 75 72 6e 0a ranchnr..return.
0b20: 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f }.. metho
0b30: 64 20 64 65 66 74 61 67 20 7b 6e 61 6d 65 20 72 d deftag {name r
0b40: 65 76 6e 72 7d 20 7b 0a 09 23 20 46 55 54 55 52 evnr} {..# FUTUR
0b50: 45 3a 20 50 65 72 66 6f 72 6d 20 73 79 6d 62 6f E: Perform symbo
0b60: 6c 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e l transformation
0b70: 20 68 65 72 65 2e 0a 0a 09 69 66 20 7b 5b 73 74 here....if {[st
0b80: 72 75 63 74 3a 3a 73 65 74 20 63 6f 6e 74 61 69 ruct::set contai
0b90: 6e 73 20 24 6d 79 73 79 6d 62 6f 6c 73 20 24 6e ns $mysymbols $n
0ba0: 61 6d 65 5d 7d 20 7b 0a 09 20 20 20 20 74 72 6f ame]} {.. tro
0bb0: 75 62 6c 65 20 66 61 74 61 6c 20 22 4d 75 6c 74 uble fatal "Mult
0bc0: 69 70 6c 65 20 64 65 66 69 6e 69 74 69 6f 6e 73 iple definitions
0bd0: 20 6f 66 20 74 68 65 20 73 79 6d 62 6f 6c 20 27 of the symbol '
0be0: 24 6e 61 6d 65 27 20 69 6e 20 27 24 6d 79 70 61 $name' in '$mypa
0bf0: 74 68 27 22 0a 09 20 20 20 20 72 65 74 75 72 6e th'".. return
0c00: 0a 09 7d 0a 0a 09 73 74 72 75 63 74 3a 3a 73 65 ..}...struct::se
0c10: 74 20 61 64 64 20 6d 79 73 79 6d 62 6f 6c 73 20 t add mysymbols
0c20: 24 6e 61 6d 65 0a 0a 09 69 66 20 7b 5b 72 65 76 $name...if {[rev
0c30: 20 69 73 62 72 61 6e 63 68 72 65 76 6e 72 20 24 isbranchrevnr $
0c40: 72 65 76 6e 72 20 2d 3e 20 62 72 61 6e 63 68 6e revnr -> branchn
0c50: 72 5d 7d 20 7b 0a 09 20 20 20 20 24 73 65 6c 66 r]} {.. $self
0c60: 20 41 64 64 42 72 61 6e 63 68 20 24 6e 61 6d 65 AddBranch $name
0c70: 20 24 62 72 61 6e 63 68 6e 72 0a 09 7d 20 65 6c $branchnr..} el
0c80: 73 65 20 7b 0a 09 20 20 20 20 24 73 65 6c 66 20 se {.. $self
0c90: 41 64 64 54 61 67 20 24 6e 61 6d 65 20 24 72 65 AddTag $name $re
0ca0: 76 6e 72 0a 09 7d 0a 09 72 65 74 75 72 6e 0a 20 vnr..}..return.
0cb0: 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 }.. method
0cc0: 20 73 65 74 63 6f 6d 6d 65 6e 74 20 7b 63 7d 20 setcomment {c}
0cd0: 7b 23 20 69 67 6e 6f 72 65 7d 0a 0a 20 20 20 20 {# ignore}..
0ce0: 6d 65 74 68 6f 64 20 61 64 6d 69 6e 64 6f 6e 65 method admindone
0cf0: 20 7b 7d 20 7b 0a 09 23 20 57 65 20 64 6f 20 6e {} {..# We do n
0d00: 6f 74 68 69 6e 67 20 61 74 20 74 68 65 20 62 6f othing at the bo
0d10: 75 6e 64 61 72 79 20 6f 66 20 61 64 6d 69 6e 20 undary of admin
0d20: 61 6e 64 20 72 65 76 69 73 69 6f 6e 20 64 61 74 and revision dat
0d30: 61 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 a. }.. met
0d40: 68 6f 64 20 64 65 66 20 7b 72 65 76 6e 72 20 64 hod def {revnr d
0d50: 61 74 65 20 61 75 74 68 6f 72 20 73 74 61 74 65 ate author state
0d60: 20 6e 65 78 74 20 62 72 61 6e 63 68 65 73 7d 20 next branches}
0d70: 7b 0a 09 24 73 65 6c 66 20 52 65 63 6f 72 64 42 {..$self RecordB
0d80: 72 61 6e 63 68 43 6f 6d 6d 69 74 73 20 24 62 72 ranchCommits $br
0d90: 61 6e 63 68 65 73 0a 0a 09 69 66 20 7b 5b 69 6e anches...if {[in
0da0: 66 6f 20 65 78 69 73 74 73 20 6d 79 72 65 76 28 fo exists myrev(
0db0: 24 72 65 76 6e 72 29 5d 7d 20 7b 0a 09 20 20 20 $revnr)]} {..
0dc0: 20 74 72 6f 75 62 6c 65 20 66 61 74 61 6c 20 22 trouble fatal "
0dd0: 46 69 6c 65 20 24 6d 79 70 61 74 68 20 63 6f 6e File $mypath con
0de0: 74 61 69 6e 73 20 64 75 70 6c 69 63 61 74 65 20 tains duplicate
0df0: 64 65 66 69 6e 69 74 69 6f 6e 73 20 66 6f 72 20 definitions for
0e00: 72 65 76 69 73 69 6f 6e 20 24 72 65 76 6e 72 2e revision $revnr.
0e10: 22 0a 09 20 20 20 20 72 65 74 75 72 6e 0a 09 7d ".. return..}
0e20: 0a 0a 09 73 65 74 20 6d 79 61 69 64 28 24 72 65 ...set myaid($re
0e30: 76 6e 72 29 20 5b 24 6d 79 70 72 6f 6a 65 63 74 vnr) [$myproject
0e40: 20 64 65 66 61 75 74 68 6f 72 20 24 61 75 74 68 defauthor $auth
0e50: 6f 72 5d 0a 09 73 65 74 20 6d 79 72 65 76 28 24 or]..set myrev($
0e60: 72 65 76 6e 72 29 20 5b 72 65 76 20 25 41 55 54 revnr) [rev %AUT
0e70: 4f 25 20 24 72 65 76 6e 72 20 24 64 61 74 65 20 O% $revnr $date
0e80: 24 73 74 61 74 65 20 24 73 65 6c 66 5d 0a 0a 09 $state $self]...
0e90: 24 73 65 6c 66 20 52 65 63 6f 72 64 42 61 73 69 $self RecordBasi
0ea0: 63 44 65 70 65 6e 64 65 6e 63 69 65 73 20 24 72 cDependencies $r
0eb0: 65 76 6e 72 20 24 6e 65 78 74 0a 09 72 65 74 75 evnr $next..retu
0ec0: 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 rn. }.. me
0ed0: 74 68 6f 64 20 64 65 66 64 6f 6e 65 20 7b 7d 20 thod defdone {}
0ee0: 7b 0a 09 23 20 54 68 69 73 20 69 73 20 61 6c 6c {..# This is all
0ef0: 20 64 6f 6e 65 20 61 66 74 65 72 20 74 68 65 20 done after the
0f00: 72 65 76 69 73 69 6f 6e 20 74 72 65 65 20 68 61 revision tree ha
0f10: 73 20 62 65 65 6e 20 65 78 74 72 61 63 74 65 64 s been extracted
0f20: 0a 09 23 20 66 72 6f 6d 20 74 68 65 20 66 69 6c ..# from the fil
0f30: 65 2c 20 62 65 66 6f 72 65 20 74 68 65 20 63 6f e, before the co
0f40: 6d 6d 69 74 20 6d 65 73 61 67 65 73 20 61 6e 64 mmit mesages and
0f50: 20 64 65 6c 74 61 20 74 65 78 74 73 20 61 72 65 delta texts are
0f60: 0a 09 23 20 70 72 6f 63 65 73 73 65 64 2e 0a 0a ..# processed...
0f70: 09 24 73 65 6c 66 20 50 72 6f 63 65 73 73 50 72 .$self ProcessPr
0f80: 69 6d 61 72 79 44 65 70 65 6e 64 65 6e 63 69 65 imaryDependencie
0f90: 73 0a 09 24 73 65 6c 66 20 50 72 6f 63 65 73 73 s..$self Process
0fa0: 42 72 61 6e 63 68 44 65 70 65 6e 64 65 6e 63 69 BranchDependenci
0fb0: 65 73 0a 09 24 73 65 6c 66 20 53 6f 72 74 42 72 es..$self SortBr
0fc0: 61 6e 63 68 65 73 0a 09 24 73 65 6c 66 20 50 72 anches..$self Pr
0fd0: 6f 63 65 73 73 54 61 67 44 65 70 65 6e 64 65 6e ocessTagDependen
0fe0: 63 69 65 73 0a 09 24 73 65 6c 66 20 44 65 74 65 cies..$self Dete
0ff0: 72 6d 69 6e 65 54 68 65 52 6f 6f 74 52 65 76 69 rmineTheRootRevi
1000: 73 69 6f 6e 0a 09 72 65 74 75 72 6e 0a 20 20 20 sion..return.
1010: 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 }.. method s
1020: 65 74 64 65 73 63 20 7b 64 7d 20 7b 23 20 69 67 etdesc {d} {# ig
1030: 6e 6f 72 65 7d 0a 0a 20 20 20 20 6d 65 74 68 6f nore}.. metho
1040: 64 20 65 78 74 65 6e 64 20 7b 72 65 76 6e 72 20 d extend {revnr
1050: 63 6f 6d 6d 69 74 6d 73 67 20 74 65 78 74 72 61 commitmsg textra
1060: 6e 67 65 7d 20 7b 0a 09 73 65 74 20 63 6d 69 64 nge} {..set cmid
1070: 20 5b 24 6d 79 70 72 6f 6a 65 63 74 20 64 65 66 [$myproject def
1080: 63 6d 65 73 73 61 67 65 20 5b 73 74 72 69 6e 67 cmessage [string
1090: 20 74 72 69 6d 20 24 63 6f 6d 6d 69 74 6d 73 67 trim $commitmsg
10a0: 5d 5d 0a 0a 09 73 65 74 20 72 65 76 20 24 6d 79 ]]...set rev $my
10b0: 72 65 76 28 24 72 65 76 6e 72 29 0a 0a 09 69 66 rev($revnr)...if
10c0: 20 7b 5b 24 72 65 76 20 68 61 73 6d 65 74 61 5d {[$rev hasmeta]
10d0: 7d 20 7b 0a 09 20 20 20 20 23 20 41 70 70 61 72 } {.. # Appar
10e0: 65 6e 74 6c 79 20 72 65 70 6f 73 69 74 6f 72 69 ently repositori
10f0: 65 73 20 65 78 69 73 74 20 69 6e 20 77 68 69 63 es exist in whic
1100: 68 20 74 68 65 20 64 65 6c 74 61 20 64 61 74 61 h the delta data
1110: 0a 09 20 20 20 20 23 20 66 6f 72 20 72 65 76 69 .. # for revi
1120: 73 69 6f 6e 20 31 2e 31 20 69 73 20 70 72 6f 76 sion 1.1 is prov
1130: 69 64 65 64 20 73 65 76 65 72 61 6c 20 74 69 6d ided several tim
1140: 65 73 2c 20 61 74 20 6c 65 61 73 74 0a 09 20 20 es, at least..
1150: 20 20 23 20 74 77 69 63 65 2e 20 54 68 65 20 61 # twice. The a
1160: 63 74 75 61 6c 20 63 61 75 73 65 20 6f 66 20 74 ctual cause of t
1170: 68 69 73 20 64 75 70 6c 69 63 61 74 69 6f 6e 20 his duplication
1180: 69 73 20 6e 6f 74 0a 09 20 20 20 20 23 20 6b 6e is not.. # kn
1190: 6f 77 6e 2e 20 53 70 65 63 75 6c 61 74 69 6f 6e own. Speculation
11a0: 20 63 65 6e 74 65 72 73 20 6f 6e 20 52 43 53 2f centers on RCS/
11b0: 43 56 53 20 62 75 67 73 2c 20 6f 72 20 66 72 6f CVS bugs, or fro
11c0: 6d 0a 09 20 20 20 20 23 20 6d 61 6e 75 61 6c 20 m.. # manual
11d0: 65 64 69 74 73 20 6f 66 20 74 68 65 20 72 65 70 edits of the rep
11e0: 6f 73 69 74 6f 72 79 20 77 68 69 63 68 20 62 6f ository which bo
11f0: 72 6b 65 64 20 74 68 65 0a 09 20 20 20 20 23 20 rked the.. #
1200: 69 6e 74 65 72 6e 61 6c 73 2e 20 57 68 61 74 65 internals. Whate
1210: 76 65 72 20 74 68 65 20 63 61 75 73 65 2c 20 74 ver the cause, t
1220: 65 73 74 69 6e 67 20 73 68 6f 77 65 64 20 74 68 esting showed th
1230: 61 74 20 62 6f 74 68 0a 09 20 20 20 20 23 20 63 at both.. # c
1240: 76 73 20 61 6e 64 20 72 63 73 20 75 73 65 20 74 vs and rcs use t
1250: 68 65 20 66 69 72 73 74 20 64 65 66 69 6e 69 74 he first definit
1260: 69 6f 6e 20 77 68 65 6e 20 70 65 72 66 6f 72 6d ion when perform
1270: 69 6e 67 20 61 0a 09 20 20 20 20 23 20 63 68 65 ing a.. # che
1280: 63 6b 6f 75 74 2c 20 61 6e 64 20 77 65 20 66 6f ckout, and we fo
1290: 6c 6c 6f 77 20 74 68 65 69 72 20 6c 65 61 64 2e llow their lead.
12a0: 20 53 69 64 65 20 6e 6f 74 65 73 3a 20 27 63 76 Side notes: 'cv
12b0: 73 0a 09 20 20 20 20 23 20 6c 6f 67 27 20 66 61 s.. # log' fa
12c0: 69 6c 73 20 6f 6e 20 73 75 63 68 20 61 20 66 69 ils on such a fi
12d0: 6c 65 2c 20 61 6e 64 20 27 63 76 73 20 72 6c 6f le, and 'cvs rlo
12e0: 67 27 20 70 72 69 6e 74 73 20 74 68 65 20 6c 6f g' prints the lo
12f0: 67 0a 09 20 20 20 20 23 20 6d 65 73 73 61 67 65 g.. # message
1300: 20 66 72 6f 6d 20 74 68 65 20 66 69 72 73 74 20 from the first
1310: 64 65 6c 74 61 2c 20 69 67 6e 6f 72 69 6e 67 20 delta, ignoring
1320: 74 68 65 20 73 65 63 6f 6e 64 2e 0a 0a 09 20 20 the second....
1330: 20 20 6c 6f 67 20 77 72 69 74 65 20 31 20 66 69 log write 1 fi
1340: 6c 65 20 22 49 6e 20 66 69 6c 65 20 24 6d 79 70 le "In file $myp
1350: 61 74 68 20 3a 20 44 75 70 6c 69 63 61 74 65 20 ath : Duplicate
1360: 64 65 6c 74 61 20 64 61 74 61 20 66 6f 72 20 72 delta data for r
1370: 65 76 69 73 69 6f 6e 20 24 72 65 76 6e 72 22 0a evision $revnr".
1380: 09 20 20 20 20 6c 6f 67 20 77 72 69 74 65 20 31 . log write 1
1390: 20 66 69 6c 65 20 22 49 67 6e 6f 72 69 6e 67 20 file "Ignoring
13a0: 74 68 65 20 64 75 70 6c 69 63 61 74 65 22 0a 09 the duplicate"..
13b0: 20 20 20 20 72 65 74 75 72 6e 0a 09 7d 0a 0a 09 return..}...
13c0: 23 20 44 65 74 65 72 6d 69 6e 65 20 74 68 65 20 # Determine the
13d0: 6c 69 6e 65 20 6f 66 20 64 65 76 65 6c 6f 70 6d line of developm
13e0: 65 6e 74 20 66 6f 72 20 74 68 65 20 72 65 76 69 ent for the revi
13f0: 73 69 6f 6e 20 28 70 72 6f 6a 65 63 74 0a 09 23 sion (project..#
1400: 20 6c 65 76 65 6c 29 2e 20 54 68 69 73 20 67 69 level). This gi
1410: 76 65 73 20 75 73 20 74 68 65 20 62 72 61 6e 63 ves us the branc
1420: 68 69 64 20 74 6f 6f 2c 20 72 65 71 75 69 72 65 hid too, require
1430: 64 20 66 6f 72 20 74 68 65 0a 09 23 20 6d 65 74 d for the..# met
1440: 61 20 64 61 74 61 20 67 72 6f 75 70 20 74 68 65 a data group the
1450: 20 72 65 76 69 73 69 6f 6e 20 69 73 20 69 6e 2e revision is in.
1460: 20 28 4e 6f 74 65 3a 20 42 79 20 70 75 74 74 69 (Note: By putti
1470: 6e 67 20 62 6f 74 68 0a 09 23 20 62 72 61 6e 63 ng both..# branc
1480: 68 2f 6c 6f 64 20 61 6e 64 20 70 72 6f 6a 65 63 h/lod and projec
1490: 74 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 6e t information in
14a0: 74 6f 20 74 68 65 20 67 72 6f 75 70 20 77 65 20 to the group we
14b0: 65 6e 73 75 72 65 0a 09 23 20 74 68 61 74 20 61 ensure..# that a
14c0: 6e 79 20 63 72 6f 73 73 2d 70 72 6f 6a 65 63 74 ny cross-project
14d0: 20 61 6e 64 20 63 72 6f 73 73 2d 62 72 61 6e 63 and cross-branc
14e0: 68 20 63 6f 6d 6d 69 74 73 20 61 72 65 0a 09 23 h commits are..#
14f0: 20 73 65 70 61 72 61 74 65 64 20 69 6e 74 6f 20 separated into
1500: 6d 75 6c 74 69 70 6c 65 20 63 6f 6d 6d 69 74 73 multiple commits
1510: 2c 20 6f 6e 65 20 69 6e 20 65 61 63 68 20 6f 66 , one in each of
1520: 20 74 68 65 20 70 72 6f 6a 65 63 74 73 0a 09 23 the projects..#
1530: 20 61 6e 64 2f 6f 72 20 62 72 61 6e 63 68 65 73 and/or branches
1540: 29 2e 0a 0a 09 73 65 74 20 6c 6f 64 20 5b 24 73 )....set lod [$s
1550: 65 6c 66 20 47 65 74 4c 4f 44 20 24 72 65 76 6e elf GetLOD $revn
1560: 72 5d 0a 0a 09 24 72 65 76 20 73 65 74 6d 65 74 r]...$rev setmet
1570: 61 20 5b 24 6d 79 70 72 6f 6a 65 63 74 20 64 65 a [$myproject de
1580: 66 6d 65 74 61 20 5b 24 6c 6f 64 20 69 64 5d 20 fmeta [$lod id]
1590: 24 6d 79 61 69 64 28 24 72 65 76 6e 72 29 20 24 $myaid($revnr) $
15a0: 63 6d 69 64 5d 0a 09 24 72 65 76 20 73 65 74 74 cmid]..$rev sett
15b0: 65 78 74 20 24 74 65 78 74 72 61 6e 67 65 0a 09 ext $textrange..
15c0: 24 72 65 76 20 73 65 74 6c 6f 64 20 20 24 6c 6f $rev setlod $lo
15d0: 64 0a 0a 09 23 20 49 66 20 74 68 69 73 20 69 73 d...# If this is
15e0: 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 2c 20 77 revision 1.1, w
15f0: 65 20 68 61 76 65 20 74 6f 20 64 65 74 65 72 6d e have to determ
1600: 69 6e 65 20 77 68 65 74 68 65 72 20 74 68 65 0a ine whether the.
1610: 09 23 20 66 69 6c 65 20 73 65 65 6d 73 20 74 6f .# file seems to
1620: 20 68 61 76 65 20 62 65 65 6e 20 63 72 65 61 74 have been creat
1630: 65 64 20 74 68 72 6f 75 67 68 20 27 63 76 73 20 ed through 'cvs
1640: 61 64 64 27 20 69 6e 73 74 65 61 64 20 6f 66 0a add' instead of.
1650: 09 23 20 27 63 76 73 20 69 6d 70 6f 72 74 27 2e .# 'cvs import'.
1660: 20 54 68 69 73 20 63 61 6e 20 62 65 20 64 6f 6e This can be don
1670: 65 20 62 79 20 6c 6f 6f 6b 69 6e 67 20 61 74 20 e by looking at
1680: 74 68 65 20 75 6e 2d 0a 09 23 20 61 64 75 6c 74 the un-..# adult
1690: 65 72 61 74 65 64 20 63 6f 6d 6d 69 74 20 6d 65 erated commit me
16a0: 73 73 61 67 65 2c 20 61 73 20 43 56 53 20 75 73 ssage, as CVS us
16b0: 65 73 20 61 20 68 61 72 64 77 69 72 65 64 20 6d es a hardwired m
16c0: 61 67 69 63 0a 09 23 20 6d 65 73 73 61 67 65 20 agic..# message
16d0: 66 6f 72 20 74 68 65 20 6c 61 74 74 65 72 2c 20 for the latter,
16e0: 69 2e 65 2e 20 22 49 6e 69 74 69 61 6c 20 72 65 i.e. "Initial re
16f0: 76 69 73 69 6f 6e 5c 6e 22 2c 20 6e 6f 0a 09 23 vision\n", no..#
1700: 20 70 65 72 69 6f 64 2e 20 20 28 54 68 69 73 20 period. (This
1710: 66 61 63 74 20 61 6c 73 6f 20 68 65 6c 70 73 20 fact also helps
1720: 75 73 20 77 68 65 6e 20 74 68 65 20 74 69 6d 65 us when the time
1730: 20 63 6f 6d 65 73 20 74 6f 0a 09 23 20 64 65 74 comes to..# det
1740: 65 72 6d 69 6e 65 20 77 68 65 74 68 65 72 20 74 ermine whether t
1750: 68 69 73 20 66 69 6c 65 20 6d 69 67 68 74 20 68 his file might h
1760: 61 76 65 20 68 61 64 20 61 20 64 65 66 61 75 6c ave had a defaul
1770: 74 20 62 72 61 6e 63 68 0a 09 23 20 69 6e 20 74 t branch..# in t
1780: 68 65 20 70 61 73 74 2e 29 0a 0a 09 69 66 20 7b he past.)...if {
1790: 24 72 65 76 6e 72 20 65 71 20 22 31 2e 31 22 7d $revnr eq "1.1"}
17a0: 20 7b 0a 09 20 20 20 20 73 65 74 20 6d 79 69 6d {.. set myim
17b0: 70 6f 72 74 65 64 20 5b 65 78 70 72 20 7b 24 63 ported [expr {$c
17c0: 6f 6d 6d 69 74 6d 73 67 20 65 71 20 22 49 6e 69 ommitmsg eq "Ini
17d0: 74 69 61 6c 20 72 65 76 69 73 69 6f 6e 5c 6e 22 tial revision\n"
17e0: 7d 5d 0a 09 7d 0a 0a 09 23 20 48 65 72 65 20 77 }]..}...# Here w
17f0: 65 20 61 6c 73 6f 20 6b 65 65 70 20 74 72 61 63 e also keep trac
1800: 6b 20 6f 66 20 74 68 65 20 6f 72 64 65 72 20 69 k of the order i
1810: 6e 20 77 68 69 63 68 20 74 68 65 20 72 65 76 69 n which the revi
1820: 73 69 6f 6e 73 0a 09 23 20 77 65 72 65 20 61 64 sions..# were ad
1830: 64 65 64 20 74 6f 20 74 68 65 20 66 69 6c 65 2e ded to the file.
1840: 0a 0a 09 6c 61 70 70 65 6e 64 20 6d 79 72 65 76 ...lappend myrev
1850: 69 73 69 6f 6e 73 20 24 72 65 76 0a 09 72 65 74 isions $rev..ret
1860: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d urn. }.. m
1870: 65 74 68 6f 64 20 64 6f 6e 65 20 7b 7d 20 7b 0a ethod done {} {.
1880: 09 23 20 43 6f 6d 70 6c 65 74 65 20 74 68 65 20 .# Complete the
1890: 72 65 76 69 73 69 6f 6e 73 2c 20 62 72 61 6e 63 revisions, branc
18a0: 68 65 73 2c 20 61 6e 64 20 74 61 67 73 2e 20 54 hes, and tags. T
18b0: 68 69 73 20 69 6e 63 6c 75 64 65 73 0a 09 23 20 his includes..#
18c0: 6c 6f 6f 6b 69 6e 67 20 66 6f 72 20 61 20 6e 6f looking for a no
18d0: 6e 2d 74 72 75 6e 6b 20 64 65 66 61 75 6c 74 20 n-trunk default
18e0: 62 72 61 6e 63 68 2c 20 6d 61 72 6b 69 6e 67 20 branch, marking
18f0: 69 74 73 20 6d 65 6d 62 65 72 73 0a 09 23 20 61 its members..# a
1900: 6e 64 20 6c 69 6e 6b 69 6e 67 20 74 68 65 6d 20 nd linking them
1910: 69 6e 74 6f 20 74 68 65 20 74 72 75 6e 6b 2e 0a into the trunk..
1920: 0a 09 24 73 65 6c 66 20 44 65 74 65 72 6d 69 6e ..$self Determin
1930: 65 52 65 76 69 73 69 6f 6e 4f 70 65 72 61 74 69 eRevisionOperati
1940: 6f 6e 73 0a 09 24 73 65 6c 66 20 44 65 74 65 72 ons..$self Deter
1950: 6d 69 6e 65 4c 69 6e 65 73 4f 66 44 65 76 65 6c mineLinesOfDevel
1960: 6f 70 6d 65 6e 74 0a 09 24 73 65 6c 66 20 48 61 opment..$self Ha
1970: 6e 64 6c 65 4e 6f 6e 54 72 75 6e 6b 44 65 66 61 ndleNonTrunkDefa
1980: 75 6c 74 42 72 61 6e 63 68 0a 09 24 73 65 6c 66 ultBranch..$self
1990: 20 52 65 6d 6f 76 65 49 72 72 65 6c 65 76 61 6e RemoveIrrelevan
19a0: 74 44 65 6c 65 74 69 6f 6e 73 0a 09 24 73 65 6c tDeletions..$sel
19b0: 66 20 52 65 6d 6f 76 65 49 6e 69 74 69 61 6c 42 f RemoveInitialB
19c0: 72 61 6e 63 68 44 65 6c 65 74 69 6f 6e 73 0a 0a ranchDeletions..
19d0: 09 69 66 20 7b 5b 24 6d 79 70 72 6f 6a 65 63 74 .if {[$myproject
19e0: 20 74 72 75 6e 6b 6f 6e 6c 79 5d 7d 20 7b 0a 09 trunkonly]} {..
19f0: 20 20 20 20 24 73 65 6c 66 20 45 78 63 6c 75 64 $self Exclud
1a00: 65 4e 6f 6e 54 72 75 6e 6b 49 6e 66 6f 72 6d 61 eNonTrunkInforma
1a10: 74 69 6f 6e 0a 09 7d 0a 09 72 65 74 75 72 6e 0a tion..}..return.
1a20: 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 23 20 23 }.. # # #
1a30: 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 # ### ##### ####
1a40: 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 #### ###########
1a50: 23 23 0a 20 20 20 20 23 23 20 53 74 61 74 65 0a ##. ## State.
1a60: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 . variable my
1a70: 70 61 74 68 20 20 20 20 20 20 20 20 20 20 20 20 path
1a80: 7b 7d 20 3b 20 23 20 50 61 74 68 20 6f 66 20 74 {} ; # Path of t
1a90: 68 65 20 66 69 6c 65 27 73 20 72 63 73 20 61 72 he file's rcs ar
1aa0: 63 68 69 76 65 2e 0a 20 20 20 20 76 61 72 69 61 chive.. varia
1ab0: 62 6c 65 20 6d 79 75 73 72 70 61 74 68 20 20 20 ble myusrpath
1ac0: 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 50 61 74 {} ; # Pat
1ad0: 68 20 6f 66 20 74 68 65 20 66 69 6c 65 20 61 73 h of the file as
1ae0: 20 73 65 65 6e 20 62 79 20 75 73 65 72 73 2e 0a seen by users..
1af0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 65 variable mye
1b00: 78 65 63 75 74 61 62 6c 65 20 20 20 20 20 20 30 xecutable 0
1b10: 20 20 3b 20 23 20 42 6f 6f 6c 65 61 6e 20 66 6c ; # Boolean fl
1b20: 61 67 20 27 66 69 6c 65 20 65 78 65 63 75 74 61 ag 'file executa
1b30: 62 6c 65 27 2e 0a 20 20 20 20 76 61 72 69 61 62 ble'.. variab
1b40: 6c 65 20 6d 79 70 72 6f 6a 65 63 74 20 20 20 20 le myproject
1b50: 20 20 20 20 20 7b 7d 20 3b 20 23 20 52 65 66 65 {} ; # Refe
1b60: 72 65 6e 63 65 20 74 6f 20 74 68 65 20 70 72 6f rence to the pro
1b70: 6a 65 63 74 20 6f 62 6a 65 63 74 0a 09 09 09 09 ject object.....
1b80: 20 20 20 20 23 20 74 68 65 20 66 69 6c 65 20 62 # the file b
1b90: 65 6c 6f 6e 67 73 20 74 6f 2e 0a 20 20 20 20 76 elongs to.. v
1ba0: 61 72 69 61 62 6c 65 20 6d 79 72 65 76 20 2d 61 ariable myrev -a
1bb0: 72 72 61 79 20 20 20 20 20 20 7b 7d 20 3b 20 23 rray {} ; #
1bc0: 20 4d 61 70 73 20 72 65 76 69 73 69 6f 6e 20 6e Maps revision n
1bd0: 75 6d 62 65 72 20 74 6f 20 74 68 65 0a 09 09 09 umber to the....
1be0: 09 20 20 20 20 23 20 61 73 73 6f 63 69 61 74 65 . # associate
1bf0: 64 20 72 65 76 69 73 69 6f 6e 20 6f 62 6a 65 63 d revision objec
1c00: 74 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 t.. variable
1c10: 6d 79 72 65 76 69 73 69 6f 6e 73 20 20 20 20 20 myrevisions
1c20: 20 20 7b 7d 20 3b 20 23 20 53 61 6d 65 20 61 73 {} ; # Same as
1c30: 20 6d 79 72 65 76 2c 20 62 75 74 20 61 20 6c 69 myrev, but a li
1c40: 73 74 2c 0a 09 09 09 09 20 20 20 20 23 20 67 69 st,..... # gi
1c50: 76 69 6e 67 20 75 73 20 74 68 65 20 6f 72 64 65 ving us the orde
1c60: 72 20 6f 66 0a 09 09 09 09 20 20 20 20 23 20 72 r of..... # r
1c70: 65 76 69 73 69 6f 6e 73 2e 0a 20 20 20 20 76 61 evisions.. va
1c80: 72 69 61 62 6c 65 20 6d 79 61 69 64 20 20 20 20 riable myaid
1c90: 20 20 2d 61 72 72 61 79 20 7b 7d 20 3b 20 23 20 -array {} ; #
1ca0: 4d 61 70 20 72 65 76 69 73 69 6f 6e 20 6e 75 6d Map revision num
1cb0: 62 65 72 73 20 74 6f 20 74 68 65 20 69 64 0a 09 bers to the id..
1cc0: 09 09 09 20 20 20 20 23 20 6f 66 20 74 68 65 20 ... # of the
1cd0: 61 75 74 68 6f 72 20 77 68 6f 20 63 6f 6d 6d 69 author who commi
1ce0: 74 74 65 64 0a 09 09 09 09 20 20 20 20 23 20 69 tted..... # i
1cf0: 74 2e 20 54 68 69 73 20 69 73 20 6c 61 74 65 72 t. This is later
1d00: 20 61 67 67 72 65 67 61 74 65 64 0a 09 09 09 09 aggregated.....
1d10: 20 20 20 20 23 20 77 69 74 68 20 63 6f 6d 6d 69 # with commi
1d20: 74 20 6d 65 73 73 61 67 65 2c 20 62 72 61 6e 63 t message, branc
1d30: 68 20 6e 61 6d 65 0a 09 09 09 09 20 20 20 20 23 h name..... #
1d40: 20 61 6e 64 20 70 72 6f 6a 65 63 74 20 69 64 20 and project id
1d50: 66 6f 72 20 61 20 6d 65 74 61 20 69 64 2e 0a 20 for a meta id..
1d60: 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 68 65 variable myhe
1d70: 61 64 72 65 76 6e 72 20 20 20 20 20 20 20 7b 7d adrevnr {}
1d80: 20 3b 20 23 20 48 65 61 64 20 72 65 76 69 73 69 ; # Head revisi
1d90: 6f 6e 20 28 72 65 76 69 73 69 6f 6e 20 6e 75 6d on (revision num
1da0: 62 65 72 29 0a 20 20 20 20 76 61 72 69 61 62 6c ber). variabl
1db0: 65 20 6d 79 70 72 69 6e 63 69 70 61 6c 20 20 20 e myprincipal
1dc0: 20 20 20 20 7b 7d 20 3b 20 23 20 50 72 69 6e 63 {} ; # Princ
1dd0: 69 70 61 6c 20 62 72 61 6e 63 68 20 28 62 72 61 ipal branch (bra
1de0: 6e 63 68 20 6e 75 6d 62 65 72 29 2e 0a 09 09 09 nch number).....
1df0: 09 20 20 20 20 23 20 43 6f 6e 74 72 61 72 79 20 . # Contrary
1e00: 74 6f 20 74 68 65 20 6e 61 6d 65 20 74 68 69 73 to the name this
1e10: 20 69 73 20 74 68 65 0a 09 09 09 09 20 20 20 20 is the.....
1e20: 23 20 64 65 66 61 75 6c 74 20 62 72 61 6e 63 68 # default branch
1e30: 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d .. variable m
1e40: 79 64 65 70 65 6e 64 65 6e 63 69 65 73 20 20 20 ydependencies
1e50: 20 7b 7d 20 3b 20 23 20 44 69 63 74 69 6f 6e 61 {} ; # Dictiona
1e60: 72 79 20 70 61 72 65 6e 74 20 2d 3e 20 63 68 69 ry parent -> chi
1e70: 6c 64 2c 0a 09 09 09 09 20 20 20 20 23 20 72 65 ld,..... # re
1e80: 63 6f 72 64 73 20 70 72 69 6d 61 72 79 20 64 65 cords primary de
1e90: 70 65 6e 64 65 6e 63 69 65 73 2e 0a 20 20 20 20 pendencies..
1ea0: 76 61 72 69 61 62 6c 65 20 6d 79 69 6d 70 6f 72 variable myimpor
1eb0: 74 65 64 20 20 20 20 20 20 20 20 30 20 20 3b 20 ted 0 ;
1ec0: 23 20 42 6f 6f 6c 65 61 6e 20 66 6c 61 67 2e 20 # Boolean flag.
1ed0: 53 65 74 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 Set if and only
1ee0: 69 66 0a 09 09 09 09 20 20 20 20 23 20 72 65 76 if..... # rev
1ef0: 20 31 2e 31 20 6f 66 20 74 68 65 20 66 69 6c 65 1.1 of the file
1f00: 20 73 65 65 6d 69 6e 67 6c 79 0a 09 09 09 09 20 seemingly.....
1f10: 20 20 20 23 20 77 61 73 20 69 6d 70 6f 72 74 65 # was importe
1f20: 64 20 69 6e 73 74 65 61 64 20 6f 66 20 61 64 64 d instead of add
1f30: 65 64 0a 09 09 09 09 20 20 20 20 23 20 6e 6f 72 ed..... # nor
1f40: 6d 61 6c 6c 79 2e 0a 20 20 20 20 76 61 72 69 61 mally.. varia
1f50: 62 6c 65 20 6d 79 72 6f 6f 74 20 20 20 20 20 20 ble myroot
1f60: 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 52 65 66 {} ; # Ref
1f70: 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 72 65 erence to the re
1f80: 76 69 73 69 6f 6e 20 6f 62 6a 65 63 74 0a 09 09 vision object...
1f90: 09 09 20 20 20 20 23 20 68 6f 6c 64 69 6e 67 20 .. # holding
1fa0: 74 68 65 20 72 6f 6f 74 20 72 65 76 69 73 69 6f the root revisio
1fb0: 6e 2e 20 20 49 74 73 0a 09 09 09 09 20 20 20 20 n. Its.....
1fc0: 23 20 6e 75 6d 62 65 72 20 75 73 75 61 6c 6c 79 # number usually
1fd0: 20 69 73 20 27 31 2e 31 27 2e 20 43 61 6e 20 62 is '1.1'. Can b
1fe0: 65 0a 09 09 09 09 20 20 20 20 23 20 61 20 64 69 e..... # a di
1ff0: 66 66 65 72 65 6e 74 20 6e 75 6d 62 65 72 2c 20 fferent number,
2000: 62 65 63 61 75 73 65 20 6f 66 0a 09 09 09 09 20 because of.....
2010: 20 20 20 23 20 67 61 70 73 20 63 72 65 61 74 65 # gaps create
2020: 64 20 76 69 61 20 27 63 76 73 61 64 6d 69 6e 20 d via 'cvsadmin
2030: 2d 6f 27 2e 0a 20 20 20 20 76 61 72 69 61 62 6c -o'.. variabl
2040: 65 20 6d 79 62 72 61 6e 63 68 65 73 20 2d 61 72 e mybranches -ar
2050: 72 61 79 20 7b 7d 20 3b 20 23 20 4d 61 70 73 20 ray {} ; # Maps
2060: 62 72 61 6e 63 68 20 6e 75 6d 62 65 72 20 74 6f branch number to
2070: 20 74 68 65 20 73 79 6d 62 6f 6c 0a 09 09 09 09 the symbol.....
2080: 20 20 20 20 23 20 6f 62 6a 65 63 74 20 68 61 6e # object han
2090: 64 6c 69 6e 67 20 74 68 65 20 62 72 61 6e 63 68 dling the branch
20a0: 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d .. variable m
20b0: 79 74 61 67 73 20 20 20 20 20 2d 61 72 72 61 79 ytags -array
20c0: 20 7b 7d 20 3b 20 23 20 4d 61 70 73 20 72 65 76 {} ; # Maps rev
20d0: 69 73 69 6f 6e 20 6e 75 6d 62 65 72 20 74 6f 20 ision number to
20e0: 74 68 65 20 6c 69 73 74 0a 09 09 09 09 20 20 20 the list.....
20f0: 20 23 20 6f 66 20 73 79 6d 62 6f 6c 20 6f 62 6a # of symbol obj
2100: 65 63 74 73 20 66 6f 72 20 74 68 65 20 74 61 67 ects for the tag
2110: 73 0a 09 09 09 09 20 20 20 20 23 20 61 73 73 6f s..... # asso
2120: 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20 ciated with the
2130: 72 65 76 69 73 69 6f 6e 2e 0a 20 20 20 20 76 61 revision.. va
2140: 72 69 61 62 6c 65 20 6d 79 73 79 6d 62 6f 6c 73 riable mysymbols
2150: 20 20 20 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 {} ; #
2160: 53 65 74 20 6f 66 20 74 68 65 20 73 79 6d 62 6f Set of the symbo
2170: 6c 20 6e 61 6d 65 73 20 66 6f 75 6e 64 20 69 6e l names found in
2180: 0a 09 09 09 09 20 20 20 20 23 20 74 68 69 73 20 ..... # this
2190: 66 69 6c 65 2e 0a 0a 20 20 20 20 76 61 72 69 61 file... varia
21a0: 62 6c 65 20 6d 79 62 72 61 6e 63 68 63 6e 74 20 ble mybranchcnt
21b0: 30 20 3b 20 23 20 43 6f 75 6e 74 65 72 20 66 6f 0 ; # Counter fo
21c0: 72 20 62 72 61 6e 63 68 65 73 2c 20 74 6f 20 72 r branches, to r
21d0: 65 63 6f 72 64 20 74 68 65 69 72 0a 09 09 09 20 ecord their....
21e0: 20 20 20 20 23 20 6f 72 64 65 72 20 6f 66 20 64 # order of d
21f0: 65 66 69 6e 69 74 69 6f 6e 2e 20 54 68 69 73 20 efinition. This
2200: 61 6c 73 6f 20 64 65 66 69 6e 65 73 0a 09 09 09 also defines....
2210: 20 20 20 20 20 23 20 74 68 65 69 72 20 6f 72 64 # their ord
2220: 65 72 20 6f 66 20 63 72 65 61 74 69 6f 6e 2c 20 er of creation,
2230: 77 68 69 63 68 20 69 73 20 74 68 65 0a 09 09 09 which is the....
2240: 20 20 20 20 20 23 20 72 65 76 65 72 73 65 20 6f # reverse o
2250: 66 20 64 65 66 69 6e 69 74 69 6f 6e 2e 20 20 49 f definition. I
2260: 2e 65 2e 20 61 20 73 6d 61 6c 6c 65 72 0a 09 09 .e. a smaller...
2270: 09 20 20 20 20 20 23 20 6e 75 6d 62 65 72 20 6d . # number m
2280: 65 61 6e 73 20 27 44 65 66 69 6e 65 64 20 65 61 eans 'Defined ea
2290: 72 6c 69 65 72 27 2c 20 6d 65 61 6e 73 0a 09 09 rlier', means...
22a0: 09 20 20 20 20 20 23 20 27 43 72 65 61 74 65 64 . # 'Created
22b0: 20 6c 61 74 65 72 27 2e 0a 0a 20 20 20 20 76 61 later'... va
22c0: 72 69 61 62 6c 65 20 6d 79 74 72 75 6e 6b 20 7b riable mytrunk {
22d0: 7d 20 3b 20 23 20 44 69 72 65 63 74 20 72 65 66 } ; # Direct ref
22e0: 65 72 65 6e 63 65 20 74 6f 20 6d 79 70 72 6f 6a erence to myproj
22f0: 65 63 74 20 2d 3e 20 74 72 75 6e 6b 2e 0a 20 20 ect -> trunk..
2300: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 72 6f 6f variable myroo
2310: 74 73 20 7b 7d 20 3b 20 23 20 4c 69 73 74 20 6f ts {} ; # List o
2320: 66 20 72 6f 6f 74 73 20 69 6e 20 74 68 65 20 66 f roots in the f
2330: 6f 72 65 73 74 20 6f 66 0a 09 09 09 20 20 23 20 orest of.... #
2340: 6c 6f 64 27 73 2e 20 4f 62 6a 65 63 74 20 72 65 lod's. Object re
2350: 66 65 72 65 6e 63 65 73 20 74 6f 20 72 65 76 69 ferences to revi
2360: 73 69 6f 6e 73 20 61 6e 64 0a 09 09 09 20 20 23 sions and.... #
2370: 20 62 72 61 6e 63 68 65 73 2e 20 54 68 65 20 6c branches. The l
2380: 61 74 74 65 72 20 63 61 6e 20 61 70 70 65 61 72 atter can appear
2390: 20 77 68 65 6e 20 74 68 65 79 0a 09 09 09 20 20 when they....
23a0: 23 20 61 72 65 20 73 65 76 65 72 65 64 20 66 72 # are severed fr
23b0: 6f 6d 20 74 68 65 69 72 20 70 61 72 65 6e 74 2e om their parent.
23c0: 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23 .. # # ## ###
23d0: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 ##### ########
23e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 #############.
23f0: 20 20 23 23 20 49 6e 74 65 72 6e 61 6c 20 6d 65 ## Internal me
2400: 74 68 6f 64 73 0a 0a 20 20 20 20 6d 65 74 68 6f thods.. metho
2410: 64 20 52 65 63 6f 72 64 42 72 61 6e 63 68 43 6f d RecordBranchCo
2420: 6d 6d 69 74 73 20 7b 62 72 61 6e 63 68 65 73 7d mmits {branches}
2430: 20 7b 0a 09 66 6f 72 65 61 63 68 20 62 72 61 6e {..foreach bran
2440: 63 68 72 65 76 6e 72 20 24 62 72 61 6e 63 68 65 chrevnr $branche
2450: 73 20 7b 0a 09 20 20 20 20 69 66 20 7b 5b 63 61 s {.. if {[ca
2460: 74 63 68 20 7b 0a 09 09 73 65 74 20 62 72 61 6e tch {...set bran
2470: 63 68 20 5b 24 73 65 6c 66 20 52 65 76 32 42 72 ch [$self Rev2Br
2480: 61 6e 63 68 20 24 62 72 61 6e 63 68 72 65 76 6e anch $branchrevn
2490: 72 5d 0a 09 20 20 20 20 7d 5d 7d 20 7b 0a 09 09 r].. }]} {...
24a0: 73 65 74 20 62 72 61 6e 63 68 20 5b 24 73 65 6c set branch [$sel
24b0: 66 20 41 64 64 55 6e 6c 61 62 65 6c 65 64 42 72 f AddUnlabeledBr
24c0: 61 6e 63 68 20 5b 72 65 76 20 32 62 72 61 6e 63 anch [rev 2branc
24d0: 68 6e 72 20 24 62 72 61 6e 63 68 72 65 76 6e 72 hnr $branchrevnr
24e0: 5d 5d 0a 09 20 20 20 20 7d 0a 0a 09 20 20 20 20 ]].. }...
24f0: 23 20 52 65 63 6f 72 64 20 74 68 65 20 63 6f 6d # Record the com
2500: 6d 69 74 2c 20 6a 75 73 74 20 61 73 20 72 65 76 mit, just as rev
2510: 69 73 69 6f 6e 20 6e 75 6d 62 65 72 20 66 6f 72 ision number for
2520: 0a 09 20 20 20 20 23 20 6e 6f 77 2e 20 50 72 6f .. # now. Pro
2530: 63 65 73 42 72 61 6e 63 68 44 65 70 65 6e 64 65 cesBranchDepende
2540: 6e 63 69 65 73 20 77 69 6c 6c 20 65 78 74 65 6e ncies will exten
2550: 64 20 74 68 61 74 20 69 74 6f 20 61 0a 09 20 20 d that ito a..
2560: 20 20 23 20 70 72 6f 70 65 72 20 6f 62 6a 65 63 # proper objec
2570: 74 20 72 65 66 65 72 65 6e 63 65 2e 0a 0a 09 20 t reference....
2580: 20 20 20 24 62 72 61 6e 63 68 20 73 65 74 63 68 $branch setch
2590: 69 6c 64 72 65 76 6e 72 20 24 62 72 61 6e 63 68 ildrevnr $branch
25a0: 72 65 76 6e 72 0a 09 7d 0a 09 72 65 74 75 72 6e revnr..}..return
25b0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 . }.. meth
25c0: 6f 64 20 52 65 76 32 42 72 61 6e 63 68 20 7b 72 od Rev2Branch {r
25d0: 65 76 6e 72 7d 20 7b 0a 09 69 66 20 7b 5b 72 65 evnr} {..if {[re
25e0: 76 20 69 73 74 72 75 6e 6b 72 65 76 6e 72 20 24 v istrunkrevnr $
25f0: 72 65 76 6e 72 5d 7d 20 7b 0a 09 20 20 20 20 74 revnr]} {.. t
2600: 72 6f 75 62 6c 65 20 69 6e 74 65 72 6e 61 6c 20 rouble internal
2610: 22 45 78 70 65 63 74 65 64 20 61 20 62 72 61 6e "Expected a bran
2620: 63 68 20 72 65 76 69 73 69 6f 6e 20 6e 75 6d 62 ch revision numb
2630: 65 72 22 0a 09 7d 0a 09 72 65 74 75 72 6e 20 24 er"..}..return $
2640: 6d 79 62 72 61 6e 63 68 65 73 28 5b 72 65 76 20 mybranches([rev
2650: 32 62 72 61 6e 63 68 6e 72 20 24 72 65 76 6e 72 2branchnr $revnr
2660: 5d 29 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 ]). }.. me
2670: 74 68 6f 64 20 41 64 64 55 6e 6c 61 62 65 6c 65 thod AddUnlabele
2680: 64 42 72 61 6e 63 68 20 7b 62 72 61 6e 63 68 6e dBranch {branchn
2690: 72 7d 20 7b 0a 09 72 65 74 75 72 6e 20 5b 24 73 r} {..return [$s
26a0: 65 6c 66 20 41 64 64 42 72 61 6e 63 68 20 75 6e elf AddBranch un
26b0: 6c 61 62 65 6c 65 64 2d 24 62 72 61 6e 63 68 6e labeled-$branchn
26c0: 72 20 24 62 72 61 6e 63 68 6e 72 5d 0a 20 20 20 r $branchnr].
26d0: 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 41 }.. method A
26e0: 64 64 42 72 61 6e 63 68 20 7b 6e 61 6d 65 20 62 ddBranch {name b
26f0: 72 61 6e 63 68 6e 72 7d 20 7b 0a 09 69 66 20 7b ranchnr} {..if {
2700: 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 6d 79 62 [info exists myb
2710: 72 61 6e 63 68 65 73 28 24 62 72 61 6e 63 68 6e ranches($branchn
2720: 72 29 5d 7d 20 7b 0a 09 20 20 20 20 6c 6f 67 20 r)]} {.. log
2730: 77 72 69 74 65 20 31 20 66 69 6c 65 20 22 49 6e write 1 file "In
2740: 20 27 24 6d 79 70 61 74 68 27 3a 20 42 72 61 6e '$mypath': Bran
2750: 63 68 20 27 24 62 72 61 6e 63 68 6e 72 27 20 6e ch '$branchnr' n
2760: 61 6d 65 64 20 27 5b 24 6d 79 62 72 61 6e 63 68 amed '[$mybranch
2770: 65 73 28 24 62 72 61 6e 63 68 6e 72 29 20 6e 61 es($branchnr) na
2780: 6d 65 5d 27 22 0a 09 20 20 20 20 6c 6f 67 20 77 me]'".. log w
2790: 72 69 74 65 20 31 20 66 69 6c 65 20 22 43 61 6e rite 1 file "Can
27a0: 6e 6f 74 20 68 61 76 65 20 73 65 63 6f 6e 64 20 not have second
27b0: 6e 61 6d 65 20 27 24 6e 61 6d 65 27 2c 20 69 67 name '$name', ig
27c0: 6e 6f 72 69 6e 67 20 69 74 22 0a 09 20 20 20 20 noring it"..
27d0: 72 65 74 75 72 6e 0a 09 7d 0a 09 73 65 74 20 62 return..}..set b
27e0: 72 61 6e 63 68 20 5b 73 79 6d 20 25 41 55 54 4f ranch [sym %AUTO
27f0: 25 20 62 72 61 6e 63 68 20 24 62 72 61 6e 63 68 % branch $branch
2800: 6e 72 20 5b 24 6d 79 70 72 6f 6a 65 63 74 20 67 nr [$myproject g
2810: 65 74 73 79 6d 62 6f 6c 20 24 6e 61 6d 65 5d 5d etsymbol $name]]
2820: 0a 09 24 62 72 61 6e 63 68 20 73 65 74 70 6f 73 ..$branch setpos
2830: 69 74 69 6f 6e 20 5b 69 6e 63 72 20 6d 79 62 72 ition [incr mybr
2840: 61 6e 63 68 63 6e 74 5d 0a 09 73 65 74 20 6d 79 anchcnt]..set my
2850: 62 72 61 6e 63 68 65 73 28 24 62 72 61 6e 63 68 branches($branch
2860: 6e 72 29 20 24 62 72 61 6e 63 68 0a 09 72 65 74 nr) $branch..ret
2870: 75 72 6e 20 24 62 72 61 6e 63 68 0a 20 20 20 20 urn $branch.
2880: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 41 64 }.. method Ad
2890: 64 54 61 67 20 7b 6e 61 6d 65 20 72 65 76 6e 72 dTag {name revnr
28a0: 7d 20 7b 0a 09 73 65 74 20 74 61 67 20 5b 73 79 } {..set tag [sy
28b0: 6d 20 25 41 55 54 4f 25 20 74 61 67 20 24 72 65 m %AUTO% tag $re
28c0: 76 6e 72 20 5b 24 6d 79 70 72 6f 6a 65 63 74 20 vnr [$myproject
28d0: 67 65 74 73 79 6d 62 6f 6c 20 24 6e 61 6d 65 5d getsymbol $name]
28e0: 5d 0a 09 6c 61 70 70 65 6e 64 20 6d 79 74 61 67 ]..lappend mytag
28f0: 73 28 24 72 65 76 6e 72 29 20 24 74 61 67 0a 09 s($revnr) $tag..
2900: 72 65 74 75 72 6e 20 24 74 61 67 0a 20 20 20 20 return $tag.
2910: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 52 65 }.. method Re
2920: 63 6f 72 64 42 61 73 69 63 44 65 70 65 6e 64 65 cordBasicDepende
2930: 6e 63 69 65 73 20 7b 72 65 76 6e 72 20 6e 65 78 ncies {revnr nex
2940: 74 7d 20 7b 0a 09 23 20 48 61 6e 64 6c 65 20 74 t} {..# Handle t
2950: 68 65 20 72 65 76 69 73 69 6f 6e 20 64 65 70 65 he revision depe
2960: 6e 64 65 6e 63 69 65 73 2e 20 52 65 63 6f 72 64 ndencies. Record
2970: 20 74 68 65 6d 20 66 6f 72 20 6e 6f 77 2c 20 64 them for now, d
2980: 6f 0a 09 23 20 6e 6f 74 68 69 6e 67 20 77 69 74 o..# nothing wit
2990: 68 20 74 68 65 6d 20 79 65 74 2e 0a 0a 09 23 20 h them yet....#
29a0: 4f 6e 20 74 68 65 20 74 72 75 6e 6b 20 74 68 65 On the trunk the
29b0: 20 27 6e 65 78 74 27 20 66 69 65 6c 64 20 70 6f 'next' field po
29c0: 69 6e 74 73 20 74 6f 20 74 68 65 20 70 72 65 76 ints to the prev
29d0: 69 6f 75 73 0a 09 23 20 72 65 76 69 73 69 6f 6e ious..# revision
29e0: 2c 20 69 2e 65 2e 20 74 68 65 20 5f 70 61 72 65 , i.e. the _pare
29f0: 6e 74 5f 20 6f 66 20 74 68 65 20 63 75 72 72 65 nt_ of the curre
2a00: 6e 74 20 6f 6e 65 2e 20 45 78 61 6d 70 6c 65 3a nt one. Example:
2a10: 0a 09 23 20 31 2e 36 27 73 20 6e 65 78 74 20 69 ..# 1.6's next i
2a20: 73 20 31 2e 35 20 28 6d 6f 64 75 6c 6f 20 63 76 s 1.5 (modulo cv
2a30: 73 20 61 64 6d 69 6e 20 2d 6f 29 2e 0a 0a 09 23 s admin -o)....#
2a40: 20 43 6f 6e 74 72 61 72 69 6c 79 20 6f 6e 20 61 Contrarily on a
2a50: 20 62 72 61 6e 63 68 20 74 68 65 20 27 6e 65 78 branch the 'nex
2a60: 74 27 20 66 69 65 6c 64 20 70 6f 69 6e 74 73 20 t' field points
2a70: 74 6f 20 74 68 65 0a 09 23 20 70 72 69 6d 61 72 to the..# primar
2a80: 79 20 5f 63 68 69 6c 64 5f 20 6f 66 20 74 68 65 y _child_ of the
2a90: 20 63 75 72 72 65 6e 74 20 72 65 76 69 73 69 6f current revisio
2aa0: 6e 2e 20 41 73 20 65 78 61 6d 70 6c 65 2c 0a 09 n. As example,..
2ab0: 23 20 31 2e 31 2e 33 2e 32 27 73 20 27 6e 65 78 # 1.1.3.2's 'nex
2ac0: 74 27 20 77 69 6c 6c 20 62 65 20 31 2e 31 2e 33 t' will be 1.1.3
2ad0: 2e 33 2e 0a 0a 09 23 20 54 68 65 20 27 6e 65 78 .3....# The 'nex
2ae0: 74 27 20 66 69 65 6c 64 20 61 63 74 75 61 6c 6c t' field actuall
2af0: 79 20 61 6c 77 61 79 73 20 72 65 66 65 72 73 20 y always refers
2b00: 74 6f 20 74 68 65 20 72 65 76 69 73 69 6f 6e 0a to the revision.
2b10: 09 23 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 .# containing th
2b20: 65 20 64 65 6c 74 61 20 6e 65 65 64 65 64 20 74 e delta needed t
2b30: 6f 20 72 65 74 72 69 65 76 65 20 74 68 61 74 20 o retrieve that
2b40: 72 65 76 69 73 69 6f 6e 2e 0a 0a 09 23 20 54 68 revision....# Th
2b50: 65 20 64 65 70 65 6e 64 65 6e 63 69 65 73 20 6e e dependencies n
2b60: 65 65 64 65 64 20 68 65 72 65 20 61 72 65 20 74 eeded here are t
2b70: 68 65 20 6c 6f 67 69 63 61 6c 20 73 74 72 75 63 he logical struc
2b80: 74 75 72 65 2c 0a 09 23 20 70 61 72 65 6e 74 2f ture,..# parent/
2b90: 63 68 69 6c 64 2c 20 61 6e 64 20 6e 6f 74 20 74 child, and not t
2ba0: 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f he implementatio
2bb0: 6e 20 64 65 70 65 6e 64 65 6e 74 20 64 65 6c 74 n dependent delt
2bc0: 61 0a 09 23 20 70 6f 69 6e 74 65 72 73 2e 0a 0a a..# pointers...
2bd0: 09 69 66 20 7b 24 6e 65 78 74 20 65 71 20 22 22 .if {$next eq ""
2be0: 7d 20 72 65 74 75 72 6e 0a 09 23 20 20 20 20 20 } return..#
2bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2c00: 20 20 20 20 20 70 61 72 65 6e 74 20 2d 3e 20 63 parent -> c
2c10: 68 69 6c 64 0a 09 69 66 20 7b 5b 72 65 76 20 69 hild..if {[rev i
2c20: 73 74 72 75 6e 6b 72 65 76 6e 72 20 24 72 65 76 strunkrevnr $rev
2c30: 6e 72 5d 7d 20 7b 0a 09 20 20 20 20 6c 61 70 70 nr]} {.. lapp
2c40: 65 6e 64 20 6d 79 64 65 70 65 6e 64 65 6e 63 69 end mydependenci
2c50: 65 73 20 24 6e 65 78 74 20 24 72 65 76 6e 72 0a es $next $revnr.
2c60: 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 6c .} else {.. l
2c70: 61 70 70 65 6e 64 20 6d 79 64 65 70 65 6e 64 65 append mydepende
2c80: 6e 63 69 65 73 20 24 72 65 76 6e 72 20 24 6e 65 ncies $revnr $ne
2c90: 78 74 0a 09 7d 0a 09 72 65 74 75 72 6e 0a 20 20 xt..}..return.
2ca0: 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 }.. method
2cb0: 50 72 6f 63 65 73 73 50 72 69 6d 61 72 79 44 65 ProcessPrimaryDe
2cc0: 70 65 6e 64 65 6e 63 69 65 73 20 7b 7d 20 7b 0a pendencies {} {.
2cd0: 09 66 6f 72 65 61 63 68 20 7b 70 61 72 65 6e 74 .foreach {parent
2ce0: 72 65 76 6e 72 20 63 68 69 6c 64 72 65 76 6e 72 revnr childrevnr
2cf0: 7d 20 24 6d 79 64 65 70 65 6e 64 65 6e 63 69 65 } $mydependencie
2d00: 73 20 7b 0a 09 20 20 20 20 73 65 74 20 70 61 72 s {.. set par
2d10: 65 6e 74 20 24 6d 79 72 65 76 28 24 70 61 72 65 ent $myrev($pare
2d20: 6e 74 72 65 76 6e 72 29 0a 09 20 20 20 20 73 65 ntrevnr).. se
2d30: 74 20 63 68 69 6c 64 20 20 24 6d 79 72 65 76 28 t child $myrev(
2d40: 24 63 68 69 6c 64 72 65 76 6e 72 29 0a 09 20 20 $childrevnr)..
2d50: 20 20 24 70 61 72 65 6e 74 20 73 65 74 63 68 69 $parent setchi
2d60: 6c 64 20 24 63 68 69 6c 64 0a 09 20 20 20 20 24 ld $child.. $
2d70: 63 68 69 6c 64 20 73 65 74 70 61 72 65 6e 74 20 child setparent
2d80: 24 70 61 72 65 6e 74 0a 09 7d 0a 09 72 65 74 75 $parent..}..retu
2d90: 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 rn. }.. me
2da0: 74 68 6f 64 20 50 72 6f 63 65 73 73 42 72 61 6e thod ProcessBran
2db0: 63 68 44 65 70 65 6e 64 65 6e 63 69 65 73 20 7b chDependencies {
2dc0: 7d 20 7b 0a 09 66 6f 72 65 61 63 68 20 7b 62 72 } {..foreach {br
2dd0: 61 6e 63 68 6e 72 20 62 72 61 6e 63 68 7d 20 5b anchnr branch} [
2de0: 61 72 72 61 79 20 67 65 74 20 6d 79 62 72 61 6e array get mybran
2df0: 63 68 65 73 5d 20 7b 0a 09 20 20 20 20 73 65 74 ches] {.. set
2e00: 20 72 65 76 6e 72 20 5b 24 62 72 61 6e 63 68 20 revnr [$branch
2e10: 70 61 72 65 6e 74 72 65 76 6e 72 5d 0a 0a 09 20 parentrevnr]...
2e20: 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 if {![info ex
2e30: 69 73 74 73 20 6d 79 72 65 76 28 24 72 65 76 6e ists myrev($revn
2e40: 72 29 5d 7d 20 7b 0a 09 09 6c 6f 67 20 77 72 69 r)]} {...log wri
2e50: 74 65 20 31 20 66 69 6c 65 20 22 49 6e 20 27 24 te 1 file "In '$
2e60: 6d 79 70 61 74 68 27 3a 20 54 68 65 20 62 72 61 mypath': The bra
2e70: 6e 63 68 20 27 5b 24 62 72 61 6e 63 68 20 6e 61 nch '[$branch na
2e80: 6d 65 5d 27 20 72 65 66 65 72 65 6e 63 65 73 22 me]' references"
2e90: 0a 09 09 6c 6f 67 20 77 72 69 74 65 20 31 20 66 ...log write 1 f
2ea0: 69 6c 65 20 22 74 68 65 20 62 6f 67 75 73 20 72 ile "the bogus r
2eb0: 65 76 69 73 69 6f 6e 20 27 24 72 65 76 6e 72 27 evision '$revnr'
2ec0: 20 61 6e 64 20 77 69 6c 6c 20 62 65 20 69 67 6e and will be ign
2ed0: 6f 72 65 64 2e 22 0a 09 09 24 62 72 61 6e 63 68 ored."...$branch
2ee0: 20 64 65 73 74 72 6f 79 0a 09 09 75 6e 73 65 74 destroy...unset
2ef0: 20 6d 79 62 72 61 6e 63 68 65 73 28 24 62 72 61 mybranches($bra
2f00: 6e 63 68 6e 72 29 0a 09 20 20 20 20 7d 20 65 6c nchnr).. } el
2f10: 73 65 20 7b 0a 09 09 73 65 74 20 72 65 76 20 24 se {...set rev $
2f20: 6d 79 72 65 76 28 24 72 65 76 6e 72 29 0a 09 09 myrev($revnr)...
2f30: 24 72 65 76 20 61 64 64 62 72 61 6e 63 68 20 24 $rev addbranch $
2f40: 62 72 61 6e 63 68 0a 09 09 24 62 72 61 6e 63 68 branch...$branch
2f50: 20 73 65 74 70 61 72 65 6e 74 20 24 72 65 76 0a setparent $rev.
2f60: 0a 09 09 23 20 49 66 20 72 65 76 69 73 69 6f 6e ...# If revision
2f70: 73 20 77 65 72 65 20 63 6f 6d 6d 69 74 74 65 64 s were committed
2f80: 20 6f 6e 20 74 68 65 20 62 72 61 6e 63 68 20 77 on the branch w
2f90: 65 20 73 74 6f 72 65 20 61 0a 09 09 23 20 72 65 e store a...# re
2fa0: 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 62 ference to the b
2fb0: 72 61 6e 63 68 20 74 68 65 72 65 2c 20 61 6e 64 ranch there, and
2fc0: 20 66 75 72 74 68 65 72 20 64 65 63 6c 61 72 65 further declare
2fd0: 0a 09 09 23 20 74 68 65 20 66 69 72 73 74 20 63 ...# the first c
2fe0: 68 69 6c 64 27 73 20 70 61 72 65 6e 74 20 74 6f hild's parent to
2ff0: 20 62 65 20 62 72 61 6e 63 68 27 73 20 70 61 72 be branch's par
3000: 65 6e 74 2c 20 61 6e 64 0a 09 09 23 20 6c 69 73 ent, and...# lis
3010: 74 20 74 68 69 73 20 63 68 69 6c 64 20 69 6e 20 t this child in
3020: 74 68 65 20 70 61 72 65 6e 74 20 72 65 76 69 73 the parent revis
3030: 69 6f 6e 2e 0a 0a 09 09 69 66 20 7b 5b 24 62 72 ion.....if {[$br
3040: 61 6e 63 68 20 68 61 73 63 68 69 6c 64 5d 7d 20 anch haschild]}
3050: 7b 0a 09 09 20 20 20 20 73 65 74 20 63 68 69 6c {... set chil
3060: 64 72 65 76 6e 72 20 5b 24 62 72 61 6e 63 68 20 drevnr [$branch
3070: 63 68 69 6c 64 72 65 76 6e 72 5d 0a 09 09 20 20 childrevnr]...
3080: 20 20 73 65 74 20 63 68 69 6c 64 20 24 6d 79 72 set child $myr
3090: 65 76 28 24 63 68 69 6c 64 72 65 76 6e 72 29 0a ev($childrevnr).
30a0: 09 09 20 20 20 20 24 62 72 61 6e 63 68 20 73 65 .. $branch se
30b0: 74 63 68 69 6c 64 20 24 63 68 69 6c 64 0a 0a 09 tchild $child...
30c0: 09 20 20 20 20 24 63 68 69 6c 64 20 73 65 74 70 . $child setp
30d0: 61 72 65 6e 74 62 72 61 6e 63 68 20 24 62 72 61 arentbranch $bra
30e0: 6e 63 68 0a 09 09 20 20 20 20 24 63 68 69 6c 64 nch... $child
30f0: 20 73 65 74 70 61 72 65 6e 74 20 20 20 20 20 20 setparent
3100: 20 24 72 65 76 0a 09 09 20 20 20 20 24 72 65 76 $rev... $rev
3110: 20 61 64 64 63 68 69 6c 64 6f 6e 62 72 61 6e 63 addchildonbranc
3120: 68 20 24 63 68 69 6c 64 0a 09 09 7d 0a 09 20 20 h $child...}..
3130: 20 20 7d 0a 09 7d 0a 09 72 65 74 75 72 6e 0a 20 }..}..return.
3140: 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 }.. method
3150: 20 53 6f 72 74 42 72 61 6e 63 68 65 73 20 7b 7d SortBranches {}
3160: 20 7b 0a 09 66 6f 72 65 61 63 68 20 7b 72 65 76 {..foreach {rev
3170: 6e 72 20 72 65 76 7d 20 5b 61 72 72 61 79 20 67 nr rev} [array g
3180: 65 74 20 6d 79 72 65 76 5d 20 7b 20 24 72 65 76 et myrev] { $rev
3190: 20 73 6f 72 74 62 72 61 6e 63 68 65 73 20 7d 0a sortbranches }.
31a0: 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 .return. }..
31b0: 20 20 20 6d 65 74 68 6f 64 20 50 72 6f 63 65 73 method Proces
31c0: 73 54 61 67 44 65 70 65 6e 64 65 6e 63 69 65 73 sTagDependencies
31d0: 20 7b 7d 20 7b 0a 09 66 6f 72 65 61 63 68 20 7b {} {..foreach {
31e0: 72 65 76 6e 72 20 74 61 67 6c 69 73 74 7d 20 5b revnr taglist} [
31f0: 61 72 72 61 79 20 67 65 74 20 6d 79 74 61 67 73 array get mytags
3200: 5d 20 7b 0a 09 20 20 20 20 69 66 20 7b 21 5b 69 ] {.. if {![i
3210: 6e 66 6f 20 65 78 69 73 74 73 20 6d 79 72 65 76 nfo exists myrev
3220: 28 24 72 65 76 6e 72 29 5d 7d 20 7b 0a 09 09 73 ($revnr)]} {...s
3230: 65 74 20 6e 20 5b 6c 6c 65 6e 67 74 68 20 24 74 et n [llength $t
3240: 61 67 6c 69 73 74 5d 0a 09 09 6c 6f 67 20 77 72 aglist]...log wr
3250: 69 74 65 20 31 20 66 69 6c 65 20 22 49 6e 20 27 ite 1 file "In '
3260: 24 6d 79 70 61 74 68 27 3a 20 54 68 65 20 66 6f $mypath': The fo
3270: 6c 6c 6f 77 69 6e 67 20 5b 6e 73 70 20 24 6e 20 llowing [nsp $n
3280: 74 61 67 5d 20 72 65 66 65 72 65 6e 63 65 22 0a tag] reference".
3290: 09 09 6c 6f 67 20 77 72 69 74 65 20 31 20 66 69 ..log write 1 fi
32a0: 6c 65 20 22 74 68 65 20 62 6f 67 75 73 20 72 65 le "the bogus re
32b0: 76 69 73 69 6f 6e 20 27 24 72 65 76 6e 72 27 20 vision '$revnr'
32c0: 61 6e 64 20 77 69 6c 6c 20 62 65 20 69 67 6e 6f and will be igno
32d0: 72 65 64 2e 22 0a 09 09 66 6f 72 65 61 63 68 20 red."...foreach
32e0: 74 61 67 20 24 74 61 67 6c 69 73 74 20 7b 0a 09 tag $taglist {..
32f0: 09 20 20 20 20 6c 6f 67 20 77 72 69 74 65 20 31 . log write 1
3300: 20 66 69 6c 65 20 22 20 20 20 20 5b 24 74 61 67 file " [$tag
3310: 20 6e 61 6d 65 5d 22 0a 09 09 20 20 20 20 24 74 name]"... $t
3320: 61 67 20 64 65 73 74 72 6f 79 0a 09 09 7d 0a 09 ag destroy...}..
3330: 09 75 6e 73 65 74 20 6d 79 74 61 67 73 28 24 72 .unset mytags($r
3340: 65 76 6e 72 29 0a 09 20 20 20 20 7d 20 65 6c 73 evnr).. } els
3350: 65 20 7b 0a 09 09 73 65 74 20 72 65 76 20 24 6d e {...set rev $m
3360: 79 72 65 76 28 24 72 65 76 6e 72 29 0a 09 09 66 yrev($revnr)...f
3370: 6f 72 65 61 63 68 20 74 61 67 20 24 74 61 67 6c oreach tag $tagl
3380: 69 73 74 20 7b 0a 09 09 20 20 20 20 24 72 65 76 ist {... $rev
3390: 20 61 64 64 74 61 67 20 24 74 61 67 0a 09 09 20 addtag $tag...
33a0: 20 20 20 24 74 61 67 20 73 65 74 74 61 67 72 65 $tag settagre
33b0: 76 20 24 72 65 76 0a 09 09 7d 0a 09 20 20 20 20 v $rev...}..
33c0: 7d 0a 09 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 }..}..return.
33d0: 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 44 }.. method D
33e0: 65 74 65 72 6d 69 6e 65 54 68 65 52 6f 6f 74 52 etermineTheRootR
33f0: 65 76 69 73 69 6f 6e 20 7b 7d 20 7b 0a 09 23 20 evision {} {..#
3400: 54 68 65 20 72 6f 6f 74 20 69 73 20 74 68 65 20 The root is the
3410: 6f 6e 65 20 72 65 76 69 73 69 6f 6e 20 77 68 69 one revision whi
3420: 63 68 20 68 61 73 20 6e 6f 20 70 61 72 65 6e 74 ch has no parent
3430: 2e 20 42 79 0a 09 23 20 63 68 65 63 6b 69 6e 67 . By..# checking
3440: 20 61 6c 6c 20 72 65 76 69 73 69 6f 6e 73 20 77 all revisions w
3450: 65 20 65 6e 73 75 72 65 20 74 68 61 74 20 77 65 e ensure that we
3460: 20 63 61 6e 20 64 65 74 65 63 74 20 61 6e 64 0a can detect and.
3470: 09 23 20 72 65 70 6f 72 74 20 74 68 65 20 63 61 .# report the ca
3480: 73 65 20 6f 66 20 6d 75 6c 74 69 70 6c 65 20 72 se of multiple r
3490: 6f 6f 74 73 2e 20 57 69 74 68 6f 75 74 20 74 68 oots. Without th
34a0: 61 74 20 77 65 20 63 6f 75 6c 64 0a 09 23 20 73 at we could..# s
34b0: 69 6d 70 6c 79 20 74 61 6b 65 20 6f 6e 65 20 72 imply take one r
34c0: 65 76 69 73 69 6f 6e 20 61 6e 64 20 66 6f 6c 6c evision and foll
34d0: 6f 77 20 74 68 65 20 70 61 72 65 6e 74 20 6c 69 ow the parent li
34e0: 6e 6b 73 20 74 6f 0a 09 23 20 74 68 65 69 72 20 nks to..# their
34f0: 72 6f 6f 74 20 28 73 69 63 21 29 2e 0a 0a 09 66 root (sic!)....f
3500: 6f 72 65 61 63 68 20 7b 72 65 76 6e 72 20 72 65 oreach {revnr re
3510: 76 7d 20 5b 61 72 72 61 79 20 67 65 74 20 6d 79 v} [array get my
3520: 72 65 76 5d 20 7b 0a 09 20 20 20 20 69 66 20 7b rev] {.. if {
3530: 5b 24 72 65 76 20 68 61 73 70 61 72 65 6e 74 5d [$rev hasparent]
3540: 7d 20 63 6f 6e 74 69 6e 75 65 0a 09 20 20 20 20 } continue..
3550: 69 66 20 7b 24 6d 79 72 6f 6f 74 20 6e 65 20 22 if {$myroot ne "
3560: 22 7d 20 7b 20 74 72 6f 75 62 6c 65 20 69 6e 74 "} { trouble int
3570: 65 72 6e 61 6c 20 22 4d 75 6c 74 69 70 6c 65 20 ernal "Multiple
3580: 72 6f 6f 74 20 72 65 76 69 73 69 6f 6e 73 20 66 root revisions f
3590: 6f 75 6e 64 22 20 7d 0a 09 20 20 20 20 73 65 74 ound" }.. set
35a0: 20 6d 79 72 6f 6f 74 20 24 72 65 76 0a 09 7d 0a myroot $rev..}.
35b0: 0a 09 23 20 49 6e 20 74 68 65 20 66 75 74 75 72 ..# In the futur
35c0: 65 20 77 65 20 61 6c 73 6f 20 6e 65 65 64 20 61 e we also need a
35d0: 20 6c 69 73 74 2c 20 61 73 20 62 72 61 6e 63 68 list, as branch
35e0: 65 73 20 63 61 6e 20 62 65 63 6f 6d 65 0a 09 23 es can become..#
35f0: 20 73 65 76 65 72 65 64 20 66 72 6f 6d 20 74 68 severed from th
3600: 65 69 72 20 70 61 72 65 6e 74 2c 20 6d 61 6b 69 eir parent, maki
3610: 6e 67 20 74 68 65 6d 20 74 68 65 69 72 20 6f 77 ng them their ow
3620: 6e 20 72 6f 6f 74 2e 0a 09 73 65 74 20 6d 79 72 n root...set myr
3630: 6f 6f 74 73 20 5b 6c 69 73 74 20 24 6d 79 72 6f oots [list $myro
3640: 6f 74 5d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 ot]..return.
3650: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 44 65 }.. method De
3660: 74 65 72 6d 69 6e 65 52 65 76 69 73 69 6f 6e 4f termineRevisionO
3670: 70 65 72 61 74 69 6f 6e 73 20 7b 7d 20 7b 0a 09 perations {} {..
3680: 66 6f 72 65 61 63 68 20 72 65 76 20 24 6d 79 72 foreach rev $myr
3690: 65 76 69 73 69 6f 6e 73 20 7b 20 24 72 65 76 20 evisions { $rev
36a0: 64 65 74 65 72 6d 69 6e 65 6f 70 65 72 61 74 69 determineoperati
36b0: 6f 6e 20 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 on }..return.
36c0: 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 44 }.. method D
36d0: 65 74 65 72 6d 69 6e 65 4c 69 6e 65 73 4f 66 44 etermineLinesOfD
36e0: 65 76 65 6c 6f 70 6d 65 6e 74 20 7b 7d 20 7b 0a evelopment {} {.
36f0: 09 23 20 46 6f 72 20 72 65 76 69 73 69 6f 6e 73 .# For revisions
3700: 20 74 68 69 73 20 68 61 73 20 62 65 65 6e 20 64 this has been d
3710: 6f 6e 65 20 61 6c 72 65 61 64 79 2c 20 69 6e 20 one already, in
3720: 27 65 78 74 65 6e 64 27 2e 20 4e 6f 77 0a 09 23 'extend'. Now..#
3730: 20 77 65 20 64 6f 20 74 68 69 73 20 66 6f 72 20 we do this for
3740: 74 68 65 20 62 72 61 6e 63 68 65 73 20 61 6e 64 the branches and
3750: 20 74 61 67 73 2e 0a 0a 09 66 6f 72 65 61 63 68 tags....foreach
3760: 20 7b 5f 20 62 72 61 6e 63 68 7d 20 5b 61 72 72 {_ branch} [arr
3770: 61 79 20 67 65 74 20 6d 79 62 72 61 6e 63 68 65 ay get mybranche
3780: 73 5d 20 7b 0a 09 20 20 20 20 24 62 72 61 6e 63 s] {.. $branc
3790: 68 20 73 65 74 6c 6f 64 20 5b 24 73 65 6c 66 20 h setlod [$self
37a0: 47 65 74 4c 4f 44 20 5b 24 62 72 61 6e 63 68 20 GetLOD [$branch
37b0: 70 61 72 65 6e 74 72 65 76 6e 72 5d 5d 0a 09 7d parentrevnr]]..}
37c0: 0a 0a 09 66 6f 72 65 61 63 68 20 7b 5f 20 74 61 ...foreach {_ ta
37d0: 67 6c 69 73 74 7d 20 5b 61 72 72 61 79 20 67 65 glist} [array ge
37e0: 74 20 6d 79 74 61 67 73 5d 20 7b 0a 09 20 20 20 t mytags] {..
37f0: 20 66 6f 72 65 61 63 68 20 74 61 67 20 24 74 61 foreach tag $ta
3800: 67 6c 69 73 74 20 7b 0a 09 09 24 74 61 67 20 73 glist {...$tag s
3810: 65 74 6c 6f 64 20 5b 24 73 65 6c 66 20 47 65 74 etlod [$self Get
3820: 4c 4f 44 20 5b 24 74 61 67 20 74 61 67 72 65 76 LOD [$tag tagrev
3830: 6e 72 5d 5d 0a 09 20 20 20 20 7d 0a 09 7d 0a 09 nr]].. }..}..
3840: 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 return. }..
3850: 20 20 6d 65 74 68 6f 64 20 47 65 74 4c 4f 44 20 method GetLOD
3860: 7b 72 65 76 6e 72 7d 20 7b 0a 09 69 66 20 7b 5b {revnr} {..if {[
3870: 72 65 76 20 69 73 74 72 75 6e 6b 72 65 76 6e 72 rev istrunkrevnr
3880: 20 24 72 65 76 6e 72 5d 7d 20 7b 0a 09 20 20 20 $revnr]} {..
3890: 20 72 65 74 75 72 6e 20 24 6d 79 74 72 75 6e 6b return $mytrunk
38a0: 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 ..} else {..
38b0: 72 65 74 75 72 6e 20 5b 24 73 65 6c 66 20 52 65 return [$self Re
38c0: 76 32 42 72 61 6e 63 68 20 24 72 65 76 6e 72 5d v2Branch $revnr]
38d0: 0a 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d ..}. }.. m
38e0: 65 74 68 6f 64 20 48 61 6e 64 6c 65 4e 6f 6e 54 ethod HandleNonT
38f0: 72 75 6e 6b 44 65 66 61 75 6c 74 42 72 61 6e 63 runkDefaultBranc
3900: 68 20 7b 7d 20 7b 0a 09 73 65 74 20 72 65 76 6c h {} {..set revl
3910: 69 73 74 20 5b 24 73 65 6c 66 20 4e 6f 6e 54 72 ist [$self NonTr
3920: 75 6e 6b 44 65 66 61 75 6c 74 52 65 76 69 73 69 unkDefaultRevisi
3930: 6f 6e 73 5d 0a 09 69 66 20 7b 21 5b 6c 6c 65 6e ons]..if {![llen
3940: 67 74 68 20 24 72 65 76 6c 69 73 74 5d 7d 20 72 gth $revlist]} r
3950: 65 74 75 72 6e 0a 0a 09 24 73 65 6c 66 20 41 64 eturn...$self Ad
3960: 6a 75 73 74 4e 6f 6e 54 72 75 6e 6b 44 65 66 61 justNonTrunkDefa
3970: 75 6c 74 42 72 61 6e 63 68 20 24 72 65 76 6c 69 ultBranch $revli
3980: 73 74 0a 09 24 73 65 6c 66 20 43 68 65 63 6b 4c st..$self CheckL
3990: 4f 44 73 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 ODs..return.
39a0: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 4e 6f }.. method No
39b0: 6e 54 72 75 6e 6b 44 65 66 61 75 6c 74 52 65 76 nTrunkDefaultRev
39c0: 69 73 69 6f 6e 73 20 7b 7d 20 7b 0a 09 23 20 46 isions {} {..# F
39d0: 72 6f 6d 20 63 76 73 32 73 76 6e 20 74 68 65 20 rom cvs2svn the
39e0: 66 6f 6c 6c 6f 77 69 6e 67 20 65 78 70 6c 61 6e following explan
39f0: 61 74 69 6f 6e 20 28 77 69 74 68 20 6d 6f 64 69 ation (with modi
3a00: 66 69 63 61 74 69 6f 6e 73 0a 09 23 20 66 6f 72 fications..# for
3a10: 20 6f 75 72 20 61 6c 67 6f 72 69 74 68 6d 29 3a our algorithm):
3a20: 0a 0a 09 23 20 44 65 74 65 72 6d 69 6e 65 20 77 ...# Determine w
3a30: 68 65 74 68 65 72 20 74 68 65 72 65 20 61 72 65 hether there are
3a40: 20 61 6e 79 20 6e 6f 6e 2d 74 72 75 6e 6b 20 64 any non-trunk d
3a50: 65 66 61 75 6c 74 20 62 72 61 6e 63 68 0a 09 23 efault branch..#
3a60: 20 72 65 76 69 73 69 6f 6e 73 2e 0a 0a 09 23 20 revisions....#
3a70: 49 66 20 61 20 6e 6f 6e 2d 74 72 75 6e 6b 20 64 If a non-trunk d
3a80: 65 66 61 75 6c 74 20 62 72 61 6e 63 68 20 69 73 efault branch is
3a90: 20 64 65 74 65 72 6d 69 6e 65 64 20 74 6f 20 68 determined to h
3aa0: 61 76 65 20 65 78 69 73 74 65 64 2c 0a 09 23 20 ave existed,..#
3ab0: 72 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 return a list of
3ac0: 20 6f 62 6a 65 63 74 73 20 66 6f 72 20 61 6c 6c objects for all
3ad0: 20 72 65 76 69 73 69 6f 6e 73 20 74 68 61 74 20 revisions that
3ae0: 77 65 72 65 20 6f 6e 63 65 0a 09 23 20 6e 6f 6e were once..# non
3af0: 2d 74 72 75 6e 6b 20 64 65 66 61 75 6c 74 20 72 -trunk default r
3b00: 65 76 69 73 69 6f 6e 73 2c 20 69 6e 20 64 65 70 evisions, in dep
3b10: 65 6e 64 65 6e 63 79 20 6f 72 64 65 72 20 28 69 endency order (i
3b20: 2e 65 2e 20 72 6f 6f 74 0a 09 23 20 66 69 72 73 .e. root..# firs
3b30: 74 29 2e 0a 0a 09 23 20 54 68 65 72 65 20 61 72 t)....# There ar
3b40: 65 20 74 77 6f 20 63 61 73 65 73 20 74 6f 20 68 e two cases to h
3b50: 61 6e 64 6c 65 3a 0a 0a 09 23 20 4f 6e 65 20 63 andle:...# One c
3b60: 61 73 65 20 69 73 20 73 69 6d 70 6c 65 2e 20 20 ase is simple.
3b70: 54 68 65 20 52 43 53 20 66 69 6c 65 20 6c 69 73 The RCS file lis
3b80: 74 73 20 61 20 64 65 66 61 75 6c 74 20 62 72 61 ts a default bra
3b90: 6e 63 68 0a 09 23 20 65 78 70 6c 69 63 69 74 6c nch..# explicitl
3ba0: 79 20 69 6e 20 69 74 73 20 68 65 61 64 65 72 2c y in its header,
3bb0: 20 73 75 63 68 20 61 73 20 27 31 2e 31 2e 31 27 such as '1.1.1'
3bc0: 2e 20 20 49 6e 20 74 68 69 73 20 63 61 73 65 2c . In this case,
3bd0: 20 77 65 0a 09 23 20 6b 6e 6f 77 20 74 68 61 74 we..# know that
3be0: 20 65 76 65 72 79 20 72 65 76 69 73 69 6f 6e 20 every revision
3bf0: 6f 6e 20 74 68 65 20 76 65 6e 64 6f 72 20 62 72 on the vendor br
3c00: 61 6e 63 68 20 69 73 20 74 6f 20 62 65 0a 09 23 anch is to be..#
3c10: 20 74 72 65 61 74 65 64 20 61 73 20 68 65 61 64 treated as head
3c20: 20 6f 66 20 74 72 75 6e 6b 20 61 74 20 74 68 61 of trunk at tha
3c30: 74 20 70 6f 69 6e 74 20 69 6e 20 74 69 6d 65 2e t point in time.
3c40: 0a 0a 09 23 20 42 75 74 20 74 68 65 72 65 27 73 ...# But there's
3c50: 20 61 6c 73 6f 20 61 20 64 65 67 65 6e 65 72 61 also a degenera
3c60: 74 65 20 63 61 73 65 2e 20 20 54 68 65 20 52 43 te case. The RC
3c70: 53 20 66 69 6c 65 20 64 6f 65 73 20 6e 6f 74 0a S file does not.
3c80: 09 23 20 63 75 72 72 65 6e 74 6c 79 20 68 61 76 .# currently hav
3c90: 65 20 61 20 64 65 66 61 75 6c 74 20 62 72 61 6e e a default bran
3ca0: 63 68 2c 20 79 65 74 20 77 65 20 63 61 6e 20 64 ch, yet we can d
3cb0: 65 64 75 63 65 20 74 68 61 74 20 66 6f 72 0a 09 educe that for..
3cc0: 23 20 73 6f 6d 65 20 70 65 72 69 6f 64 20 69 6e # some period in
3cd0: 20 74 68 65 20 70 61 73 74 20 69 74 20 70 72 6f the past it pro
3ce0: 62 61 62 6c 79 20 2a 64 69 64 2a 20 68 61 76 65 bably *did* have
3cf0: 20 6f 6e 65 2e 20 20 46 6f 72 0a 09 23 20 65 78 one. For..# ex
3d00: 61 6d 70 6c 65 2c 20 74 68 65 20 66 69 6c 65 20 ample, the file
3d10: 68 61 73 20 76 65 6e 64 6f 72 20 72 65 76 69 73 has vendor revis
3d20: 69 6f 6e 73 20 31 2e 31 2e 31 2e 31 20 2d 3e 20 ions 1.1.1.1 ->
3d30: 31 2e 31 2e 31 2e 39 36 2c 0a 09 23 20 61 6c 6c 1.1.1.96,..# all
3d40: 20 6f 66 20 77 68 69 63 68 20 61 72 65 20 64 61 of which are da
3d50: 74 65 64 20 62 65 66 6f 72 65 20 31 2e 32 2c 20 ted before 1.2,
3d60: 61 6e 64 20 74 68 65 6e 20 69 74 20 68 61 73 20 and then it has
3d70: 31 2e 31 2e 31 2e 39 37 0a 09 23 20 2d 3e 20 31 1.1.1.97..# -> 1
3d80: 2e 31 2e 31 2e 31 30 30 20 64 61 74 65 64 20 61 .1.1.100 dated a
3d90: 66 74 65 72 20 31 2e 32 2e 20 20 49 6e 20 74 68 fter 1.2. In th
3da0: 69 73 20 63 61 73 65 2c 20 77 65 20 73 68 6f 75 is case, we shou
3db0: 6c 64 0a 09 23 20 72 65 63 6f 72 64 20 31 2e 31 ld..# record 1.1
3dc0: 2e 31 2e 39 36 20 61 73 20 74 68 65 20 6c 61 73 .1.96 as the las
3dd0: 74 20 76 65 6e 64 6f 72 20 72 65 76 69 73 69 6f t vendor revisio
3de0: 6e 20 74 6f 20 68 61 76 65 20 62 65 65 6e 20 74 n to have been t
3df0: 68 65 0a 09 23 20 68 65 61 64 20 6f 66 20 74 68 he..# head of th
3e00: 65 20 64 65 66 61 75 6c 74 20 62 72 61 6e 63 68 e default branch
3e10: 2e 0a 0a 09 69 66 20 7b 24 6d 79 70 72 69 6e 63 ....if {$myprinc
3e20: 69 70 61 6c 20 6e 65 20 22 22 7d 20 7b 0a 09 20 ipal ne ""} {..
3e30: 20 20 20 23 20 54 68 65 72 65 20 69 73 20 73 74 # There is st
3e40: 69 6c 6c 20 61 20 64 65 66 61 75 6c 74 20 62 72 ill a default br
3e50: 61 6e 63 68 3b 20 74 68 61 74 20 6d 65 61 6e 73 anch; that means
3e60: 20 74 68 61 74 20 61 6c 6c 0a 09 20 20 20 20 23 that all.. #
3e70: 20 72 65 76 69 73 69 6f 6e 73 20 6f 6e 20 74 68 revisions on th
3e80: 61 74 20 62 72 61 6e 63 68 20 67 65 74 20 6d 61 at branch get ma
3e90: 72 6b 65 64 2e 0a 0a 09 20 20 20 20 6c 6f 67 20 rked.... log
3ea0: 77 72 69 74 65 20 35 20 66 69 6c 65 20 22 46 6f write 5 file "Fo
3eb0: 75 6e 64 20 65 78 70 6c 69 63 69 74 6c 79 20 6d und explicitly m
3ec0: 61 72 6b 65 64 20 4e 54 44 42 22 0a 0a 09 20 20 arked NTDB"...
3ed0: 20 20 73 65 74 20 72 6e 65 78 74 20 5b 24 6d 79 set rnext [$my
3ee0: 72 6f 6f 74 20 63 68 69 6c 64 5d 0a 09 20 20 20 root child]..
3ef0: 20 69 66 20 7b 24 72 6e 65 78 74 20 6e 65 20 22 if {$rnext ne "
3f00: 22 7d 20 7b 0a 09 09 74 72 6f 75 62 6c 65 20 66 "} {...trouble f
3f10: 61 74 61 6c 20 22 46 69 6c 65 20 77 69 74 68 20 atal "File with
3f20: 64 65 66 61 75 6c 74 20 62 72 61 6e 63 68 20 24 default branch $
3f30: 6d 79 70 72 69 6e 63 69 70 61 6c 20 61 6c 73 6f myprincipal also
3f40: 20 68 61 73 20 72 65 76 69 73 69 6f 6e 20 5b 24 has revision [$
3f50: 72 6e 65 78 74 20 72 65 76 6e 72 5d 22 0a 09 09 rnext revnr]"...
3f60: 72 65 74 75 72 6e 0a 09 20 20 20 20 7d 0a 0a 09 return.. }...
3f70: 20 20 20 20 73 65 74 20 72 65 76 20 5b 24 6d 79 set rev [$my
3f80: 62 72 61 6e 63 68 65 73 28 24 6d 79 70 72 69 6e branches($myprin
3f90: 63 69 70 61 6c 29 20 63 68 69 6c 64 5d 0a 09 20 cipal) child]..
3fa0: 20 20 20 73 65 74 20 72 65 73 20 7b 7d 0a 0a 09 set res {}...
3fb0: 20 20 20 20 77 68 69 6c 65 20 7b 24 72 65 76 20 while {$rev
3fc0: 6e 65 20 22 22 7d 20 7b 0a 09 09 6c 61 70 70 65 ne ""} {...lappe
3fd0: 6e 64 20 72 65 73 20 24 72 65 76 0a 09 09 73 65 nd res $rev...se
3fe0: 74 20 72 65 76 20 5b 24 72 65 76 20 63 68 69 6c t rev [$rev chil
3ff0: 64 5d 0a 09 20 20 20 20 7d 0a 0a 09 20 20 20 20 d].. }...
4000: 72 65 74 75 72 6e 20 24 72 65 73 0a 0a 09 7d 20 return $res...}
4010: 65 6c 73 65 69 66 20 7b 24 6d 79 69 6d 70 6f 72 elseif {$myimpor
4020: 74 65 64 7d 20 7b 0a 09 20 20 20 20 23 20 4e 6f ted} {.. # No
4030: 20 64 65 66 61 75 6c 74 20 62 72 61 6e 63 68 2c default branch,
4040: 20 62 75 74 20 74 68 65 20 66 69 6c 65 20 61 70 but the file ap
4050: 70 65 61 72 73 20 74 6f 20 68 61 76 65 20 62 65 pears to have be
4060: 65 6e 0a 09 20 20 20 20 23 20 69 6d 70 6f 72 74 en.. # import
4070: 65 64 2e 20 20 53 6f 20 6f 75 72 20 65 64 75 63 ed. So our educ
4080: 61 74 65 64 20 67 75 65 73 73 20 69 73 20 74 68 ated guess is th
4090: 61 74 20 61 6c 6c 20 72 65 76 69 73 69 6f 6e 73 at all revisions
40a0: 0a 09 20 20 20 20 23 20 6f 6e 20 74 68 65 20 27 .. # on the '
40b0: 31 2e 31 2e 31 27 20 62 72 61 6e 63 68 20 77 69 1.1.1' branch wi
40c0: 74 68 20 74 69 6d 65 73 74 61 6d 70 73 20 70 72 th timestamps pr
40d0: 69 6f 72 20 74 6f 20 74 68 65 0a 09 20 20 20 20 ior to the..
40e0: 23 20 74 69 6d 65 73 74 61 6d 70 20 6f 66 20 27 # timestamp of '
40f0: 31 2e 32 27 20 77 65 72 65 20 6e 6f 6e 2d 74 72 1.2' were non-tr
4100: 75 6e 6b 20 64 65 66 61 75 6c 74 20 62 72 61 6e unk default bran
4110: 63 68 0a 09 20 20 20 20 23 20 72 65 76 69 73 69 ch.. # revisi
4120: 6f 6e 73 2e 0a 09 20 20 20 20 0a 09 20 20 20 20 ons... ..
4130: 23 20 54 68 69 73 20 72 65 61 6c 6c 79 20 6f 6e # This really on
4140: 6c 79 20 70 72 6f 63 65 73 73 65 73 20 73 74 61 ly processes sta
4150: 6e 64 61 72 64 20 27 31 2e 31 2e 31 2e 2a 27 2d ndard '1.1.1.*'-
4160: 73 74 79 6c 65 0a 09 20 20 20 20 23 20 76 65 6e style.. # ven
4170: 64 6f 72 20 72 65 76 69 73 69 6f 6e 73 2e 20 20 dor revisions.
4180: 4f 6e 65 20 63 6f 75 6c 64 20 63 6f 6e 63 65 69 One could concei
4190: 76 61 62 6c 79 20 68 61 76 65 20 61 20 66 69 6c vably have a fil
41a0: 65 0a 09 20 20 20 20 23 20 77 68 6f 73 65 20 64 e.. # whose d
41b0: 65 66 61 75 6c 74 20 62 72 61 6e 63 68 20 69 73 efault branch is
41c0: 20 31 2e 31 2e 33 20 6f 72 20 77 68 61 74 65 76 1.1.3 or whatev
41d0: 65 72 2c 20 6f 72 20 77 61 73 20 74 68 61 74 0a er, or was that.
41e0: 09 20 20 20 20 23 20 61 74 20 73 6f 6d 65 20 70 . # at some p
41f0: 6f 69 6e 74 20 69 6e 20 74 69 6d 65 2c 20 77 69 oint in time, wi
4200: 74 68 20 76 65 6e 64 6f 72 20 72 65 76 69 73 69 th vendor revisi
4210: 6f 6e 73 20 31 2e 31 2e 33 2e 31 2c 0a 09 20 20 ons 1.1.3.1,..
4220: 20 20 23 20 31 2e 31 2e 33 2e 32 2c 20 65 74 63 # 1.1.3.2, etc
4230: 2e 20 20 42 75 74 20 77 69 74 68 20 74 68 65 20 . But with the
4240: 64 65 66 61 75 6c 74 20 62 72 61 6e 63 68 20 67 default branch g
4250: 6f 6e 65 20 6e 6f 77 2c 0a 09 20 20 20 20 23 20 one now,.. #
4260: 77 65 27 64 20 68 61 76 65 20 6e 6f 20 62 61 73 we'd have no bas
4270: 69 73 20 66 6f 72 20 61 73 73 75 6d 69 6e 67 20 is for assuming
4280: 74 68 61 74 20 74 68 65 20 6e 6f 6e 2d 73 74 61 that the non-sta
4290: 6e 64 61 72 64 0a 09 20 20 20 20 23 20 76 65 6e ndard.. # ven
42a0: 64 6f 72 20 62 72 61 6e 63 68 20 68 61 64 20 65 dor branch had e
42b0: 76 65 72 20 62 65 65 6e 20 74 68 65 20 64 65 66 ver been the def
42c0: 61 75 6c 74 20 62 72 61 6e 63 68 20 61 6e 79 77 ault branch anyw
42d0: 61 79 2e 0a 09 20 20 20 20 0a 09 20 20 20 20 23 ay... .. #
42e0: 20 4e 6f 74 65 20 74 68 61 74 20 77 65 20 72 65 Note that we re
42f0: 6c 79 20 6f 6e 20 63 6f 6d 70 61 72 69 73 6f 6e ly on comparison
4300: 73 20 62 65 74 77 65 65 6e 20 74 68 65 20 74 69 s between the ti
4310: 6d 65 73 74 61 6d 70 73 0a 09 20 20 20 20 23 20 mestamps.. #
4320: 6f 66 20 74 68 65 20 72 65 76 69 73 69 6f 6e 73 of the revisions
4330: 20 6f 6e 20 74 68 65 20 76 65 6e 64 6f 72 20 62 on the vendor b
4340: 72 61 6e 63 68 20 61 6e 64 20 74 68 61 74 20 6f ranch and that o
4350: 66 0a 09 20 20 20 20 23 20 72 65 76 69 73 69 6f f.. # revisio
4360: 6e 20 31 2e 32 2c 20 65 76 65 6e 20 74 68 6f 75 n 1.2, even thou
4370: 67 68 20 74 68 65 20 74 69 6d 65 73 74 61 6d 70 gh the timestamp
4380: 73 20 6d 69 67 68 74 20 62 65 0a 09 20 20 20 20 s might be..
4390: 23 20 69 6e 63 6f 72 72 65 63 74 20 64 75 65 20 # incorrect due
43a0: 74 6f 20 63 6c 6f 63 6b 20 73 6b 65 77 2e 20 20 to clock skew.
43b0: 57 65 20 63 6f 75 6c 64 20 64 6f 20 61 20 73 6c We could do a sl
43c0: 69 67 68 74 6c 79 0a 09 20 20 20 20 23 20 62 65 ightly.. # be
43d0: 74 74 65 72 20 6a 6f 62 20 69 66 20 77 65 20 75 tter job if we u
43e0: 73 65 64 20 74 68 65 20 63 68 61 6e 67 65 73 65 sed the changese
43f0: 74 20 74 69 6d 65 73 74 61 6d 70 73 2c 20 61 73 t timestamps, as
4400: 20 69 74 20 69 73 0a 09 20 20 20 20 23 20 70 6f it is.. # po
4410: 73 73 69 62 6c 65 20 74 68 61 74 20 74 68 65 20 ssible that the
4420: 64 65 70 65 6e 64 65 6e 63 69 65 73 20 74 68 61 dependencies tha
4430: 74 20 77 65 6e 74 20 69 6e 74 6f 0a 09 20 20 20 t went into..
4440: 20 23 20 64 65 74 65 72 6d 69 6e 69 6e 67 20 74 # determining t
4450: 68 6f 73 65 20 74 69 6d 65 73 74 61 6d 70 73 20 hose timestamps
4460: 61 72 65 20 6d 6f 72 65 20 61 63 63 75 72 61 74 are more accurat
4470: 65 2e 20 20 42 75 74 0a 09 20 20 20 20 23 20 74 e. But.. # t
4480: 68 61 74 20 77 6f 75 6c 64 20 72 65 71 75 69 72 hat would requir
4490: 65 20 61 6e 20 65 78 74 72 61 20 70 61 73 73 20 e an extra pass
44a0: 6f 72 20 74 77 6f 2e 0a 0a 09 20 20 20 20 69 66 or two.... if
44b0: 20 7b 21 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 {![info exists
44c0: 6d 79 62 72 61 6e 63 68 65 73 28 31 2e 31 2e 31 mybranches(1.1.1
44d0: 29 5d 7d 20 7b 20 72 65 74 75 72 6e 20 7b 7d 20 )]} { return {}
44e0: 7d 0a 0a 09 20 20 20 20 6c 6f 67 20 77 72 69 74 }... log writ
44f0: 65 20 35 20 66 69 6c 65 20 22 44 65 64 75 63 65 e 5 file "Deduce
4500: 64 20 65 78 69 73 74 65 6e 63 65 20 6f 66 20 4e d existence of N
4510: 54 44 42 22 0a 0a 09 20 20 20 20 73 65 74 20 72 TDB"... set r
4520: 65 76 20 20 5b 24 6d 79 62 72 61 6e 63 68 65 73 ev [$mybranches
4530: 28 31 2e 31 2e 31 29 20 63 68 69 6c 64 5d 0a 09 (1.1.1) child]..
4540: 20 20 20 20 73 65 74 20 72 65 73 20 20 7b 7d 0a set res {}.
4550: 09 20 20 20 20 73 65 74 20 73 74 6f 70 20 5b 24 . set stop [$
4560: 6d 79 72 6f 6f 74 20 63 68 69 6c 64 5d 0a 0a 09 myroot child]...
4570: 20 20 20 20 69 66 20 7b 24 73 74 6f 70 20 65 71 if {$stop eq
4580: 20 22 22 7d 20 7b 0a 09 09 23 20 47 65 74 20 65 ""} {...# Get e
4590: 76 65 72 79 74 68 69 6e 67 20 6f 6e 20 74 68 65 verything on the
45a0: 20 62 72 61 6e 63 68 0a 09 09 77 68 69 6c 65 20 branch...while
45b0: 7b 24 72 65 76 20 6e 65 20 22 22 7d 20 7b 0a 09 {$rev ne ""} {..
45c0: 09 20 20 20 20 6c 61 70 70 65 6e 64 20 72 65 73 . lappend res
45d0: 20 24 72 65 76 0a 09 09 20 20 20 20 73 65 74 20 $rev... set
45e0: 72 65 76 20 5b 24 72 65 76 20 63 68 69 6c 64 5d rev [$rev child]
45f0: 0a 09 09 7d 0a 09 20 20 20 20 7d 20 65 6c 73 65 ...}.. } else
4600: 20 7b 0a 09 09 23 20 43 6f 6c 6c 65 63 74 20 65 {...# Collect e
4610: 76 65 72 79 74 68 69 6e 67 20 6f 6e 20 74 68 65 verything on the
4620: 20 62 72 61 6e 63 68 20 77 68 69 63 68 20 73 65 branch which se
4630: 65 6d 73 20 74 6f 20 68 61 76 65 0a 09 09 23 20 ems to have...#
4640: 62 65 65 6e 20 63 6f 6d 6d 69 74 74 65 64 20 62 been committed b
4650: 65 66 6f 72 65 20 74 68 65 20 66 69 72 73 74 20 efore the first
4660: 70 72 69 6d 61 72 79 20 63 68 69 6c 64 20 6f 66 primary child of
4670: 20 74 68 65 0a 09 09 23 20 72 6f 6f 74 20 72 65 the...# root re
4680: 76 69 73 69 6f 6e 2e 0a 09 09 73 65 74 20 73 74 vision....set st
4690: 6f 70 64 61 74 65 20 5b 24 73 74 6f 70 20 64 61 opdate [$stop da
46a0: 74 65 5d 0a 09 09 77 68 69 6c 65 20 7b 24 72 65 te]...while {$re
46b0: 76 20 6e 65 20 22 22 7d 20 7b 0a 09 09 20 20 20 v ne ""} {...
46c0: 20 69 66 20 7b 5b 24 72 65 76 20 64 61 74 65 5d if {[$rev date]
46d0: 20 3e 3d 20 24 73 74 6f 70 64 61 74 65 7d 20 62 >= $stopdate} b
46e0: 72 65 61 6b 0a 09 09 20 20 20 20 6c 61 70 70 65 reak... lappe
46f0: 6e 64 20 72 65 73 20 24 72 65 76 0a 09 09 20 20 nd res $rev...
4700: 20 20 73 65 74 20 72 65 76 20 5b 24 72 65 76 20 set rev [$rev
4710: 63 68 69 6c 64 5d 0a 09 09 7d 0a 09 20 20 20 20 child]...}..
4720: 7d 0a 0a 09 20 20 20 20 72 65 74 75 72 6e 20 24 }... return $
4730: 72 65 73 0a 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 res...} else {..
4740: 20 20 20 20 72 65 74 75 72 6e 20 7b 7d 0a 09 7d return {}..}
4750: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 . }.. meth
4760: 6f 64 20 41 64 6a 75 73 74 4e 6f 6e 54 72 75 6e od AdjustNonTrun
4770: 6b 44 65 66 61 75 6c 74 42 72 61 6e 63 68 20 7b kDefaultBranch {
4780: 72 65 76 6c 69 73 74 7d 20 7b 0a 09 73 65 74 20 revlist} {..set
4790: 73 74 6f 70 20 5b 24 6d 79 72 6f 6f 74 20 63 68 stop [$myroot ch
47a0: 69 6c 64 5d 20 3b 23 20 72 65 76 20 27 31 2e 32 ild] ;# rev '1.2
47b0: 27 0a 0a 09 6c 6f 67 20 77 72 69 74 65 20 35 20 '...log write 5
47c0: 66 69 6c 65 20 22 41 64 6a 75 73 74 69 6e 67 20 file "Adjusting
47d0: 4e 54 44 42 20 63 6f 6e 74 61 69 6e 69 6e 67 20 NTDB containing
47e0: 5b 6e 73 70 20 5b 6c 6c 65 6e 67 74 68 20 24 72 [nsp [llength $r
47f0: 65 76 6c 69 73 74 5d 20 72 65 76 69 73 69 6f 6e evlist] revision
4800: 5d 22 0a 0a 09 23 20 46 72 6f 6d 20 63 76 73 32 ]"...# From cvs2
4810: 73 76 6e 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e svn the followin
4820: 67 20 65 78 70 6c 61 6e 61 74 69 6f 6e 20 28 77 g explanation (w
4830: 69 74 68 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e ith modification
4840: 73 0a 09 23 20 66 6f 72 20 6f 75 72 20 61 6c 67 s..# for our alg
4850: 6f 72 69 74 68 6d 29 3a 0a 0a 09 23 20 41 64 6a orithm):...# Adj
4860: 75 73 74 20 74 68 65 20 6e 6f 6e 2d 74 72 75 6e ust the non-trun
4870: 6b 20 64 65 66 61 75 6c 74 20 62 72 61 6e 63 68 k default branch
4880: 20 72 65 76 69 73 69 6f 6e 73 20 66 6f 75 6e 64 revisions found
4890: 20 69 6e 20 74 68 65 0a 09 23 20 27 72 65 76 6c in the..# 'revl
48a0: 69 73 74 27 2e 0a 0a 09 23 20 27 6d 79 69 6d 70 ist'....# 'myimp
48b0: 6f 72 74 65 64 27 20 69 73 20 61 20 62 6f 6f 6c orted' is a bool
48c0: 65 61 6e 20 66 6c 61 67 20 69 6e 64 69 63 61 74 ean flag indicat
48d0: 69 6e 67 20 77 68 65 74 68 65 72 20 74 68 69 73 ing whether this
48e0: 20 66 69 6c 65 0a 09 23 20 61 70 70 65 61 72 73 file..# appears
48f0: 20 74 6f 20 68 61 76 65 20 62 65 65 6e 20 69 6d to have been im
4900: 70 6f 72 74 65 64 2c 20 77 68 69 63 68 20 61 6c ported, which al
4910: 73 6f 20 6d 65 61 6e 73 20 74 68 61 74 0a 09 23 so means that..#
4920: 20 72 65 76 69 73 69 6f 6e 20 31 2e 31 20 68 61 revision 1.1 ha
4930: 73 20 61 20 67 65 6e 65 72 61 74 65 64 20 6c 6f s a generated lo
4940: 67 20 6d 65 73 73 61 67 65 20 74 68 61 74 20 6e g message that n
4950: 65 65 64 20 6e 6f 74 20 62 65 0a 09 23 20 70 72 eed not be..# pr
4960: 65 73 65 72 76 65 64 2e 20 20 27 72 65 76 6c 69 eserved. 'revli
4970: 73 74 27 20 69 73 20 61 20 6c 69 73 74 20 6f 66 st' is a list of
4980: 20 6f 62 6a 65 63 74 20 72 65 66 65 72 65 6e 63 object referenc
4990: 65 73 20 66 6f 72 20 74 68 65 0a 09 23 20 72 65 es for the..# re
49a0: 76 69 73 69 6f 6e 73 20 74 68 61 74 20 68 61 76 visions that hav
49b0: 65 20 62 65 65 6e 20 64 65 74 65 72 6d 69 6e 65 e been determine
49c0: 64 20 74 6f 20 62 65 20 6e 6f 6e 2d 74 72 75 6e d to be non-trun
49d0: 6b 20 64 65 66 61 75 6c 74 0a 09 23 20 62 72 61 k default..# bra
49e0: 6e 63 68 20 72 65 76 69 73 69 6f 6e 73 2e 0a 0a nch revisions...
49f0: 09 23 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 .# Note that the
4a00: 20 66 69 72 73 74 20 72 65 76 69 73 69 6f 6e 20 first revision
4a10: 6f 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 62 on the default b
4a20: 72 61 6e 63 68 20 69 73 0a 09 23 20 68 61 6e 64 ranch is..# hand
4a30: 6c 65 64 20 73 74 72 61 6e 67 65 6c 79 20 62 79 led strangely by
4a40: 20 43 56 53 2e 20 20 49 66 20 61 20 66 69 6c 65 CVS. If a file
4a50: 20 69 73 20 69 6d 70 6f 72 74 65 64 20 28 61 73 is imported (as
4a60: 20 6f 70 70 6f 73 65 64 0a 09 23 20 74 6f 20 62 opposed..# to b
4a70: 65 69 6e 67 20 61 64 64 65 64 29 2c 20 43 56 53 eing added), CVS
4a80: 20 63 72 65 61 74 65 73 20 61 20 31 2e 31 20 72 creates a 1.1 r
4a90: 65 76 69 73 69 6f 6e 2c 20 74 68 65 6e 20 63 72 evision, then cr
4aa0: 65 61 74 65 73 20 61 0a 09 23 20 76 65 6e 64 6f eates a..# vendo
4ab0: 72 20 62 72 61 6e 63 68 20 31 2e 31 2e 31 20 62 r branch 1.1.1 b
4ac0: 61 73 65 64 20 6f 6e 20 31 2e 31 2c 20 74 68 65 ased on 1.1, the
4ad0: 6e 20 63 72 65 61 74 65 73 20 61 20 31 2e 31 2e n creates a 1.1.
4ae0: 31 2e 31 0a 09 23 20 72 65 76 69 73 69 6f 6e 20 1.1..# revision
4af0: 74 68 61 74 20 69 73 20 69 64 65 6e 74 69 63 61 that is identica
4b00: 6c 20 74 6f 20 74 68 65 20 31 2e 31 20 72 65 76 l to the 1.1 rev
4b10: 69 73 69 6f 6e 20 28 69 2e 65 2e 2c 20 69 74 73 ision (i.e., its
4b20: 0a 09 23 20 64 65 6c 74 61 74 65 78 74 20 69 73 ..# deltatext is
4b30: 20 65 6d 70 74 79 29 2e 20 20 54 68 65 20 6c 6f empty). The lo
4b40: 67 20 6d 65 73 73 61 67 65 20 74 68 61 74 20 74 g message that t
4b50: 68 65 20 75 73 65 72 20 74 79 70 65 64 0a 09 23 he user typed..#
4b60: 20 77 68 65 6e 20 69 6d 70 6f 72 74 69 6e 67 20 when importing
4b70: 69 73 20 73 74 6f 72 65 64 20 77 69 74 68 20 74 is stored with t
4b80: 68 65 20 31 2e 31 2e 31 2e 31 20 72 65 76 69 73 he 1.1.1.1 revis
4b90: 69 6f 6e 2e 20 20 54 68 65 20 31 2e 31 0a 09 23 ion. The 1.1..#
4ba0: 20 72 65 76 69 73 69 6f 6e 20 61 6c 77 61 79 73 revision always
4bb0: 20 63 6f 6e 74 61 69 6e 73 20 61 20 73 74 61 6e contains a stan
4bc0: 64 61 72 64 2c 20 67 65 6e 65 72 61 74 65 64 20 dard, generated
4bd0: 6c 6f 67 20 6d 65 73 73 61 67 65 2c 0a 09 23 20 log message,..#
4be0: 27 49 6e 69 74 69 61 6c 20 72 65 76 69 73 69 6f 'Initial revisio
4bf0: 6e 5c 6e 27 2e 0a 0a 09 23 20 57 68 65 6e 20 77 n\n'....# When w
4c00: 65 20 64 65 74 65 63 74 20 61 20 73 74 72 61 69 e detect a strai
4c10: 67 68 74 66 6f 72 77 61 72 64 20 69 6d 70 6f 72 ghtforward impor
4c20: 74 20 6c 69 6b 65 20 74 68 69 73 2c 20 77 65 20 t like this, we
4c30: 77 61 6e 74 0a 09 23 20 74 6f 20 68 61 6e 64 6c want..# to handl
4c40: 65 20 69 74 20 62 79 20 64 65 6c 65 74 69 6e 67 e it by deleting
4c50: 20 74 68 65 20 31 2e 31 20 72 65 76 69 73 69 6f the 1.1 revisio
4c60: 6e 20 28 77 68 69 63 68 20 64 6f 65 73 6e 27 74 n (which doesn't
4c70: 0a 09 23 20 63 6f 6e 74 61 69 6e 20 61 6e 79 20 ..# contain any
4c80: 75 73 65 66 75 6c 20 69 6e 66 6f 72 6d 61 74 69 useful informati
4c90: 6f 6e 29 20 61 6e 64 20 6d 61 6b 69 6e 67 20 31 on) and making 1
4ca0: 2e 31 2e 31 2e 31 20 69 6e 74 6f 20 61 6e 0a 09 .1.1.1 into an..
4cb0: 23 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 72 6f # independent ro
4cc0: 6f 74 20 69 6e 20 74 68 65 20 66 69 6c 65 27 73 ot in the file's
4cd0: 20 64 65 70 65 6e 64 65 6e 63 79 20 74 72 65 65 dependency tree
4ce0: 2e 20 20 49 6e 20 53 56 4e 2c 0a 09 23 20 31 2e . In SVN,..# 1.
4cf0: 31 2e 31 2e 31 20 77 69 6c 6c 20 62 65 20 61 64 1.1.1 will be ad
4d00: 64 65 64 20 64 69 72 65 63 74 6c 79 20 74 6f 20 ded directly to
4d10: 74 68 65 20 76 65 6e 64 6f 72 20 62 72 61 6e 63 the vendor branc
4d20: 68 20 77 69 74 68 20 69 74 73 0a 09 23 20 69 6e h with its..# in
4d30: 69 74 69 61 6c 20 63 6f 6e 74 65 6e 74 2e 20 20 itial content.
4d40: 54 68 65 6e 20 69 6e 20 61 20 73 70 65 63 69 61 Then in a specia
4d50: 6c 20 27 70 6f 73 74 2d 63 6f 6d 6d 69 74 27 2c l 'post-commit',
4d60: 20 74 68 65 0a 09 23 20 31 2e 31 2e 31 2e 31 20 the..# 1.1.1.1
4d70: 72 65 76 69 73 69 6f 6e 20 69 73 20 63 6f 70 69 revision is copi
4d80: 65 64 20 62 61 63 6b 20 74 6f 20 74 72 75 6e 6b ed back to trunk
4d90: 2e 0a 0a 09 23 20 49 66 20 74 68 65 20 75 73 65 ....# If the use
4da0: 72 20 69 6d 70 6f 72 74 73 20 61 67 61 69 6e 20 r imports again
4db0: 74 6f 20 74 68 65 20 73 61 6d 65 20 76 65 6e 64 to the same vend
4dc0: 6f 72 20 62 72 61 6e 63 68 2c 20 74 68 65 6e 20 or branch, then
4dd0: 43 56 53 0a 09 23 20 63 72 65 61 74 65 73 20 72 CVS..# creates r
4de0: 65 76 69 73 69 6f 6e 73 20 31 2e 31 2e 31 2e 32 evisions 1.1.1.2
4df0: 2c 20 31 2e 31 2e 31 2e 33 2c 20 65 74 63 2e 20 , 1.1.1.3, etc.
4e00: 6f 6e 20 74 68 65 20 76 65 6e 64 6f 72 20 62 72 on the vendor br
4e10: 61 6e 63 68 2c 0a 09 23 20 2a 77 69 74 68 6f 75 anch,..# *withou
4e20: 74 2a 20 63 6f 75 6e 74 65 72 70 61 72 74 73 20 t* counterparts
4e30: 69 6e 20 74 72 75 6e 6b 20 28 65 76 65 6e 20 74 in trunk (even t
4e40: 68 6f 75 67 68 20 74 68 65 73 65 20 72 65 76 69 hough these revi
4e50: 73 69 6f 6e 73 0a 09 23 20 65 66 66 65 63 74 69 sions..# effecti
4e60: 76 65 6c 79 20 70 6c 61 79 20 74 68 65 20 72 6f vely play the ro
4e70: 6c 65 20 6f 66 20 74 72 75 6e 6b 20 72 65 76 69 le of trunk revi
4e80: 73 69 6f 6e 73 29 2e 20 20 53 6f 20 61 66 74 65 sions). So afte
4e90: 72 20 77 65 20 61 64 64 0a 09 23 20 73 75 63 68 r we add..# such
4ea0: 20 72 65 76 69 73 69 6f 6e 73 20 74 6f 20 74 68 revisions to th
4eb0: 65 20 76 65 6e 64 6f 72 20 62 72 61 6e 63 68 2c e vendor branch,
4ec0: 20 77 65 20 61 6c 73 6f 20 63 6f 70 79 20 74 68 we also copy th
4ed0: 65 6d 20 62 61 63 6b 20 74 6f 0a 09 23 20 74 72 em back to..# tr
4ee0: 75 6e 6b 20 69 6e 20 70 6f 73 74 2d 63 6f 6d 6d unk in post-comm
4ef0: 69 74 73 2e 0a 0a 09 23 20 57 65 20 6d 61 72 6b its....# We mark
4f00: 20 74 68 65 20 72 65 76 69 73 69 6f 6e 73 20 66 the revisions f
4f10: 6f 75 6e 64 20 69 6e 20 27 72 65 76 6c 69 73 74 ound in 'revlist
4f20: 27 20 61 73 20 64 65 66 61 75 6c 74 20 62 72 61 ' as default bra
4f30: 6e 63 68 0a 09 23 20 72 65 76 69 73 69 6f 6e 73 nch..# revisions
4f40: 2e 20 20 41 6c 73 6f 2c 20 69 66 20 74 68 65 20 . Also, if the
4f50: 72 6f 6f 74 20 72 65 76 69 73 69 6f 6e 20 68 61 root revision ha
4f60: 73 20 61 20 70 72 69 6d 61 72 79 20 63 68 69 6c s a primary chil
4f70: 64 0a 09 23 20 77 65 20 73 65 74 20 74 68 61 74 d..# we set that
4f80: 20 72 65 76 69 73 69 6f 6e 20 74 6f 20 64 65 70 revision to dep
4f90: 65 6e 64 20 6f 6e 20 74 68 65 20 6c 61 73 74 20 end on the last
4fa0: 6e 6f 6e 2d 74 72 75 6e 6b 20 64 65 66 61 75 6c non-trunk defaul
4fb0: 74 0a 09 23 20 62 72 61 6e 63 68 20 72 65 76 69 t..# branch revi
4fc0: 73 69 6f 6e 20 61 6e 64 20 70 6f 73 73 69 62 6c sion and possibl
4fd0: 79 20 61 64 6a 75 73 74 20 69 74 73 20 74 79 70 y adjust its typ
4fe0: 65 20 61 63 63 6f 72 64 69 6e 67 6c 79 2e 0a 0a e accordingly...
4ff0: 09 73 65 74 20 66 69 72 73 74 20 5b 6c 69 6e 64 .set first [lind
5000: 65 78 20 24 72 65 76 6c 69 73 74 20 30 5d 0a 0a ex $revlist 0]..
5010: 09 6c 6f 67 20 77 72 69 74 65 20 36 20 66 69 6c .log write 6 fil
5020: 65 20 22 3c 5b 24 66 69 72 73 74 20 72 65 76 6e e "<[$first revn
5030: 72 5d 3e 20 5b 65 78 70 72 20 7b 24 6d 79 69 6d r]> [expr {$myim
5040: 70 6f 72 74 65 64 20 3f 20 22 69 6d 70 6f 72 74 ported ? "import
5050: 65 64 22 20 3a 20 22 6e 6f 74 20 69 6d 70 6f 72 ed" : "not impor
5060: 74 65 64 22 7d 5d 2c 20 5b 24 66 69 72 73 74 20 ted"}], [$first
5070: 6f 70 65 72 61 74 69 6f 6e 5d 2c 20 5b 65 78 70 operation], [exp
5080: 72 20 7b 5b 24 66 69 72 73 74 20 68 61 73 74 65 r {[$first haste
5090: 78 74 5d 20 3f 20 22 68 61 73 20 74 65 78 74 22 xt] ? "has text"
50a0: 20 3a 20 22 6e 6f 20 74 65 78 74 22 7d 5d 22 0a : "no text"}]".
50b0: 0a 09 69 66 20 7b 24 6d 79 69 6d 70 6f 72 74 65 ..if {$myimporte
50c0: 64 20 26 26 0a 09 20 20 20 20 5b 24 66 69 72 73 d &&.. [$firs
50d0: 74 20 72 65 76 6e 72 5d 20 65 71 20 22 31 2e 31 t revnr] eq "1.1
50e0: 2e 31 2e 31 22 20 26 26 0a 09 20 20 20 20 5b 24 .1.1" &&.. [$
50f0: 66 69 72 73 74 20 6f 70 65 72 61 74 69 6f 6e 5d first operation]
5100: 20 65 71 20 22 63 68 61 6e 67 65 22 20 26 26 0a eq "change" &&.
5110: 09 20 20 20 20 21 5b 24 66 69 72 73 74 20 68 61 . ![$first ha
5120: 73 74 65 78 74 5d 7d 20 7b 0a 0a 09 20 20 20 20 stext]} {...
5130: 73 65 74 20 72 65 76 31 31 20 5b 24 66 69 72 73 set rev11 [$firs
5140: 74 20 70 61 72 65 6e 74 5d 20 3b 20 23 20 41 73 t parent] ; # As
5150: 73 65 72 74 3a 20 53 68 6f 75 6c 64 20 62 65 20 sert: Should be
5160: 6d 79 72 6f 6f 74 2e 0a 09 20 20 20 20 6c 6f 67 myroot... log
5170: 20 77 72 69 74 65 20 33 20 66 69 6c 65 20 22 52 write 3 file "R
5180: 65 6d 6f 76 69 6e 67 20 69 72 72 65 6c 65 76 61 emoving irreleva
5190: 6e 74 20 72 65 76 69 73 69 6f 6e 20 5b 24 72 65 nt revision [$re
51a0: 76 31 31 20 72 65 76 6e 72 5d 22 0a 0a 09 20 20 v11 revnr]"...
51b0: 20 20 23 20 43 75 74 20 6f 75 74 20 74 68 65 20 # Cut out the
51c0: 6f 6c 64 20 6d 79 72 6f 6f 74 20 72 65 76 69 73 old myroot revis
51d0: 69 6f 6e 2e 0a 0a 09 20 20 20 20 6c 64 65 6c 65 ion.... ldele
51e0: 74 65 20 6d 79 72 6f 6f 74 73 20 24 72 65 76 31 te myroots $rev1
51f0: 31 20 3b 20 23 20 4e 6f 74 20 61 20 72 6f 6f 74 1 ; # Not a root
5200: 20 61 6e 79 20 6c 6f 6e 67 65 72 2e 0a 09 20 20 any longer...
5210: 20 20 75 6e 73 65 74 20 6d 79 72 65 76 28 5b 24 unset myrev([$
5220: 72 65 76 31 31 20 72 65 76 6e 72 5d 29 0a 0a 09 rev11 revnr])...
5230: 20 20 20 20 24 66 69 72 73 74 20 63 75 74 66 72 $first cutfr
5240: 6f 6d 70 61 72 65 6e 74 20 3b 20 23 20 53 65 76 omparent ; # Sev
5250: 65 72 20 72 65 76 69 73 69 6f 6e 20 66 72 6f 6d er revision from
5260: 20 70 61 72 65 6e 74 20 72 65 76 69 73 69 6f 6e parent revision
5270: 2e 0a 09 20 20 20 20 69 66 20 7b 24 73 74 6f 70 ... if {$stop
5280: 20 6e 65 20 22 22 7d 20 7b 0a 09 09 24 73 74 6f ne ""} {...$sto
5290: 70 20 63 75 74 66 72 6f 6d 70 61 72 65 6e 74 0a p cutfromparent.
52a0: 09 09 6c 61 70 70 65 6e 64 20 6d 79 72 6f 6f 74 ..lappend myroot
52b0: 73 20 24 73 74 6f 70 20 3b 20 23 20 4e 65 77 20 s $stop ; # New
52c0: 72 6f 6f 74 2c 20 61 66 74 65 72 20 76 65 6e 64 root, after vend
52d0: 6f 72 20 62 72 61 6e 63 68 0a 09 20 20 20 20 7d or branch.. }
52e0: 0a 0a 09 20 20 20 20 23 20 43 75 74 20 6f 75 74 ... # Cut out
52f0: 20 74 68 65 20 76 65 6e 64 6f 72 20 62 72 61 6e the vendor bran
5300: 63 68 20 73 79 6d 62 6f 6c 0a 0a 09 20 20 20 20 ch symbol...
5310: 73 65 74 20 76 65 6e 64 6f 72 20 5b 24 66 69 72 set vendor [$fir
5320: 73 74 20 70 61 72 65 6e 74 62 72 61 6e 63 68 5d st parentbranch]
5330: 0a 09 20 20 20 20 69 66 20 7b 24 76 65 6e 64 6f .. if {$vendo
5340: 72 20 65 71 20 22 22 7d 20 7b 20 74 72 6f 75 62 r eq ""} { troub
5350: 6c 65 20 69 6e 74 65 72 6e 61 6c 20 22 46 69 72 le internal "Fir
5360: 73 74 20 4e 54 44 42 20 72 65 76 69 73 69 6f 6e st NTDB revision
5370: 20 68 61 73 20 6e 6f 20 62 72 61 6e 63 68 22 20 has no branch"
5380: 7d 0a 09 20 20 20 20 69 66 20 7b 5b 24 76 65 6e }.. if {[$ven
5390: 64 6f 72 20 70 61 72 65 6e 74 5d 20 65 71 20 24 dor parent] eq $
53a0: 72 65 76 31 31 7d 20 7b 0a 09 09 75 6e 73 65 74 rev11} {...unset
53b0: 20 6d 79 62 72 61 6e 63 68 65 73 28 5b 24 76 65 mybranches([$ve
53c0: 6e 64 6f 72 20 62 72 61 6e 63 68 6e 72 5d 29 0a ndor branchnr]).
53d0: 09 09 24 72 65 76 31 31 20 72 65 6d 6f 76 65 62 ..$rev11 removeb
53e0: 72 61 6e 63 68 20 20 20 20 20 20 20 20 24 76 65 ranch $ve
53f0: 6e 64 6f 72 0a 09 09 24 72 65 76 31 31 20 72 65 ndor...$rev11 re
5400: 6d 6f 76 65 63 68 69 6c 64 6f 6e 62 72 61 6e 63 movechildonbranc
5410: 68 20 24 66 69 72 73 74 0a 09 09 24 66 69 72 73 h $first...$firs
5420: 74 20 63 75 74 66 72 6f 6d 70 61 72 65 6e 74 62 t cutfromparentb
5430: 72 61 6e 63 68 0a 09 09 6c 61 70 70 65 6e 64 20 ranch...lappend
5440: 6d 79 72 6f 6f 74 73 20 24 66 69 72 73 74 0a 09 myroots $first..
5450: 20 20 20 20 7d 0a 0a 09 20 20 20 20 23 20 43 68 }... # Ch
5460: 61 6e 67 65 20 74 68 65 20 74 79 70 65 20 6f 66 ange the type of
5470: 20 66 69 72 73 74 20 28 74 79 70 69 63 61 6c 6c first (typicall
5480: 79 20 66 72 6f 6d 20 43 68 61 6e 67 65 20 74 6f y from Change to
5490: 20 41 64 64 29 3a 0a 09 20 20 20 20 24 66 69 72 Add):.. $fir
54a0: 73 74 20 72 65 74 79 70 65 20 61 64 64 0a 0a 09 st retype add...
54b0: 20 20 20 20 23 20 4d 6f 76 65 20 61 6e 79 20 74 # Move any t
54c0: 61 67 73 20 61 6e 64 20 62 72 61 6e 63 68 65 73 ags and branches
54d0: 20 66 72 6f 6d 20 74 68 65 20 6f 6c 64 20 74 6f from the old to
54e0: 20 74 68 65 20 6e 65 77 20 72 6f 6f 74 2e 0a 09 the new root...
54f0: 20 20 20 20 24 72 65 76 31 31 20 6d 6f 76 65 73 $rev11 moves
5500: 79 6d 62 6f 6c 73 74 6f 20 24 66 69 72 73 74 0a ymbolsto $first.
5510: 09 7d 0a 0a 09 23 20 4d 61 72 6b 20 61 6c 6c 20 .}...# Mark all
5520: 74 68 65 20 73 70 65 63 69 61 6c 20 72 65 76 69 the special revi
5530: 73 69 6f 6e 73 20 61 73 20 73 75 63 68 0a 09 66 sions as such..f
5540: 6f 72 65 61 63 68 20 72 65 76 20 24 72 65 76 6c oreach rev $revl
5550: 69 73 74 20 7b 0a 09 20 20 20 20 6c 6f 67 20 77 ist {.. log w
5560: 72 69 74 65 20 33 20 66 69 6c 65 20 22 52 65 76 rite 3 file "Rev
5570: 69 73 69 6f 6e 20 6f 6e 20 64 65 66 61 75 6c 74 ision on default
5580: 20 62 72 61 6e 63 68 3a 20 5b 24 72 65 76 20 72 branch: [$rev r
5590: 65 76 6e 72 5d 22 0a 09 20 20 20 20 24 72 65 76 evnr]".. $rev
55a0: 20 69 73 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e isondefaultbran
55b0: 63 68 0a 09 7d 0a 0a 09 69 66 20 7b 24 73 74 6f ch..}...if {$sto
55c0: 70 20 6e 65 20 22 22 7d 20 7b 0a 09 20 20 20 20 p ne ""} {..
55d0: 23 20 52 65 76 69 73 69 6f 6e 20 31 2e 32 20 6c # Revision 1.2 l
55e0: 6f 67 69 63 61 6c 6c 79 20 66 6f 6c 6c 6f 77 73 ogically follows
55f0: 20 74 68 65 20 69 6d 70 6f 72 74 65 64 20 72 65 the imported re
5600: 76 69 73 69 6f 6e 73 2c 0a 09 20 20 20 20 23 20 visions,.. #
5610: 6e 6f 74 20 31 2e 31 2e 20 20 41 63 63 6f 72 64 not 1.1. Accord
5620: 69 6e 67 6c 79 2c 20 63 6f 6e 6e 65 63 74 20 69 ingly, connect i
5630: 74 20 74 6f 20 74 68 65 20 6c 61 73 74 20 4e 54 t to the last NT
5640: 44 42 52 20 61 6e 64 0a 09 20 20 20 20 23 20 70 DBR and.. # p
5650: 6f 73 73 69 62 6c 79 20 63 68 61 6e 67 65 20 69 ossibly change i
5660: 74 73 20 74 79 70 65 2e 0a 0a 09 20 20 20 20 73 ts type.... s
5670: 65 74 20 6c 61 73 74 20 5b 6c 69 6e 64 65 78 20 et last [lindex
5680: 24 72 65 76 6c 69 73 74 20 65 6e 64 5d 0a 09 20 $revlist end]..
5690: 20 20 20 24 73 74 6f 70 20 73 65 74 64 65 66 61 $stop setdefa
56a0: 75 6c 74 62 72 61 6e 63 68 70 61 72 65 6e 74 20 ultbranchparent
56b0: 24 6c 61 73 74 20 3b 20 23 20 52 65 74 79 70 65 $last ; # Retype
56c0: 73 20 74 68 65 20 72 65 76 69 73 69 6f 6e 20 74 s the revision t
56d0: 6f 6f 2e 0a 09 20 20 20 20 24 6c 61 73 74 20 73 oo... $last s
56e0: 65 74 64 65 66 61 75 6c 74 62 72 61 6e 63 68 63 etdefaultbranchc
56f0: 68 69 6c 64 20 20 24 73 74 6f 70 0a 09 7d 0a 09 hild $stop..}..
5700: 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 return. }..
5710: 20 20 6d 65 74 68 6f 64 20 43 68 65 63 6b 4c 4f method CheckLO
5720: 44 73 20 7b 7d 20 7b 0a 09 66 6f 72 65 61 63 68 Ds {} {..foreach
5730: 20 7b 5f 20 62 72 61 6e 63 68 7d 20 20 5b 61 72 {_ branch} [ar
5740: 72 61 79 20 67 65 74 20 6d 79 62 72 61 6e 63 68 ray get mybranch
5750: 65 73 5d 20 7b 20 24 62 72 61 6e 63 68 20 63 68 es] { $branch ch
5760: 65 63 6b 6c 6f 64 20 7d 0a 09 66 6f 72 65 61 63 ecklod }..foreac
5770: 68 20 7b 5f 20 74 61 67 6c 69 73 74 7d 20 5b 61 h {_ taglist} [a
5780: 72 72 61 79 20 67 65 74 20 6d 79 74 61 67 73 5d rray get mytags]
5790: 20 7b 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20 {.. foreach
57a0: 74 61 67 20 24 74 61 67 6c 69 73 74 20 7b 20 24 tag $taglist { $
57b0: 74 61 67 20 63 68 65 63 6b 6c 6f 64 20 7d 0a 09 tag checklod }..
57c0: 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a }..return. }.
57d0: 0a 20 20 20 20 6d 65 74 68 6f 64 20 52 65 6d 6f . method Remo
57e0: 76 65 49 72 72 65 6c 65 76 61 6e 74 44 65 6c 65 veIrrelevantDele
57f0: 74 69 6f 6e 73 20 7b 7d 20 7b 0a 09 23 20 46 72 tions {} {..# Fr
5800: 6f 6d 20 63 76 73 32 66 6f 73 73 69 6c 3a 0a 09 om cvs2fossil:..
5810: 23 20 49 66 20 61 20 66 69 6c 65 20 69 73 20 61 # If a file is a
5820: 64 64 65 64 20 6f 6e 20 61 20 62 72 61 6e 63 68 dded on a branch
5830: 2c 20 74 68 65 6e 20 61 20 74 72 75 6e 6b 20 72 , then a trunk r
5840: 65 76 69 73 69 6f 6e 20 69 73 0a 09 23 20 61 64 evision is..# ad
5850: 64 65 64 20 61 74 20 74 68 65 20 73 61 6d 65 20 ded at the same
5860: 74 69 6d 65 20 69 6e 20 74 68 65 20 27 44 65 61 time in the 'Dea
5870: 64 27 20 73 74 61 74 65 2e 20 20 54 68 69 73 20 d' state. This
5880: 72 65 76 69 73 69 6f 6e 0a 09 23 20 64 6f 65 73 revision..# does
5890: 6e 27 74 20 64 6f 20 61 6e 79 74 68 69 6e 67 20 n't do anything
58a0: 75 73 65 66 75 6c 2c 20 73 6f 20 64 65 6c 65 74 useful, so delet
58b0: 65 20 69 74 2e 0a 0a 09 66 6f 72 65 61 63 68 20 e it....foreach
58c0: 72 6f 6f 74 20 24 6d 79 72 6f 6f 74 73 20 7b 0a root $myroots {.
58d0: 09 20 20 20 20 69 66 20 7b 5b 24 72 6f 6f 74 20 . if {[$root
58e0: 69 73 6e 65 65 64 65 64 5d 7d 20 63 6f 6e 74 69 isneeded]} conti
58f0: 6e 75 65 0a 09 20 20 20 20 6c 6f 67 20 77 72 69 nue.. log wri
5900: 74 65 20 32 20 66 69 6c 65 20 22 52 65 6d 6f 76 te 2 file "Remov
5910: 69 6e 67 20 75 6e 6e 65 63 65 73 73 61 72 79 20 ing unnecessary
5920: 64 65 61 64 20 72 65 76 69 73 69 6f 6e 20 5b 24 dead revision [$
5930: 72 6f 6f 74 20 72 65 76 6e 72 5d 22 0a 0a 09 20 root revnr]"...
5940: 20 20 20 23 20 52 65 6d 6f 76 65 20 61 73 20 72 # Remove as r
5950: 6f 6f 74 2c 20 6d 61 6b 65 20 69 74 73 20 63 68 oot, make its ch
5960: 69 6c 64 20 6e 65 77 20 72 6f 6f 74 20 61 66 74 ild new root aft
5970: 65 72 0a 09 20 20 20 20 23 20 64 69 73 63 6f 6e er.. # discon
5980: 6e 65 63 74 69 6e 67 20 69 74 20 66 72 6f 6d 20 necting it from
5990: 74 68 65 20 72 65 76 69 73 69 6f 6e 20 6a 75 73 the revision jus
59a0: 74 20 67 6f 69 6e 67 20 61 77 61 79 2e 0a 0a 09 t going away....
59b0: 20 20 20 20 6c 64 65 6c 65 74 65 20 6d 79 72 6f ldelete myro
59c0: 6f 74 73 20 24 72 6f 6f 74 0a 09 20 20 20 20 69 ots $root.. i
59d0: 66 20 7b 5b 24 72 6f 6f 74 20 68 61 73 63 68 69 f {[$root haschi
59e0: 6c 64 5d 7d 20 7b 0a 09 09 73 65 74 20 63 68 69 ld]} {...set chi
59f0: 6c 64 20 5b 24 72 6f 6f 74 20 63 68 69 6c 64 5d ld [$root child]
5a00: 0a 09 09 24 63 68 69 6c 64 20 63 75 74 66 72 6f ...$child cutfro
5a10: 6d 70 61 72 65 6e 74 0a 09 09 6c 61 70 70 65 6e mparent...lappen
5a20: 64 20 6d 79 72 6f 6f 74 73 20 24 63 68 69 6c 64 d myroots $child
5a30: 0a 09 20 20 20 20 7d 0a 0a 09 20 20 20 20 23 20 .. }... #
5a40: 52 65 6d 6f 76 65 20 74 68 65 20 62 72 61 6e 63 Remove the branc
5a50: 68 65 73 20 73 70 61 77 6e 65 64 20 62 79 20 74 hes spawned by t
5a60: 68 65 20 72 65 76 69 73 69 6f 6e 20 74 6f 20 62 he revision to b
5a70: 65 0a 09 20 20 20 20 23 20 64 65 6c 65 74 65 64 e.. # deleted
5a80: 2e 20 49 66 20 74 68 65 20 62 72 61 6e 63 68 20 . If the branch
5a90: 68 61 73 20 72 65 76 69 73 69 6f 6e 73 20 74 68 has revisions th
5aa0: 65 79 20 73 68 6f 75 6c 64 20 61 6c 72 65 61 64 ey should alread
5ab0: 79 0a 09 20 20 20 20 23 20 75 73 65 20 6f 70 65 y.. # use ope
5ac0: 72 61 74 69 6f 6e 20 27 61 64 64 27 2c 20 6e 6f ration 'add', no
5ad0: 20 6e 65 65 64 20 74 6f 20 63 68 61 6e 67 65 20 need to change
5ae0: 74 68 61 74 2e 20 54 68 65 20 66 69 72 73 74 0a that. The first.
5af0: 09 20 20 20 20 23 20 72 65 76 69 73 69 6f 6e 20 . # revision
5b00: 6f 6e 20 65 61 63 68 20 62 72 61 6e 63 68 20 62 on each branch b
5b10: 65 63 6f 6d 65 73 20 61 20 6e 65 77 20 61 6e 64 ecomes a new and
5b20: 20 64 69 73 63 6f 6e 6e 65 63 74 65 64 0a 09 20 disconnected..
5b30: 20 20 20 23 20 72 6f 6f 74 2e 0a 0a 09 20 20 20 # root....
5b40: 20 66 6f 72 65 61 63 68 20 62 72 61 6e 63 68 20 foreach branch
5b50: 5b 24 72 6f 6f 74 20 62 72 61 6e 63 68 65 73 5d [$root branches]
5b60: 20 7b 0a 09 09 69 66 20 7b 21 5b 24 62 72 61 6e {...if {![$bran
5b70: 63 68 20 68 61 73 63 68 69 6c 64 5d 7d 20 63 6f ch haschild]} co
5b80: 6e 74 69 6e 75 65 0a 09 09 73 65 74 20 66 69 72 ntinue...set fir
5b90: 73 74 20 5b 24 62 72 61 6e 63 68 20 63 68 69 6c st [$branch chil
5ba0: 64 5d 0a 09 09 24 66 69 72 73 74 20 63 75 74 66 d]...$first cutf
5bb0: 72 6f 6d 70 61 72 65 6e 74 62 72 61 6e 63 68 0a romparentbranch.
5bc0: 09 09 24 66 69 72 73 74 20 63 75 74 66 72 6f 6d ..$first cutfrom
5bd0: 70 61 72 65 6e 74 0a 09 09 6c 61 70 70 65 6e 64 parent...lappend
5be0: 20 6d 79 72 6f 6f 74 73 20 24 66 69 72 73 74 0a myroots $first.
5bf0: 09 20 20 20 20 7d 0a 09 20 20 20 20 24 72 6f 6f . }.. $roo
5c00: 74 20 72 65 6d 6f 76 65 61 6c 6c 62 72 61 6e 63 t removeallbranc
5c10: 68 65 73 0a 0a 09 20 20 20 20 23 20 54 61 67 67 hes... # Tagg
5c20: 69 6e 67 20 61 20 64 65 61 64 20 72 65 76 69 73 ing a dead revis
5c30: 69 6f 6e 20 64 6f 65 73 6e 27 74 20 64 6f 20 61 ion doesn't do a
5c40: 6e 79 74 68 69 6e 67 2c 20 73 6f 20 72 65 6d 6f nything, so remo
5c50: 76 65 0a 09 20 20 20 20 23 20 61 6e 79 20 74 61 ve.. # any ta
5c60: 67 73 20 74 68 61 74 20 77 65 72 65 20 73 65 74 gs that were set
5c70: 20 6f 6e 20 69 74 2e 0a 0a 09 20 20 20 20 24 72 on it.... $r
5c80: 6f 6f 74 20 72 65 6d 6f 76 65 61 6c 6c 74 61 67 oot removealltag
5c90: 73 0a 0a 09 20 20 20 20 23 20 54 68 69 73 20 63 s... # This c
5ca0: 61 6e 20 6f 6e 6c 79 20 68 61 70 70 65 6e 20 6f an only happen o
5cb0: 6e 63 65 20 70 65 72 20 66 69 6c 65 2c 20 61 6e nce per file, an
5cc0: 64 20 77 65 20 6d 69 67 68 74 20 68 61 76 65 0a d we might have.
5cd0: 09 20 20 20 20 23 20 6a 75 73 74 20 63 68 61 6e . # just chan
5ce0: 67 65 64 20 6d 79 72 6f 6f 74 73 2c 20 73 6f 20 ged myroots, so
5cf0: 62 72 65 61 6b 20 6f 75 74 20 6f 66 20 74 68 65 break out of the
5d00: 20 6c 6f 6f 70 3a 0a 09 20 20 20 20 62 72 65 61 loop:.. brea
5d10: 6b 0a 09 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 k..}..return.
5d20: 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 52 }.. method R
5d30: 65 6d 6f 76 65 49 6e 69 74 69 61 6c 42 72 61 6e emoveInitialBran
5d40: 63 68 44 65 6c 65 74 69 6f 6e 73 20 7b 7d 20 7b chDeletions {} {
5d50: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 . }.. meth
5d60: 6f 64 20 45 78 63 6c 75 64 65 4e 6f 6e 54 72 75 od ExcludeNonTru
5d70: 6e 6b 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 7b 7d nkInformation {}
5d80: 20 7b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 {. }.. #
5d90: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 # ## ### ##### #
5da0: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
5db0: 23 23 23 23 23 0a 20 20 20 20 23 23 20 43 6f 6e #####. ## Con
5dc0: 66 69 67 75 72 61 74 69 6f 6e 0a 0a 20 20 20 20 figuration..
5dd0: 70 72 61 67 6d 61 20 2d 68 61 73 74 79 70 65 69 pragma -hastypei
5de0: 6e 66 6f 20 20 20 20 6e 6f 20 20 3b 20 23 20 6e nfo no ; # n
5df0: 6f 20 74 79 70 65 20 69 6e 74 72 6f 73 70 65 63 o type introspec
5e00: 74 69 6f 6e 0a 20 20 20 20 70 72 61 67 6d 61 20 tion. pragma
5e10: 2d 68 61 73 69 6e 66 6f 20 20 20 20 20 20 20 20 -hasinfo
5e20: 6e 6f 20 20 3b 20 23 20 6e 6f 20 6f 62 6a 65 63 no ; # no objec
5e30: 74 20 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e 0a t introspection.
5e40: 20 20 20 20 70 72 61 67 6d 61 20 2d 68 61 73 74 pragma -hast
5e50: 79 70 65 6d 65 74 68 6f 64 73 20 6e 6f 20 20 3b ypemethods no ;
5e60: 20 23 20 74 79 70 65 20 69 73 20 6e 6f 74 20 72 # type is not r
5e70: 65 6c 65 76 61 6e 74 2e 0a 0a 20 20 20 20 23 20 elevant... #
5e80: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 # ## ### ##### #
5e90: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
5ea0: 23 23 23 23 23 0a 7d 0a 0a 6e 61 6d 65 73 70 61 #####.}..namespa
5eb0: 63 65 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 66 6f ce eval ::vc::fo
5ec0: 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 ssil::import::cv
5ed0: 73 20 7b 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 s {. namespac
5ee0: 65 20 65 78 70 6f 72 74 20 66 69 6c 65 0a 20 20 e export file.
5ef0: 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c namespace eval
5f00: 20 66 69 6c 65 20 7b 0a 09 23 20 49 6d 70 6f 72 file {..# Impor
5f10: 74 20 6e 6f 74 20 72 65 71 75 69 72 65 64 2c 20 t not required,
5f20: 61 6c 72 65 61 64 79 20 61 20 63 68 69 6c 64 20 already a child
5f30: 6e 61 6d 65 73 70 61 63 65 2e 0a 09 23 20 6e 61 namespace...# na
5f40: 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a mespace import :
5f50: 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 :vc::fossil::imp
5f60: 6f 72 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 3a 3a ort::cvs::file::
5f70: 72 65 76 0a 09 23 20 6e 61 6d 65 73 70 61 63 65 rev..# namespace
5f80: 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 66 6f import ::vc::fo
5f90: 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 ssil::import::cv
5fa0: 73 3a 3a 66 69 6c 65 3a 3a 73 79 6d 0a 09 6e 61 s::file::sym..na
5fb0: 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a mespace import :
5fc0: 3a 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6d 69 73 63 :vc::tools::misc
5fd0: 3a 3a 2a 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 ::*..namespace i
5fe0: 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 74 6f 6f 6c mport ::vc::tool
5ff0: 73 3a 3a 74 72 6f 75 62 6c 65 0a 09 6e 61 6d 65 s::trouble..name
6000: 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 space import ::v
6010: 63 3a 3a 74 6f 6f 6c 73 3a 3a 6c 6f 67 0a 20 20 c::tools::log.
6020: 20 20 7d 0a 7d 0a 0a 23 20 23 20 23 23 20 23 23 }.}..# # ## ##
6030: 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 # ##### ########
6040: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 20 23 ############# #
6050: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
6060: 23 23 23 23 0a 23 23 20 52 65 61 64 79 0a 0a 70 ####.## Ready..p
6070: 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65 20 76 ackage provide v
6080: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor
6090: 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 20 31 2e 30 t::cvs::file 1.0
60a0: 0a 72 65 74 75 72 6e 0a .return.