0000: 23 23 20 2d 2a 2d 20 74 63 6c 20 2d 2a 2d 0a 23 ## -*- tcl -*-.#
0010: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 # ## ### #####
0020: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 ######## #######
0030: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 ###### #########
0040: 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 20 ############.##
0050: 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30 Copyright (c) 20
0060: 30 37 20 41 6e 64 72 65 61 73 20 4b 75 70 72 69 07 Andreas Kupri
0070: 65 73 2e 0a 23 0a 23 20 54 68 69 73 20 73 6f 66 es..#.# This sof
0080: 74 77 61 72 65 20 69 73 20 6c 69 63 65 6e 73 65 tware is license
0090: 64 20 61 73 20 64 65 73 63 72 69 62 65 64 20 69 d as described i
00a0: 6e 20 74 68 65 20 66 69 6c 65 20 4c 49 43 45 4e n the file LICEN
00b0: 53 45 2c 20 77 68 69 63 68 0a 23 20 79 6f 75 20 SE, which.# you
00c0: 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 should have rece
00d0: 69 76 65 64 20 61 73 20 70 61 72 74 20 6f 66 20 ived as part of
00e0: 74 68 69 73 20 64 69 73 74 72 69 62 75 74 69 6f this distributio
00f0: 6e 2e 0a 23 0a 23 20 54 68 69 73 20 73 6f 66 74 n..#.# This soft
0100: 77 61 72 65 20 63 6f 6e 73 69 73 74 73 20 6f 66 ware consists of
0110: 20 76 6f 6c 75 6e 74 61 72 79 20 63 6f 6e 74 72 voluntary contr
0120: 69 62 75 74 69 6f 6e 73 20 6d 61 64 65 20 62 79 ibutions made by
0130: 20 6d 61 6e 79 0a 23 20 69 6e 64 69 76 69 64 75 many.# individu
0140: 61 6c 73 2e 20 20 46 6f 72 20 65 78 61 63 74 20 als. For exact
0150: 63 6f 6e 74 72 69 62 75 74 69 6f 6e 20 68 69 73 contribution his
0160: 74 6f 72 79 2c 20 73 65 65 20 74 68 65 20 72 65 tory, see the re
0170: 76 69 73 69 6f 6e 0a 23 20 68 69 73 74 6f 72 79 vision.# history
0180: 20 61 6e 64 20 6c 6f 67 73 2c 20 61 76 61 69 6c and logs, avail
0190: 61 62 6c 65 20 61 74 20 68 74 74 70 3a 2f 2f 66 able at http://f
01a0: 6f 73 73 69 6c 2d 73 63 6d 2e 68 77 61 63 69 2e ossil-scm.hwaci.
01b0: 63 6f 6d 2f 66 6f 73 73 69 6c 0a 23 20 23 20 23 com/fossil.# # #
01c0: 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 # ### ##### ####
01d0: 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 #### ###########
01e0: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 ## #############
01f0: 23 23 23 23 23 23 23 23 0a 0a 23 23 20 52 65 76 ########..## Rev
0200: 69 73 69 6f 6e 73 20 70 65 72 20 66 69 6c 65 2e isions per file.
0210: 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 23 ..# # ## ### ###
0220: 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 ## ######## ####
0230: 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######### ######
0240: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a ###############.
0250: 23 23 20 52 65 71 75 69 72 65 6d 65 6e 74 73 0a ## Requirements.
0260: 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 .package require
0270: 20 54 63 6c 20 38 2e 34 20 20 20 20 20 20 20 20 Tcl 8.4
0280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0290: 20 20 20 20 20 3b 20 23 20 52 65 71 75 69 72 65 ; # Require
02a0: 64 20 72 75 6e 74 69 6d 65 2e 0a 70 61 63 6b 61 d runtime..packa
02b0: 67 65 20 72 65 71 75 69 72 65 20 73 6e 69 74 20 ge require snit
02c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b ;
02e0: 20 23 20 4f 4f 20 73 79 73 74 65 6d 2e 0a 70 61 # OO system..pa
02f0: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 76 63 ckage require vc
0300: 3a 3a 74 6f 6f 6c 73 3a 3a 6d 69 73 63 20 20 20 ::tools::misc
0310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0320: 20 20 3b 20 23 20 54 65 78 74 20 66 6f 72 6d 61 ; # Text forma
0330: 74 74 69 6e 67 0a 70 61 63 6b 61 67 65 20 72 65 tting.package re
0340: 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 73 69 6c quire vc::fossil
0350: 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 73 ::import::cvs::s
0360: 74 61 74 65 20 20 20 20 20 20 3b 20 23 20 53 74 tate ; # St
0370: 61 74 65 20 73 74 6f 72 61 67 65 2e 0a 70 61 63 ate storage..pac
0380: 6b 61 67 65 20 72 65 71 75 69 72 65 20 76 63 3a kage require vc:
0390: 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a :fossil::import:
03a0: 3a 63 76 73 3a 3a 69 6e 74 65 67 72 69 74 79 20 :cvs::integrity
03b0: 20 3b 20 23 20 53 74 61 74 65 20 69 6e 74 65 67 ; # State integ
03c0: 72 69 74 79 20 63 68 65 63 6b 73 2e 0a 0a 23 20 rity checks...#
03d0: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 # ## ### ##### #
03e0: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
03f0: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 ##### ##########
0400: 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 0a 0a ###########.##..
0410: 73 6e 69 74 3a 3a 74 79 70 65 20 3a 3a 76 63 3a snit::type ::vc:
0420: 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a :fossil::import:
0430: 3a 63 76 73 3a 3a 66 69 6c 65 3a 3a 72 65 76 20 :cvs::file::rev
0440: 7b 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23 {. # # ## ###
0450: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 ##### ########
0460: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 #############.
0470: 20 20 23 23 20 50 75 62 6c 69 63 20 41 50 49 0a ## Public API.
0480: 0a 20 20 20 20 63 6f 6e 73 74 72 75 63 74 6f 72 . constructor
0490: 20 7b 72 65 76 6e 72 20 64 61 74 65 20 73 74 61 {revnr date sta
04a0: 74 65 20 74 68 65 66 69 6c 65 7d 20 7b 0a 09 73 te thefile} {..s
04b0: 65 74 20 6d 79 72 65 76 6e 72 20 20 20 20 24 72 et myrevnr $r
04c0: 65 76 6e 72 0a 09 73 65 74 20 6d 79 64 61 74 65 evnr..set mydate
04d0: 20 20 20 20 20 24 64 61 74 65 0a 09 73 65 74 20 $date..set
04e0: 6d 79 6f 72 69 67 64 61 74 65 20 24 64 61 74 65 myorigdate $date
04f0: 0a 09 73 65 74 20 6d 79 73 74 61 74 65 20 20 20 ..set mystate
0500: 20 24 73 74 61 74 65 0a 09 73 65 74 20 6d 79 66 $state..set myf
0510: 69 6c 65 20 20 20 20 20 24 74 68 65 66 69 6c 65 ile $thefile
0520: 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a ..return. }..
0530: 20 20 20 20 6d 65 74 68 6f 64 20 64 65 66 69 64 method defid
0540: 20 7b 7d 20 7b 0a 09 73 65 74 20 6d 79 69 64 20 {} {..set myid
0550: 5b 69 6e 63 72 20 6d 79 69 64 63 6f 75 6e 74 65 [incr myidcounte
0560: 72 5d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d r]..return. }
0570: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 69 64 20 .. method id
0580: 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d {} { return $m
0590: 79 69 64 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 yid }. method
05a0: 20 66 69 6c 65 20 7b 7d 20 7b 20 72 65 74 75 72 file {} { retur
05b0: 6e 20 24 6d 79 66 69 6c 65 20 7d 0a 0a 20 20 20 n $myfile }..
05c0: 20 23 20 42 61 73 69 63 20 70 69 65 63 65 73 20 # Basic pieces
05d0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
05e0: 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 6d 65 ________.. me
05f0: 74 68 6f 64 20 68 61 73 6d 65 74 61 20 7b 7d 20 thod hasmeta {}
0600: 7b 20 72 65 74 75 72 6e 20 5b 65 78 70 72 20 7b { return [expr {
0610: 24 6d 79 6d 65 74 61 69 64 20 6e 65 20 22 22 7d $mymetaid ne ""}
0620: 5d 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 68 ] }. method h
0630: 61 73 74 65 78 74 20 7b 7d 20 7b 0a 09 72 65 74 astext {} {..ret
0640: 75 72 6e 20 5b 65 78 70 72 20 7b 24 6d 79 74 65 urn [expr {$myte
0650: 78 74 73 74 61 72 74 20 3c 3d 20 24 6d 79 74 65 xtstart <= $myte
0660: 78 74 65 6e 64 7d 5d 0a 20 20 20 20 7d 0a 0a 20 xtend}]. }..
0670: 20 20 20 6d 65 74 68 6f 64 20 73 65 74 6d 65 74 method setmet
0680: 61 20 7b 6d 65 74 61 7d 20 7b 20 73 65 74 20 6d a {meta} { set m
0690: 79 6d 65 74 61 69 64 20 24 6d 65 74 61 20 3b 20 ymetaid $meta ;
06a0: 72 65 74 75 72 6e 20 7d 0a 20 20 20 20 6d 65 74 return }. met
06b0: 68 6f 64 20 73 65 74 74 65 78 74 20 7b 74 65 78 hod settext {tex
06c0: 74 7d 20 7b 0a 09 73 74 72 75 63 74 3a 3a 6c 69 t} {..struct::li
06d0: 73 74 20 61 73 73 69 67 6e 20 24 74 65 78 74 20 st assign $text
06e0: 6d 79 74 65 78 74 73 74 61 72 74 20 6d 79 74 65 mytextstart myte
06f0: 78 74 65 6e 64 0a 09 72 65 74 75 72 6e 0a 20 20 xtend..return.
0700: 20 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 }. method s
0710: 65 74 6c 6f 64 20 20 7b 6c 6f 64 7d 20 20 7b 20 etlod {lod} {
0720: 73 65 74 20 6d 79 6c 6f 64 20 20 20 20 24 6c 6f set mylod $lo
0730: 64 20 20 3b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 d ; return }..
0740: 20 20 20 6d 65 74 68 6f 64 20 72 65 76 6e 72 20 method revnr
0750: 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 72 {} { return $myr
0760: 65 76 6e 72 20 7d 0a 20 20 20 20 6d 65 74 68 6f evnr }. metho
0770: 64 20 73 74 61 74 65 20 7b 7d 20 7b 20 72 65 74 d state {} { ret
0780: 75 72 6e 20 24 6d 79 73 74 61 74 65 20 7d 0a 20 urn $mystate }.
0790: 20 20 20 6d 65 74 68 6f 64 20 6c 6f 64 20 20 20 method lod
07a0: 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 6c {} { return $myl
07b0: 6f 64 20 20 20 7d 0a 20 20 20 20 6d 65 74 68 6f od }. metho
07c0: 64 20 64 61 74 65 20 20 7b 7d 20 7b 20 72 65 74 d date {} { ret
07d0: 75 72 6e 20 24 6d 79 64 61 74 65 20 20 7d 0a 0a urn $mydate }..
07e0: 20 20 20 20 6d 65 74 68 6f 64 20 69 73 6e 65 65 method isnee
07f0: 64 65 64 20 7b 7d 20 7b 0a 09 69 66 20 7b 24 6d ded {} {..if {$m
0800: 79 6f 70 65 72 61 74 69 6f 6e 20 6e 65 20 22 6e yoperation ne "n
0810: 6f 74 68 69 6e 67 22 7d 20 20 20 20 20 20 20 20 othing"}
0820: 20 7b 72 65 74 75 72 6e 20 31 7d 0a 09 69 66 20 {return 1}..if
0830: 7b 24 6d 79 72 65 76 6e 72 20 6e 65 20 22 31 2e {$myrevnr ne "1.
0840: 31 22 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 1"}
0850: 20 20 20 20 7b 72 65 74 75 72 6e 20 31 7d 0a 09 {return 1}..
0860: 69 66 20 7b 21 5b 24 6d 79 6c 6f 64 20 69 73 74 if {![$mylod ist
0870: 72 75 6e 6b 5d 7d 20 20 20 20 20 20 20 20 20 20 runk]}
0880: 20 20 20 20 20 20 20 7b 72 65 74 75 72 6e 20 31 {return 1
0890: 7d 0a 09 69 66 20 7b 21 5b 6c 6c 65 6e 67 74 68 }..if {![llength
08a0: 20 24 6d 79 62 72 61 6e 63 68 65 73 5d 7d 20 20 $mybranches]}
08b0: 20 20 20 20 20 20 20 20 20 20 7b 72 65 74 75 72 {retur
08c0: 6e 20 31 7d 0a 09 73 65 74 20 66 69 72 73 74 62 n 1}..set firstb
08d0: 72 61 6e 63 68 20 5b 6c 69 6e 64 65 78 20 24 6d ranch [lindex $m
08e0: 79 62 72 61 6e 63 68 65 73 20 30 5d 0a 09 69 66 ybranches 0]..if
08f0: 20 7b 21 5b 24 66 69 72 73 74 62 72 61 6e 63 68 {![$firstbranch
0900: 20 68 61 73 63 68 69 6c 64 5d 7d 20 20 20 20 20 haschild]}
0910: 20 20 20 20 20 7b 72 65 74 75 72 6e 20 31 7d 0a {return 1}.
0920: 09 69 66 20 7b 24 6d 79 69 73 6f 6e 64 65 66 61 .if {$myisondefa
0930: 75 6c 74 62 72 61 6e 63 68 7d 20 20 20 20 20 20 ultbranch}
0940: 20 20 20 20 20 20 20 20 7b 72 65 74 75 72 6e 20 {return
0950: 31 7d 0a 0a 09 23 20 46 49 58 3a 20 54 68 69 73 1}...# FIX: This
0960: 20 6d 65 73 73 61 67 65 20 77 69 6c 6c 20 6e 6f message will no
0970: 74 20 6d 61 74 63 68 20 69 66 20 74 68 65 20 52 t match if the R
0980: 43 53 20 66 69 6c 65 20 77 61 73 20 72 65 6e 61 CS file was rena
0990: 6d 65 64 0a 09 23 20 6d 61 6e 75 61 6c 6c 79 20 med..# manually
09a0: 61 66 74 65 72 20 69 74 20 77 61 73 20 63 72 65 after it was cre
09b0: 61 74 65 64 2e 0a 0a 09 73 65 74 20 67 65 6e 20 ated....set gen
09c0: 22 66 69 6c 65 20 5b 66 69 6c 65 20 74 61 69 6c "file [file tail
09d0: 20 5b 24 6d 79 66 69 6c 65 20 75 73 72 70 61 74 [$myfile usrpat
09e0: 68 5d 5d 20 77 61 73 20 69 6e 69 74 69 61 6c 6c h]] was initiall
09f0: 79 20 61 64 64 65 64 20 6f 6e 20 62 72 61 6e 63 y added on branc
0a00: 68 20 5b 24 66 69 72 73 74 62 72 61 6e 63 68 20 h [$firstbranch
0a10: 6e 61 6d 65 5d 2e 22 0a 09 73 65 74 20 6c 6f 67 name]."..set log
0a20: 20 5b 24 6d 79 66 69 6c 65 20 63 6f 6d 6d 69 74 [$myfile commit
0a30: 6d 65 73 73 61 67 65 6f 66 20 24 6d 79 6d 65 74 messageof $mymet
0a40: 61 69 64 5d 0a 0a 09 72 65 74 75 72 6e 20 5b 65 aid]...return [e
0a50: 78 70 72 20 7b 24 6c 6f 67 20 6e 65 20 24 67 65 xpr {$log ne $ge
0a60: 6e 7d 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d n}]. }.. m
0a70: 65 74 68 6f 64 20 69 73 6e 65 65 64 65 64 62 72 ethod isneededbr
0a80: 61 6e 63 68 64 65 6c 20 7b 7d 20 7b 0a 09 69 66 anchdel {} {..if
0a90: 20 7b 24 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 {$myparentbranc
0aa0: 68 20 65 71 20 22 22 7d 20 20 20 20 20 20 20 20 h eq ""}
0ab0: 20 20 20 7b 72 65 74 75 72 6e 20 31 7d 20 3b 20 {return 1} ;
0ac0: 23 20 6e 6f 74 20 66 69 72 73 74 20 6f 6e 20 61 # not first on a
0ad0: 20 62 72 61 6e 63 68 2c 20 6e 65 65 64 65 64 0a branch, needed.
0ae0: 09 73 65 74 20 62 61 73 65 20 5b 24 6d 79 70 61 .set base [$mypa
0af0: 72 65 6e 74 62 72 61 6e 63 68 20 70 61 72 65 6e rentbranch paren
0b00: 74 5d 0a 09 69 66 20 7b 24 62 61 73 65 20 20 20 t]..if {$base
0b10: 20 20 20 20 20 20 20 20 65 71 20 22 22 7d 20 20 eq ""}
0b20: 20 20 20 20 20 20 20 20 20 7b 72 65 74 75 72 6e {return
0b30: 20 31 7d 20 3b 20 23 20 62 72 61 6e 63 68 20 68 1} ; # branch h
0b40: 61 73 20 70 61 72 65 6e 74 20 6c 6f 64 2c 20 6e as parent lod, n
0b50: 65 65 64 65 64 0a 09 69 66 20 7b 5b 24 73 65 6c eeded..if {[$sel
0b60: 66 20 4c 4f 44 4c 65 6e 67 74 68 5d 20 3c 20 32 f LODLength] < 2
0b70: 7d 20 20 20 20 20 20 20 20 20 20 20 7b 72 65 74 } {ret
0b80: 75 72 6e 20 31 7d 20 3b 20 23 20 6f 75 72 20 6c urn 1} ; # our l
0b90: 6f 64 20 63 6f 6e 74 61 69 6e 73 20 6f 6e 6c 79 od contains only
0ba0: 20 6f 75 72 73 65 6c 76 65 73 2c 20 6e 65 65 64 ourselves, need
0bb0: 65 64 2e 0a 09 69 66 20 7b 24 6d 79 6f 70 65 72 ed...if {$myoper
0bc0: 61 74 69 6f 6e 20 6e 65 20 22 64 65 6c 65 74 65 ation ne "delete
0bd0: 22 7d 20 20 20 20 20 20 20 20 7b 72 65 74 75 72 "} {retur
0be0: 6e 20 31 7d 20 3b 20 23 20 4e 6f 74 20 61 20 64 n 1} ; # Not a d
0bf0: 65 6c 65 74 69 6f 6e 2c 20 6e 65 65 64 65 64 0a eletion, needed.
0c00: 09 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 6d .if {[llength $m
0c10: 79 74 61 67 73 5d 7d 20 20 20 20 20 20 20 20 20 ytags]}
0c20: 20 20 20 20 20 20 7b 72 65 74 75 72 6e 20 31 7d {return 1}
0c30: 20 3b 20 23 20 48 61 76 65 20 74 61 67 73 2c 20 ; # Have tags,
0c40: 6e 65 65 64 65 64 0a 09 69 66 20 7b 5b 6c 6c 65 needed..if {[lle
0c50: 6e 67 74 68 20 24 6d 79 62 72 61 6e 63 68 65 73 ngth $mybranches
0c60: 5d 7d 20 20 20 20 20 20 20 20 20 20 20 7b 72 65 ]} {re
0c70: 74 75 72 6e 20 31 7d 20 3b 20 23 20 48 61 76 65 turn 1} ; # Have
0c80: 20 6f 74 68 65 72 20 62 72 61 6e 63 68 65 73 2c other branches,
0c90: 20 6e 65 65 64 65 64 0a 09 69 66 20 7b 61 62 73 needed..if {abs
0ca0: 28 24 6d 79 64 61 74 65 20 2d 20 5b 24 62 61 73 ($mydate - [$bas
0cb0: 65 20 64 61 74 65 5d 29 20 3e 20 32 7d 20 7b 72 e date]) > 2} {r
0cc0: 65 74 75 72 6e 20 31 7d 20 3b 20 23 20 4e 65 78 eturn 1} ; # Nex
0cd0: 74 20 72 65 76 20 3e 20 32 20 73 65 63 6f 6e 64 t rev > 2 second
0ce0: 73 20 61 70 61 72 74 2c 20 6e 65 65 64 65 64 0a s apart, needed.
0cf0: 0a 20 20 20 20 20 20 20 20 23 20 46 49 58 4d 45 . # FIXME
0d00: 3a 20 54 68 69 73 20 6d 65 73 73 61 67 65 20 77 : This message w
0d10: 69 6c 6c 20 6e 6f 74 20 6d 61 74 63 68 20 69 66 ill not match if
0d20: 20 74 68 65 20 52 43 53 20 66 69 6c 65 20 77 61 the RCS file wa
0d30: 73 0a 20 20 20 20 20 20 20 20 23 20 72 65 6e 61 s. # rena
0d40: 6d 65 64 20 6d 61 6e 75 61 6c 6c 79 20 61 66 74 med manually aft
0d50: 65 72 20 69 74 20 77 61 73 20 63 72 65 61 74 65 er it was create
0d60: 64 2e 0a 0a 09 73 65 74 20 71 66 69 6c 65 20 5b d....set qfile [
0d70: 73 74 72 69 6e 67 20 6d 61 70 20 7b 0a 09 20 20 string map {..
0d80: 20 20 2e 20 20 5c 5c 2e 20 20 3f 20 20 5c 5c 3f . \\. ? \\?
0d90: 20 20 2a 20 20 5c 5c 2a 20 20 5c 5c 20 5c 5c 5c * \\* \\ \\\
0da0: 5c 20 2b 20 20 5c 5c 2b 20 20 5e 20 5c 5c 5e 20 \ + \\+ ^ \\^
0db0: 24 20 5c 5c 24 0a 09 20 20 20 20 5c 5b 20 5c 5c $ \\$.. \[ \\
0dc0: 5c 5b 20 5c 5d 20 5c 5c 5c 5d 20 28 20 20 5c 5c \[ \] \\\] ( \\
0dd0: 28 20 20 20 29 20 5c 5c 29 20 20 5c 7b 20 5c 5c ( ) \\) \{ \\
0de0: 5c 7b 20 5c 7d 20 5c 5c 5c 7d 0a 09 7d 20 5b 66 \{ \} \\\}..} [f
0df0: 69 6c 65 20 74 61 69 6c 20 5b 24 6d 79 66 69 6c ile tail [$myfil
0e00: 65 20 75 73 72 70 61 74 68 5d 5d 5d 0a 09 73 65 e usrpath]]]..se
0e10: 74 20 70 61 74 74 65 72 6e 20 22 66 69 6c 65 20 t pattern "file
0e20: 24 71 66 69 6c 65 20 77 61 73 20 61 64 64 65 64 $qfile was added
0e30: 20 6f 6e 20 62 72 61 6e 63 68 20 2e 2a 20 6f 6e on branch .* on
0e40: 20 5c 5c 64 7b 34 7d 2d 5c 5c 64 7b 32 7d 2d 5c \\d{4}-\\d{2}-\
0e50: 5c 64 7b 32 7d 20 5c 5c 64 7b 32 7d 3a 5c 5c 64 \d{2} \\d{2}:\\d
0e60: 7b 32 7d 3a 5c 5c 64 7b 32 7d 28 20 5c 5b 2b 2d {2}:\\d{2}( \[+-
0e70: 5c 5d 5c 5c 64 7b 34 7d 29 3f 22 0a 09 73 65 74 \]\\d{4})?"..set
0e80: 20 6c 6f 67 20 20 20 20 20 5b 24 6d 79 66 69 6c log [$myfil
0e90: 65 20 63 6f 6d 6d 69 74 6d 65 73 73 61 67 65 6f e commitmessageo
0ea0: 66 20 24 6d 79 6d 65 74 61 69 64 5d 0a 0a 09 23 f $mymetaid]...#
0eb0: 20 4e 6f 74 20 74 68 65 20 73 70 65 63 69 61 6c Not the special
0ec0: 20 6d 65 73 73 61 67 65 2c 20 6e 65 65 64 65 64 message, needed
0ed0: 0a 09 69 66 20 7b 21 5b 72 65 67 65 78 70 20 2d ..if {![regexp -
0ee0: 2d 20 24 70 61 74 74 65 72 6e 20 24 6c 6f 67 5d - $pattern $log]
0ef0: 7d 20 7b 72 65 74 75 72 6e 20 31 7d 0a 0a 09 23 } {return 1}...#
0f00: 20 54 68 69 73 20 69 73 20 61 6e 20 75 6e 6e 65 This is an unne
0f10: 65 64 65 64 20 69 6e 69 74 69 61 6c 20 62 72 61 eded initial bra
0f20: 6e 63 68 20 64 65 6c 65 74 65 2e 0a 09 72 65 74 nch delete...ret
0f30: 75 72 6e 20 30 0a 20 20 20 20 7d 0a 0a 20 20 20 urn 0. }..
0f40: 20 6d 65 74 68 6f 64 20 4c 4f 44 4c 65 6e 67 74 method LODLengt
0f50: 68 20 7b 7d 20 7b 0a 09 73 65 74 20 6e 20 31 20 h {} {..set n 1
0f60: 3b 20 23 20 63 6f 75 6e 74 20 73 65 6c 66 0a 09 ; # count self..
0f70: 73 65 74 20 72 65 76 20 24 6d 79 63 68 69 6c 64 set rev $mychild
0f80: 0a 09 77 68 69 6c 65 20 7b 24 72 65 76 20 6e 65 ..while {$rev ne
0f90: 20 22 22 7d 20 7b 0a 09 20 20 20 20 69 6e 63 72 ""} {.. incr
0fa0: 20 6e 0a 09 20 20 20 20 73 65 74 20 72 65 76 20 n.. set rev
0fb0: 5b 24 72 65 76 20 63 68 69 6c 64 5d 0a 09 7d 0a [$rev child]..}.
0fc0: 09 72 65 74 75 72 6e 20 24 6e 0a 20 20 20 20 7d .return $n. }
0fd0: 0a 0a 20 20 20 20 23 20 42 61 73 69 63 20 70 61 .. # Basic pa
0fe0: 72 65 6e 74 2f 63 68 69 6c 64 20 6c 69 6e 6b 61 rent/child linka
0ff0: 67 65 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 ge __________..
1000: 20 20 20 6d 65 74 68 6f 64 20 68 61 73 70 61 72 method haspar
1010: 65 6e 74 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 ent {} { return
1020: 5b 65 78 70 72 20 7b 24 6d 79 70 61 72 65 6e 74 [expr {$myparent
1030: 20 6e 65 20 22 22 7d 5d 20 7d 0a 20 20 20 20 6d ne ""}] }. m
1040: 65 74 68 6f 64 20 68 61 73 63 68 69 6c 64 20 20 ethod haschild
1050: 7b 7d 20 7b 20 72 65 74 75 72 6e 20 5b 65 78 70 {} { return [exp
1060: 72 20 7b 24 6d 79 63 68 69 6c 64 20 20 6e 65 20 r {$mychild ne
1070: 22 22 7d 5d 20 7d 0a 0a 20 20 20 20 6d 65 74 68 ""}] }.. meth
1080: 6f 64 20 73 65 74 70 61 72 65 6e 74 20 7b 70 61 od setparent {pa
1090: 72 65 6e 74 7d 20 7b 0a 09 69 6e 74 65 67 72 69 rent} {..integri
10a0: 74 79 20 61 73 73 65 72 74 20 7b 24 6d 79 70 61 ty assert {$mypa
10b0: 72 65 6e 74 20 65 71 20 22 22 7d 20 7b 50 61 72 rent eq ""} {Par
10c0: 65 6e 74 20 61 6c 72 65 61 64 79 20 64 65 66 69 ent already defi
10d0: 6e 65 64 7d 0a 09 73 65 74 20 6d 79 70 61 72 65 ned}..set mypare
10e0: 6e 74 20 24 70 61 72 65 6e 74 0a 09 72 65 74 75 nt $parent..retu
10f0: 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 rn. }.. me
1100: 74 68 6f 64 20 63 75 74 66 72 6f 6d 70 61 72 65 thod cutfrompare
1110: 6e 74 20 7b 7d 20 7b 20 73 65 74 20 6d 79 70 61 nt {} { set mypa
1120: 72 65 6e 74 20 22 22 20 3b 20 72 65 74 75 72 6e rent "" ; return
1130: 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 63 75 }. method cu
1140: 74 66 72 6f 6d 63 68 69 6c 64 20 20 7b 7d 20 7b tfromchild {} {
1150: 20 73 65 74 20 6d 79 63 68 69 6c 64 20 20 22 22 set mychild ""
1160: 20 3b 20 72 65 74 75 72 6e 20 7d 0a 0a 20 20 20 ; return }..
1170: 20 6d 65 74 68 6f 64 20 73 65 74 63 68 69 6c 64 method setchild
1180: 20 7b 63 68 69 6c 64 7d 20 7b 0a 09 69 6e 74 65 {child} {..inte
1190: 67 72 69 74 79 20 61 73 73 65 72 74 20 7b 24 6d grity assert {$m
11a0: 79 63 68 69 6c 64 20 65 71 20 22 22 7d 20 7b 43 ychild eq ""} {C
11b0: 68 69 6c 64 20 61 6c 72 65 61 64 79 20 64 65 66 hild already def
11c0: 69 6e 65 64 7d 0a 09 73 65 74 20 6d 79 63 68 69 ined}..set mychi
11d0: 6c 64 20 24 63 68 69 6c 64 0a 09 72 65 74 75 72 ld $child..retur
11e0: 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 n. }.. met
11f0: 68 6f 64 20 63 68 61 6e 67 65 70 61 72 65 6e 74 hod changeparent
1200: 20 7b 70 61 72 65 6e 74 7d 20 7b 20 73 65 74 20 {parent} { set
1210: 6d 79 70 61 72 65 6e 74 20 24 70 61 72 65 6e 74 myparent $parent
1220: 20 3b 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 20 ; return }.
1230: 6d 65 74 68 6f 64 20 63 68 61 6e 67 65 63 68 69 method changechi
1240: 6c 64 20 20 7b 63 68 69 6c 64 7d 20 20 7b 20 73 ld {child} { s
1250: 65 74 20 6d 79 63 68 69 6c 64 20 20 24 63 68 69 et mychild $chi
1260: 6c 64 20 20 3b 20 72 65 74 75 72 6e 20 7d 0a 0a ld ; return }..
1270: 20 20 20 20 6d 65 74 68 6f 64 20 70 61 72 65 6e method paren
1280: 74 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d t {} { return $m
1290: 79 70 61 72 65 6e 74 20 7d 0a 20 20 20 20 6d 65 yparent }. me
12a0: 74 68 6f 64 20 63 68 69 6c 64 20 20 7b 7d 20 7b thod child {} {
12b0: 20 72 65 74 75 72 6e 20 24 6d 79 63 68 69 6c 64 return $mychild
12c0: 20 20 7d 0a 0a 20 20 20 20 23 20 42 72 61 6e 63 }.. # Branc
12d0: 68 20 6c 69 6e 6b 61 67 65 20 5f 5f 5f 5f 5f 5f h linkage ______
12e0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
12f0: 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 65 74 .. method set
1300: 70 61 72 65 6e 74 62 72 61 6e 63 68 20 7b 62 72 parentbranch {br
1310: 61 6e 63 68 7d 20 7b 0a 09 69 6e 74 65 67 72 69 anch} {..integri
1320: 74 79 20 61 73 73 65 72 74 20 7b 24 6d 79 70 61 ty assert {$mypa
1330: 72 65 6e 74 62 72 61 6e 63 68 20 65 71 20 22 22 rentbranch eq ""
1340: 7d 20 7b 42 72 61 6e 63 68 20 70 61 72 65 6e 74 } {Branch parent
1350: 20 61 6c 72 65 61 64 79 20 64 65 66 69 6e 65 64 already defined
1360: 7d 0a 09 73 65 74 20 6d 79 70 61 72 65 6e 74 62 }..set myparentb
1370: 72 61 6e 63 68 20 24 62 72 61 6e 63 68 0a 09 72 ranch $branch..r
1380: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }..
1390: 20 6d 65 74 68 6f 64 20 68 61 73 70 61 72 65 6e method hasparen
13a0: 74 62 72 61 6e 63 68 20 7b 7d 20 7b 20 72 65 74 tbranch {} { ret
13b0: 75 72 6e 20 5b 65 78 70 72 20 7b 24 6d 79 70 61 urn [expr {$mypa
13c0: 72 65 6e 74 62 72 61 6e 63 68 20 6e 65 20 22 22 rentbranch ne ""
13d0: 7d 5d 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 }] }. method
13e0: 68 61 73 62 72 61 6e 63 68 65 73 20 20 20 20 20 hasbranches
13f0: 7b 7d 20 7b 20 72 65 74 75 72 6e 20 5b 6c 6c 65 {} { return [lle
1400: 6e 67 74 68 20 24 6d 79 62 72 61 6e 63 68 65 73 ngth $mybranches
1410: 5d 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 ] }.. method
1420: 70 61 72 65 6e 74 62 72 61 6e 63 68 20 7b 7d 20 parentbranch {}
1430: 7b 20 72 65 74 75 72 6e 20 24 6d 79 70 61 72 65 { return $mypare
1440: 6e 74 62 72 61 6e 63 68 20 7d 0a 20 20 20 20 6d ntbranch }. m
1450: 65 74 68 6f 64 20 62 72 61 6e 63 68 65 73 20 20 ethod branches
1460: 20 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 {} { return $
1470: 6d 79 62 72 61 6e 63 68 65 73 20 7d 0a 0a 20 20 mybranches }..
1480: 20 20 6d 65 74 68 6f 64 20 61 64 64 62 72 61 6e method addbran
1490: 63 68 20 7b 62 72 61 6e 63 68 7d 20 7b 0a 09 6c ch {branch} {..l
14a0: 61 70 70 65 6e 64 20 6d 79 62 72 61 6e 63 68 65 append mybranche
14b0: 73 20 24 62 72 61 6e 63 68 0a 09 72 65 74 75 72 s $branch..retur
14c0: 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 n. }.. met
14d0: 68 6f 64 20 61 64 64 63 68 69 6c 64 6f 6e 62 72 hod addchildonbr
14e0: 61 6e 63 68 20 7b 63 68 69 6c 64 7d 20 7b 0a 09 anch {child} {..
14f0: 6c 61 70 70 65 6e 64 20 6d 79 62 72 61 6e 63 68 lappend mybranch
1500: 63 68 69 6c 64 72 65 6e 20 24 63 68 69 6c 64 0a children $child.
1510: 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 .return. }..
1520: 20 20 20 6d 65 74 68 6f 64 20 63 75 74 66 72 6f method cutfro
1530: 6d 70 61 72 65 6e 74 62 72 61 6e 63 68 20 7b 7d mparentbranch {}
1540: 20 7b 20 73 65 74 20 6d 79 70 61 72 65 6e 74 62 { set myparentb
1550: 72 61 6e 63 68 20 22 22 20 3b 20 72 65 74 75 72 ranch "" ; retur
1560: 6e 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 n }.. method
1570: 72 65 6d 6f 76 65 62 72 61 6e 63 68 20 7b 62 72 removebranch {br
1580: 61 6e 63 68 7d 20 7b 0a 09 6c 64 65 6c 65 74 65 anch} {..ldelete
1590: 20 6d 79 62 72 61 6e 63 68 65 73 20 24 62 72 61 mybranches $bra
15a0: 6e 63 68 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 nch..return.
15b0: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 72 65 }.. method re
15c0: 6d 6f 76 65 63 68 69 6c 64 6f 6e 62 72 61 6e 63 movechildonbranc
15d0: 68 20 7b 72 65 76 7d 20 7b 0a 09 6c 64 65 6c 65 h {rev} {..ldele
15e0: 74 65 20 6d 79 62 72 61 6e 63 68 63 68 69 6c 64 te mybranchchild
15f0: 72 65 6e 20 24 72 65 76 0a 09 72 65 74 75 72 6e ren $rev..return
1600: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 . }.. meth
1610: 6f 64 20 73 6f 72 74 62 72 61 6e 63 68 65 73 20 od sortbranches
1620: 7b 7d 20 7b 0a 09 23 20 50 61 73 73 20 32 3a 20 {} {..# Pass 2:
1630: 43 6f 6c 6c 65 63 74 52 65 76 0a 0a 09 69 66 20 CollectRev...if
1640: 7b 5b 6c 6c 65 6e 67 74 68 20 24 6d 79 62 72 61 {[llength $mybra
1650: 6e 63 68 65 73 5d 20 3c 20 32 7d 20 72 65 74 75 nches] < 2} retu
1660: 72 6e 0a 0a 09 23 20 53 6f 72 74 20 74 68 65 20 rn...# Sort the
1670: 62 72 61 6e 63 68 65 73 20 73 70 61 77 6e 65 64 branches spawned
1680: 20 62 79 20 74 68 69 73 20 72 65 76 69 73 69 6f by this revisio
1690: 6e 20 69 6e 20 63 72 65 61 74 69 6f 6e 0a 09 23 n in creation..#
16a0: 20 6f 72 64 65 72 2e 20 54 6f 20 68 65 6c 70 20 order. To help
16b0: 69 6e 20 74 68 69 73 20 6f 75 72 20 66 69 6c 65 in this our file
16c0: 20 67 61 76 65 20 61 6c 6c 20 62 72 61 6e 63 68 gave all branch
16d0: 65 73 20 61 20 70 6f 73 69 74 69 6f 6e 0a 09 23 es a position..#
16e0: 20 69 64 2c 20 69 6e 20 6f 72 64 65 72 20 6f 66 id, in order of
16f0: 20 74 68 65 69 72 20 64 65 66 69 6e 69 74 69 6f their definitio
1700: 6e 20 62 79 20 74 68 65 20 52 43 53 20 61 72 63 n by the RCS arc
1710: 68 69 76 65 2e 0a 09 23 0a 09 23 20 54 68 65 20 hive...#..# The
1720: 63 72 65 61 74 69 6f 6e 20 6f 72 64 65 72 20 69 creation order i
1730: 73 20 28 61 70 70 61 72 65 6e 74 6c 79 29 20 74 s (apparently) t
1740: 68 65 20 72 65 76 65 72 73 65 20 6f 66 20 74 68 he reverse of th
1750: 65 0a 09 23 20 64 65 66 69 6e 69 74 69 6f 6e 20 e..# definition
1760: 6f 72 64 65 72 2e 20 28 49 66 20 61 20 62 72 61 order. (If a bra
1770: 6e 63 68 20 69 73 20 63 72 65 61 74 65 64 20 74 nch is created t
1780: 68 65 6e 20 64 65 6c 65 74 65 64 2c 20 61 0a 09 hen deleted, a..
1790: 23 20 6c 61 74 65 72 20 62 72 61 6e 63 68 20 63 # later branch c
17a0: 61 6e 20 62 65 20 61 73 73 69 67 6e 65 64 20 74 an be assigned t
17b0: 68 65 20 72 65 63 79 63 6c 65 64 20 62 72 61 6e he recycled bran
17c0: 63 68 20 6e 75 6d 62 65 72 3b 0a 09 23 20 74 68 ch number;..# th
17d0: 65 72 65 66 6f 72 65 20 62 72 61 6e 63 68 20 6e erefore branch n
17e0: 75 6d 62 65 72 73 20 61 72 65 20 6e 6f 74 20 61 umbers are not a
17f0: 6e 20 69 6e 64 69 63 61 74 69 6f 6e 20 6f 66 20 n indication of
1800: 63 72 65 61 74 69 6f 6e 0a 09 23 20 6f 72 64 65 creation..# orde
1810: 72 2e 29 0a 0a 09 73 65 74 20 74 6d 70 20 7b 7d r.)...set tmp {}
1820: 0a 09 66 6f 72 65 61 63 68 20 62 72 61 6e 63 68 ..foreach branch
1830: 20 24 6d 79 62 72 61 6e 63 68 65 73 20 7b 0a 09 $mybranches {..
1840: 20 20 20 20 6c 61 70 70 65 6e 64 20 74 6d 70 20 lappend tmp
1850: 5b 6c 69 73 74 20 24 62 72 61 6e 63 68 20 5b 24 [list $branch [$
1860: 62 72 61 6e 63 68 20 70 6f 73 69 74 69 6f 6e 5d branch position]
1870: 5d 0a 09 7d 0a 0a 09 73 65 74 20 6d 79 62 72 61 ]..}...set mybra
1880: 6e 63 68 65 73 20 7b 7d 0a 09 66 6f 72 65 61 63 nches {}..foreac
1890: 68 20 69 74 65 6d 20 5b 6c 73 6f 72 74 20 2d 69 h item [lsort -i
18a0: 6e 64 65 78 20 31 20 2d 64 65 63 72 65 61 73 69 ndex 1 -decreasi
18b0: 6e 67 20 24 74 6d 70 5d 20 7b 0a 09 20 20 20 20 ng $tmp] {..
18c0: 73 74 72 75 63 74 3a 3a 6c 69 73 74 20 61 73 73 struct::list ass
18d0: 69 67 6e 20 24 69 74 65 6d 20 62 72 61 6e 63 68 ign $item branch
18e0: 20 70 6f 73 69 74 69 6f 6e 0a 09 20 20 20 20 6c position.. l
18f0: 61 70 70 65 6e 64 20 6d 79 62 72 61 6e 63 68 65 append mybranche
1900: 73 20 24 62 72 61 6e 63 68 0a 09 7d 0a 09 72 65 s $branch..}..re
1910: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 turn. }..
1920: 6d 65 74 68 6f 64 20 6d 6f 76 65 62 72 61 6e 63 method movebranc
1930: 68 65 73 74 6f 20 7b 72 65 76 7d 20 7b 0a 09 73 hesto {rev} {..s
1940: 65 74 20 72 65 76 6c 6f 64 20 5b 24 72 65 76 20 et revlod [$rev
1950: 6c 6f 64 5d 0a 09 66 6f 72 65 61 63 68 20 62 72 lod]..foreach br
1960: 61 6e 63 68 20 24 6d 79 62 72 61 6e 63 68 65 73 anch $mybranches
1970: 20 7b 0a 09 20 20 20 20 24 72 65 76 20 61 64 64 {.. $rev add
1980: 62 72 61 6e 63 68 20 24 62 72 61 6e 63 68 0a 09 branch $branch..
1990: 20 20 20 20 24 62 72 61 6e 63 68 20 73 65 74 70 $branch setp
19a0: 61 72 65 6e 74 20 24 72 65 76 0a 09 20 20 20 20 arent $rev..
19b0: 24 62 72 61 6e 63 68 20 73 65 74 6c 6f 64 20 24 $branch setlod $
19c0: 72 65 76 6c 6f 64 0a 09 7d 0a 09 66 6f 72 65 61 revlod..}..forea
19d0: 63 68 20 62 72 61 6e 63 68 72 65 76 20 24 6d 79 ch branchrev $my
19e0: 62 72 61 6e 63 68 63 68 69 6c 64 72 65 6e 20 7b branchchildren {
19f0: 0a 09 20 20 20 20 24 72 65 76 20 61 64 64 63 68 .. $rev addch
1a00: 69 6c 64 6f 6e 62 72 61 6e 63 68 20 24 62 72 61 ildonbranch $bra
1a10: 6e 63 68 72 65 76 0a 09 20 20 20 20 24 62 72 61 nchrev.. $bra
1a20: 6e 63 68 72 65 76 20 63 75 74 66 72 6f 6d 70 61 nchrev cutfrompa
1a30: 72 65 6e 74 0a 09 20 20 20 20 24 62 72 61 6e 63 rent.. $branc
1a40: 68 72 65 76 20 73 65 74 70 61 72 65 6e 74 20 24 hrev setparent $
1a50: 72 65 76 0a 09 7d 0a 09 73 65 74 20 6d 79 62 72 rev..}..set mybr
1a60: 61 6e 63 68 65 73 20 20 20 20 20 20 20 7b 7d 0a anches {}.
1a70: 09 73 65 74 20 6d 79 62 72 61 6e 63 68 63 68 69 .set mybranchchi
1a80: 6c 64 72 65 6e 20 7b 7d 0a 09 72 65 74 75 72 6e ldren {}..return
1a90: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 . }.. meth
1aa0: 6f 64 20 72 65 6d 6f 76 65 61 6c 6c 62 72 61 6e od removeallbran
1ab0: 63 68 65 73 20 7b 7d 20 7b 0a 09 73 65 74 20 6d ches {} {..set m
1ac0: 79 62 72 61 6e 63 68 65 73 20 20 20 20 20 20 20 ybranches
1ad0: 7b 7d 0a 09 73 65 74 20 6d 79 62 72 61 6e 63 68 {}..set mybranch
1ae0: 63 68 69 6c 64 72 65 6e 20 7b 7d 0a 09 72 65 74 children {}..ret
1af0: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 urn. }.. #
1b00: 20 54 61 67 20 6c 69 6e 6b 61 67 65 20 5f 5f 5f Tag linkage ___
1b10: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
1b20: 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 6d 65 74 68 ______.. meth
1b30: 6f 64 20 61 64 64 74 61 67 20 7b 74 61 67 7d 20 od addtag {tag}
1b40: 7b 0a 09 6c 61 70 70 65 6e 64 20 6d 79 74 61 67 {..lappend mytag
1b50: 73 20 24 74 61 67 0a 09 72 65 74 75 72 6e 0a 20 s $tag..return.
1b60: 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 }.. method
1b70: 20 74 61 67 73 20 7b 7d 20 7b 20 72 65 74 75 72 tags {} { retur
1b80: 6e 20 24 6d 79 74 61 67 73 20 7d 0a 0a 20 20 20 n $mytags }..
1b90: 20 6d 65 74 68 6f 64 20 72 65 6d 6f 76 65 61 6c method removeal
1ba0: 6c 74 61 67 73 20 7b 7d 20 7b 0a 09 73 65 74 20 ltags {} {..set
1bb0: 6d 79 74 61 67 73 20 7b 7d 0a 09 72 65 74 75 72 mytags {}..retur
1bc0: 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 n. }.. met
1bd0: 68 6f 64 20 6d 6f 76 65 74 61 67 73 74 6f 20 7b hod movetagsto {
1be0: 72 65 76 7d 20 7b 0a 09 73 65 74 20 72 65 76 6c rev} {..set revl
1bf0: 6f 64 20 5b 24 72 65 76 20 6c 6f 64 5d 0a 09 66 od [$rev lod]..f
1c00: 6f 72 65 61 63 68 20 74 61 67 20 24 6d 79 74 61 oreach tag $myta
1c10: 67 73 20 7b 0a 09 20 20 20 20 24 72 65 76 20 61 gs {.. $rev a
1c20: 64 64 74 61 67 20 24 74 61 67 0a 09 20 20 20 20 ddtag $tag..
1c30: 24 74 61 67 20 73 65 74 74 61 67 72 65 76 20 24 $tag settagrev $
1c40: 72 65 76 0a 09 20 20 20 20 24 74 61 67 20 73 65 rev.. $tag se
1c50: 74 6c 6f 64 20 24 72 65 76 6c 6f 64 0a 09 7d 0a tlod $revlod..}.
1c60: 09 73 65 74 20 6d 79 74 61 67 73 20 7b 7d 0a 09 .set mytags {}..
1c70: 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 return. }..
1c80: 20 20 23 20 67 65 6e 65 72 61 6c 20 73 79 6d 62 # general symb
1c90: 6f 6c 20 6f 70 65 72 61 74 69 6f 6e 73 20 5f 5f ol operations __
1ca0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 6d _________.. m
1cb0: 65 74 68 6f 64 20 6d 6f 76 65 73 79 6d 62 6f 6c ethod movesymbol
1cc0: 73 74 6f 20 7b 72 65 76 7d 20 7b 0a 09 23 20 4d sto {rev} {..# M
1cd0: 6f 76 65 20 74 68 65 20 74 61 67 73 20 61 6e 64 ove the tags and
1ce0: 20 62 72 61 6e 63 68 65 73 20 61 74 74 61 63 68 branches attach
1cf0: 65 64 20 74 6f 20 74 68 69 73 20 72 65 76 69 73 ed to this revis
1d00: 69 6f 6e 20 74 6f 20 74 68 65 0a 09 23 20 64 65 ion to the..# de
1d10: 73 74 69 6e 61 74 69 6f 6e 20 61 6e 64 20 66 69 stination and fi
1d20: 78 20 61 6c 6c 20 70 6f 69 6e 74 65 72 73 2e 0a x all pointers..
1d30: 0a 09 24 73 65 6c 66 20 6d 6f 76 65 74 61 67 73 ..$self movetags
1d40: 74 6f 20 20 20 20 20 24 72 65 76 0a 09 24 73 65 to $rev..$se
1d50: 6c 66 20 6d 6f 76 65 62 72 61 6e 63 68 65 73 74 lf movebranchest
1d60: 6f 20 24 72 65 76 0a 09 72 65 74 75 72 6e 0a 20 o $rev..return.
1d70: 20 20 20 7d 0a 0a 20 20 20 20 23 20 44 65 72 69 }.. # Deri
1d80: 76 65 64 20 73 74 75 66 66 20 5f 5f 5f 5f 5f 5f ved stuff ______
1d90: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
1da0: 5f 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 64 65 _.. method de
1db0: 74 65 72 6d 69 6e 65 6f 70 65 72 61 74 69 6f 6e termineoperation
1dc0: 20 7b 7d 20 7b 0a 09 23 20 4c 6f 6f 6b 20 61 74 {} {..# Look at
1dd0: 20 74 68 65 20 73 74 61 74 65 20 6f 66 20 62 6f the state of bo
1de0: 74 68 20 74 68 69 73 20 72 65 76 69 73 69 6f 6e th this revision
1df0: 20 61 6e 64 20 69 74 73 20 70 61 72 65 6e 74 20 and its parent
1e00: 74 6f 0a 09 23 20 64 65 74 65 72 6d 69 6e 65 20 to..# determine
1e10: 74 68 65 20 74 79 70 65 20 6f 70 66 20 6f 70 65 the type opf ope
1e20: 72 61 74 69 6f 6e 20 77 68 69 63 68 20 77 61 73 ration which was
1e30: 20 70 65 72 66 6f 72 6d 65 64 20 28 61 64 64 2c performed (add,
1e40: 0a 09 23 20 6d 6f 64 69 66 79 2c 20 64 65 6c 65 ..# modify, dele
1e50: 74 65 2c 20 6e 6f 6e 65 29 2e 0a 09 23 0a 09 23 te, none)...#..#
1e60: 20 54 68 65 20 69 6d 70 6f 72 74 61 6e 74 20 69 The important i
1e70: 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73 20 64 65 nformation is de
1e80: 61 64 20 76 73 20 6e 6f 74 2d 64 65 61 64 20 66 ad vs not-dead f
1e90: 6f 72 20 62 6f 74 68 2c 0a 09 23 20 67 69 76 69 or both,..# givi
1ea0: 6e 67 20 72 69 73 65 20 74 6f 20 66 6f 75 72 20 ng rise to four
1eb0: 70 6f 73 73 69 62 6c 65 20 74 79 70 65 73 2e 0a possible types..
1ec0: 0a 09 73 65 74 20 73 64 65 61 64 20 5b 65 78 70 ..set sdead [exp
1ed0: 72 20 7b 24 6d 79 73 74 61 74 65 20 65 71 20 22 r {$mystate eq "
1ee0: 64 65 61 64 22 7d 5d 0a 09 73 65 74 20 70 64 65 dead"}]..set pde
1ef0: 61 64 20 5b 65 78 70 72 20 7b 24 6d 79 70 61 72 ad [expr {$mypar
1f00: 65 6e 74 20 65 71 20 22 22 20 7c 7c 20 5b 24 6d ent eq "" || [$m
1f10: 79 70 61 72 65 6e 74 20 73 74 61 74 65 5d 20 65 yparent state] e
1f20: 71 20 22 64 65 61 64 22 7d 5d 0a 0a 09 73 65 74 q "dead"}]...set
1f30: 20 6d 79 6f 70 65 72 61 74 69 6f 6e 20 24 6d 79 myoperation $my
1f40: 6f 70 73 74 61 74 65 28 5b 6c 69 73 74 20 24 70 opstate([list $p
1f50: 64 65 61 64 20 24 73 64 65 61 64 5d 29 0a 09 72 dead $sdead])..r
1f60: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }..
1f70: 20 6d 65 74 68 6f 64 20 6f 70 65 72 61 74 69 6f method operatio
1f80: 6e 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d n {} { return $m
1f90: 79 6f 70 65 72 61 74 69 6f 6e 20 7d 0a 20 20 20 yoperation }.
1fa0: 20 6d 65 74 68 6f 64 20 72 65 74 79 70 65 20 7b method retype {
1fb0: 78 7d 20 7b 20 73 65 74 20 6d 79 6f 70 65 72 61 x} { set myopera
1fc0: 74 69 6f 6e 20 24 78 20 3b 20 72 65 74 75 72 6e tion $x ; return
1fd0: 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 69 }.. method i
1fe0: 73 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e 63 68 sondefaultbranch
1ff0: 20 20 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 {} { return
2000: 24 6d 79 69 73 6f 6e 64 65 66 61 75 6c 74 62 72 $myisondefaultbr
2010: 61 6e 63 68 20 7d 0a 0a 20 20 20 20 6d 65 74 68 anch }.. meth
2020: 6f 64 20 73 65 74 6f 6e 64 65 66 61 75 6c 74 62 od setondefaultb
2030: 72 61 6e 63 68 20 20 20 7b 78 7d 20 7b 20 73 65 ranch {x} { se
2040: 74 20 6d 79 69 73 6f 6e 64 65 66 61 75 6c 74 62 t myisondefaultb
2050: 72 61 6e 63 68 20 24 78 20 3b 20 72 65 74 75 72 ranch $x ; retur
2060: 6e 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 n }.. method
2070: 73 65 74 64 65 66 61 75 6c 74 62 72 61 6e 63 68 setdefaultbranch
2080: 63 68 69 6c 64 20 20 7b 72 65 76 7d 20 7b 20 73 child {rev} { s
2090: 65 74 20 6d 79 64 62 63 68 69 6c 64 20 24 72 65 et mydbchild $re
20a0: 76 20 3b 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 v ; return }.
20b0: 20 6d 65 74 68 6f 64 20 73 65 74 64 65 66 61 75 method setdefau
20c0: 6c 74 62 72 61 6e 63 68 70 61 72 65 6e 74 20 7b ltbranchparent {
20d0: 72 65 76 7d 20 7b 0a 09 73 65 74 20 6d 79 64 62 rev} {..set mydb
20e0: 70 61 72 65 6e 74 20 24 72 65 76 0a 0a 09 23 20 parent $rev...#
20f0: 52 65 74 79 70 65 20 74 68 65 20 72 65 76 69 73 Retype the revis
2100: 69 6f 6e 20 28 6d 61 79 20 63 68 61 6e 67 65 20 ion (may change
2110: 66 72 6f 6d 20 27 61 64 64 27 20 74 6f 20 27 63 from 'add' to 'c
2120: 68 61 6e 67 65 27 29 2e 0a 0a 09 73 65 74 20 73 hange')....set s
2130: 64 65 61 64 20 5b 65 78 70 72 20 7b 24 6d 79 6f dead [expr {$myo
2140: 70 65 72 61 74 69 6f 6e 20 20 20 20 20 6e 65 20 peration ne
2150: 22 63 68 61 6e 67 65 22 7d 5d 0a 09 73 65 74 20 "change"}]..set
2160: 70 64 65 61 64 20 5b 65 78 70 72 20 7b 5b 24 72 pdead [expr {[$r
2170: 65 76 20 6f 70 65 72 61 74 69 6f 6e 5d 20 6e 65 ev operation] ne
2180: 20 22 63 68 61 6e 67 65 22 7d 5d 0a 09 73 65 74 "change"}]..set
2190: 20 6d 79 6f 70 65 72 61 74 69 6f 6e 20 24 6d 79 myoperation $my
21a0: 6f 70 73 74 61 74 65 28 5b 6c 69 73 74 20 24 70 opstate([list $p
21b0: 64 65 61 64 20 24 73 64 65 61 64 5d 29 0a 09 72 dead $sdead])..r
21c0: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }..
21d0: 20 6d 65 74 68 6f 64 20 63 75 74 64 65 66 61 75 method cutdefau
21e0: 6c 74 62 72 61 6e 63 68 70 61 72 65 6e 74 20 7b ltbranchparent {
21f0: 7d 20 7b 20 73 65 74 20 6d 79 64 62 70 61 72 65 } { set mydbpare
2200: 6e 74 20 22 22 20 3b 20 72 65 74 75 72 6e 20 7d nt "" ; return }
2210: 0a 20 20 20 20 6d 65 74 68 6f 64 20 63 75 74 64 . method cutd
2220: 65 66 61 75 6c 74 62 72 61 6e 63 68 63 68 69 6c efaultbranchchil
2230: 64 20 20 7b 7d 20 7b 20 73 65 74 20 6d 79 64 62 d {} { set mydb
2240: 63 68 69 6c 64 20 20 22 22 20 3b 20 72 65 74 75 child "" ; retu
2250: 72 6e 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 rn }.. method
2260: 20 64 65 66 61 75 6c 74 62 72 61 6e 63 68 63 68 defaultbranchch
2270: 69 6c 64 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e ild {} { return
2280: 20 24 6d 79 64 62 63 68 69 6c 64 20 7d 0a 20 20 $mydbchild }.
2290: 20 20 6d 65 74 68 6f 64 20 64 65 66 61 75 6c 74 method default
22a0: 62 72 61 6e 63 68 70 61 72 65 6e 74 20 7b 7d 20 branchparent {}
22b0: 7b 20 72 65 74 75 72 6e 20 24 6d 79 64 62 70 61 { return $mydbpa
22c0: 72 65 6e 74 20 7d 0a 0a 20 20 20 20 6d 65 74 68 rent }.. meth
22d0: 6f 64 20 68 61 73 64 65 66 61 75 6c 74 62 72 61 od hasdefaultbra
22e0: 6e 63 68 63 68 69 6c 64 20 20 7b 7d 20 7b 20 72 nchchild {} { r
22f0: 65 74 75 72 6e 20 5b 65 78 70 72 20 7b 24 6d 79 eturn [expr {$my
2300: 64 62 63 68 69 6c 64 20 20 6e 65 20 22 22 7d 5d dbchild ne ""}]
2310: 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 68 61 }. method ha
2320: 73 64 65 66 61 75 6c 74 62 72 61 6e 63 68 70 61 sdefaultbranchpa
2330: 72 65 6e 74 20 7b 7d 20 7b 20 72 65 74 75 72 6e rent {} { return
2340: 20 5b 65 78 70 72 20 7b 24 6d 79 64 62 70 61 72 [expr {$mydbpar
2350: 65 6e 74 20 6e 65 20 22 22 7d 5d 20 7d 0a 0a 20 ent ne ""}] }..
2360: 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23 23 # # ## ### ##
2370: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 ### ######## ###
2380: 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 ##########. #
2390: 23 20 54 79 70 65 20 41 50 49 0a 0a 20 20 20 20 # Type API..
23a0: 74 79 70 65 6d 65 74 68 6f 64 20 69 73 74 72 75 typemethod istru
23b0: 6e 6b 72 65 76 6e 72 20 7b 72 65 76 6e 72 7d 20 nkrevnr {revnr}
23c0: 7b 0a 09 72 65 74 75 72 6e 20 5b 65 78 70 72 20 {..return [expr
23d0: 7b 5b 6c 6c 65 6e 67 74 68 20 5b 73 70 6c 69 74 {[llength [split
23e0: 20 24 72 65 76 6e 72 20 2e 5d 5d 20 3d 3d 20 32 $revnr .]] == 2
23f0: 7d 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 74 79 }]. }.. ty
2400: 70 65 6d 65 74 68 6f 64 20 69 73 62 72 61 6e 63 pemethod isbranc
2410: 68 72 65 76 6e 72 20 7b 72 65 76 6e 72 20 5f 20 hrevnr {revnr _
2420: 62 76 7d 20 7b 0a 09 69 66 20 7b 5b 72 65 67 65 bv} {..if {[rege
2430: 78 70 20 24 6d 79 62 72 61 6e 63 68 70 61 74 74 xp $mybranchpatt
2440: 65 72 6e 20 24 72 65 76 6e 72 20 2d 3e 20 68 65 ern $revnr -> he
2450: 61 64 20 74 61 69 6c 5d 7d 20 7b 0a 09 20 20 20 ad tail]} {..
2460: 20 75 70 76 61 72 20 31 20 24 62 76 20 62 72 61 upvar 1 $bv bra
2470: 6e 63 68 6e 72 0a 09 20 20 20 20 73 65 74 20 62 nchnr.. set b
2480: 72 61 6e 63 68 6e 72 20 24 7b 68 65 61 64 7d 24 ranchnr ${head}$
2490: 74 61 69 6c 0a 09 20 20 20 20 72 65 74 75 72 6e tail.. return
24a0: 20 31 0a 09 7d 0a 09 72 65 74 75 72 6e 20 30 0a 1..}..return 0.
24b0: 20 20 20 20 7d 0a 0a 20 20 20 20 74 79 70 65 6d }.. typem
24c0: 65 74 68 6f 64 20 32 62 72 61 6e 63 68 6e 72 20 ethod 2branchnr
24d0: 7b 72 65 76 6e 72 7d 20 7b 0a 09 23 20 49 6e 70 {revnr} {..# Inp
24e0: 75 74 20 69 73 20 61 20 62 72 61 6e 63 68 20 72 ut is a branch r
24f0: 65 76 69 73 69 6f 6e 20 6e 75 6d 62 65 72 2c 20 evision number,
2500: 69 2e 65 2e 20 61 20 72 65 76 69 73 69 6f 6e 20 i.e. a revision
2510: 6e 75 6d 62 65 72 0a 09 23 20 77 69 74 68 20 61 number..# with a
2520: 6e 20 65 76 65 6e 20 6e 75 6d 62 65 72 20 6f 66 n even number of
2530: 20 63 6f 6d 70 6f 6e 65 6e 74 73 3b 20 66 6f 72 components; for
2540: 20 65 78 61 6d 70 6c 65 20 27 32 2e 39 2e 32 2e example '2.9.2.
2550: 31 27 0a 09 23 20 28 6e 65 76 65 72 20 27 32 2e 1'..# (never '2.
2560: 39 2e 32 27 20 6e 6f 72 20 27 32 2e 39 2e 30 2e 9.2' nor '2.9.0.
2570: 32 27 29 2e 20 20 54 68 65 20 72 65 74 75 72 6e 2'). The return
2580: 20 76 61 6c 75 65 20 69 73 20 74 68 65 0a 09 23 value is the..#
2590: 20 62 72 61 6e 63 68 20 6e 75 6d 62 65 72 20 28 branch number (
25a0: 66 6f 72 20 65 78 61 6d 70 6c 65 2c 20 27 32 2e for example, '2.
25b0: 39 2e 32 27 29 2e 20 20 46 6f 72 20 74 72 75 6e 9.2'). For trun
25c0: 6b 20 72 65 76 69 73 69 6f 6e 73 2c 0a 09 23 20 k revisions,..#
25d0: 6c 69 6b 65 20 27 33 2e 34 27 2c 20 77 65 20 72 like '3.4', we r
25e0: 65 74 75 72 6e 20 74 68 65 20 65 6d 70 74 79 20 eturn the empty
25f0: 73 74 72 69 6e 67 2e 0a 0a 09 69 66 20 7b 5b 24 string....if {[$
2600: 74 79 70 65 20 69 73 74 72 75 6e 6b 72 65 76 6e type istrunkrevn
2610: 72 20 24 72 65 76 6e 72 5d 7d 20 7b 0a 09 20 20 r $revnr]} {..
2620: 20 20 72 65 74 75 72 6e 20 22 22 0a 09 7d 0a 09 return ""..}..
2630: 72 65 74 75 72 6e 20 5b 6a 6f 69 6e 20 5b 6c 72 return [join [lr
2640: 61 6e 67 65 20 5b 73 70 6c 69 74 20 24 72 65 76 ange [split $rev
2650: 6e 72 20 2e 5d 20 30 20 65 6e 64 2d 31 5d 20 2e nr .] 0 end-1] .
2660: 5d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 74 79 70 ]. }.. typ
2670: 65 6d 65 74 68 6f 64 20 32 62 72 61 6e 63 68 70 emethod 2branchp
2680: 61 72 65 6e 74 72 65 76 6e 72 20 7b 62 72 61 6e arentrevnr {bran
2690: 63 68 6e 72 7d 20 7b 0a 09 23 20 43 68 6f 70 20 chnr} {..# Chop
26a0: 74 68 65 20 6c 61 73 74 20 73 65 67 6d 65 6e 74 the last segment
26b0: 20 6f 66 66 0a 09 72 65 74 75 72 6e 20 5b 6a 6f off..return [jo
26c0: 69 6e 20 5b 6c 72 61 6e 67 65 20 5b 73 70 6c 69 in [lrange [spli
26d0: 74 20 24 62 72 61 6e 63 68 6e 72 20 2e 5d 20 30 t $branchnr .] 0
26e0: 20 65 6e 64 2d 31 5d 20 2e 5d 0a 20 20 20 20 7d end-1] .]. }
26f0: 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23 .. # # ## ###
2700: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 ##### ########
2710: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a 20 #############..
2720: 20 20 20 6d 65 74 68 6f 64 20 70 65 72 73 69 73 method persis
2730: 74 20 7b 7d 20 7b 0a 09 73 65 74 20 66 69 64 20 t {} {..set fid
2740: 5b 24 6d 79 66 69 6c 65 20 69 64 5d 0a 09 73 65 [$myfile id]..se
2750: 74 20 6c 6f 64 20 5b 24 6d 79 6c 6f 64 20 69 64 t lod [$mylod id
2760: 5d 0a 09 73 65 74 20 6f 70 20 20 24 6d 79 6f 70 ]..set op $myop
2770: 63 6f 64 65 28 24 6d 79 6f 70 65 72 61 74 69 6f code($myoperatio
2780: 6e 29 0a 09 73 65 74 20 69 64 62 20 24 6d 79 69 n)..set idb $myi
2790: 73 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e 63 68 sondefaultbranch
27a0: 0a 0a 09 6c 61 70 70 65 6e 64 20 6d 61 70 20 40 ...lappend map @
27b0: 50 40 20 5b 65 78 70 72 20 7b 20 28 24 6d 79 70 P@ [expr { ($myp
27c0: 61 72 65 6e 74 20 20 20 20 20 20 20 65 71 20 22 arent eq "
27d0: 22 29 20 3f 20 22 4e 55 4c 4c 22 20 3a 20 5b 24 ") ? "NULL" : [$
27e0: 6d 79 70 61 72 65 6e 74 20 20 20 20 20 20 20 69 myparent i
27f0: 64 5d 20 7d 5d 0a 09 6c 61 70 70 65 6e 64 20 6d d] }]..lappend m
2800: 61 70 20 40 43 40 20 5b 65 78 70 72 20 7b 20 28 ap @C@ [expr { (
2810: 24 6d 79 63 68 69 6c 64 20 20 20 20 20 20 20 20 $mychild
2820: 65 71 20 22 22 29 20 3f 20 22 4e 55 4c 4c 22 20 eq "") ? "NULL"
2830: 3a 20 5b 24 6d 79 63 68 69 6c 64 20 20 20 20 20 : [$mychild
2840: 20 20 20 69 64 5d 20 7d 5d 0a 09 6c 61 70 70 65 id] }]..lappe
2850: 6e 64 20 6d 61 70 20 40 44 50 20 5b 65 78 70 72 nd map @DP [expr
2860: 20 7b 20 28 24 6d 79 64 62 70 61 72 65 6e 74 20 { ($mydbparent
2870: 20 20 20 20 65 71 20 22 22 29 20 3f 20 22 4e 55 eq "") ? "NU
2880: 4c 4c 22 20 3a 20 5b 24 6d 79 64 62 70 61 72 65 LL" : [$mydbpare
2890: 6e 74 20 20 20 20 20 69 64 5d 20 7d 5d 0a 09 6c nt id] }]..l
28a0: 61 70 70 65 6e 64 20 6d 61 70 20 40 44 43 20 5b append map @DC [
28b0: 65 78 70 72 20 7b 20 28 24 6d 79 64 62 63 68 69 expr { ($mydbchi
28c0: 6c 64 20 20 20 20 20 20 65 71 20 22 22 29 20 3f ld eq "") ?
28d0: 20 22 4e 55 4c 4c 22 20 3a 20 5b 24 6d 79 64 62 "NULL" : [$mydb
28e0: 63 68 69 6c 64 20 20 20 20 20 20 69 64 5d 20 7d child id] }
28f0: 5d 0a 09 6c 61 70 70 65 6e 64 20 6d 61 70 20 40 ]..lappend map @
2900: 42 50 20 5b 65 78 70 72 20 7b 20 28 24 6d 79 70 BP [expr { ($myp
2910: 61 72 65 6e 74 62 72 61 6e 63 68 20 65 71 20 22 arentbranch eq "
2920: 22 29 20 3f 20 22 4e 55 4c 4c 22 20 3a 20 5b 24 ") ? "NULL" : [$
2930: 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 68 20 69 myparentbranch i
2940: 64 5d 20 7d 5d 0a 0a 09 73 65 74 20 63 6d 64 20 d] }]...set cmd
2950: 7b 0a 09 20 20 20 20 49 4e 53 45 52 54 20 49 4e {.. INSERT IN
2960: 54 4f 20 72 65 76 69 73 69 6f 6e 20 28 20 72 69 TO revision ( ri
2970: 64 2c 20 20 20 66 69 64 2c 20 20 72 65 76 2c 20 d, fid, rev,
2980: 20 20 20 20 20 6c 6f 64 2c 20 70 61 72 65 6e 74 lod, parent
2990: 2c 20 63 68 69 6c 64 2c 20 20 69 73 64 65 66 61 , child, isdefa
29a0: 75 6c 74 2c 20 64 62 70 61 72 65 6e 74 2c 20 64 ult, dbparent, d
29b0: 62 63 68 69 6c 64 2c 20 62 70 61 72 65 6e 74 2c bchild, bparent,
29c0: 20 20 6f 70 2c 20 20 64 61 74 65 2c 20 20 20 20 op, date,
29d0: 73 74 61 74 65 2c 20 20 20 20 6d 69 64 29 0a 09 state, mid)..
29e0: 20 20 20 20 56 41 4c 55 45 53 20 20 20 20 20 20 VALUES
29f0: 20 20 20 20 20 20 20 20 20 28 24 6d 79 69 64 2c ($myid,
2a00: 20 24 66 69 64 2c 20 24 6d 79 72 65 76 6e 72 2c $fid, $myrevnr,
2a10: 20 24 6c 6f 64 2c 20 40 50 40 2c 20 20 20 20 40 $lod, @P@, @
2a20: 43 40 2c 20 20 20 24 69 64 62 2c 20 20 20 20 20 C@, $idb,
2a30: 20 20 40 44 50 2c 20 20 20 20 20 20 40 44 43 2c @DP, @DC,
2a40: 20 20 20 20 20 40 42 50 20 20 20 20 2c 20 24 6f @BP , $o
2a50: 70 2c 20 24 6d 79 64 61 74 65 2c 20 24 6d 79 73 p, $mydate, $mys
2a60: 74 61 74 65 2c 20 24 6d 79 6d 65 74 61 69 64 29 tate, $mymetaid)
2a70: 3b 0a 09 7d 0a 0a 09 73 74 61 74 65 20 74 72 61 ;..}...state tra
2a80: 6e 73 61 63 74 69 6f 6e 20 7b 0a 09 20 20 20 20 nsaction {..
2a90: 73 74 61 74 65 20 72 75 6e 20 5b 73 74 72 69 6e state run [strin
2aa0: 67 20 6d 61 70 20 24 6d 61 70 20 24 63 6d 64 5d g map $map $cmd]
2ab0: 0a 0a 09 20 20 20 20 23 20 41 6e 64 20 74 68 65 ... # And the
2ac0: 20 62 72 61 6e 63 68 20 63 68 69 6c 64 72 65 6e branch children
2ad0: 20 61 73 20 77 65 6c 6c 2c 20 66 6f 72 20 70 61 as well, for pa
2ae0: 73 73 20 35 2e 0a 09 20 20 20 20 66 6f 72 65 61 ss 5... forea
2af0: 63 68 20 62 63 20 24 6d 79 62 72 61 6e 63 68 63 ch bc $mybranchc
2b00: 68 69 6c 64 72 65 6e 20 7b 0a 09 09 73 65 74 20 hildren {...set
2b10: 62 63 69 64 20 5b 24 62 63 20 69 64 5d 0a 09 09 bcid [$bc id]...
2b20: 73 74 61 74 65 20 72 75 6e 20 7b 0a 09 09 20 20 state run {...
2b30: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 72 65 INSERT INTO re
2b40: 76 69 73 69 6f 6e 62 72 61 6e 63 68 63 68 69 6c visionbranchchil
2b50: 64 72 65 6e 20 28 72 69 64 2c 20 20 20 62 72 69 dren (rid, bri
2b60: 64 29 0a 09 09 20 20 20 20 56 41 4c 55 45 53 20 d)... VALUES
2b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2b80: 20 20 20 20 20 20 20 20 20 20 20 20 28 24 6d 79 ($my
2b90: 69 64 2c 20 24 62 63 69 64 29 3b 0a 09 09 7d 0a id, $bcid);...}.
2ba0: 09 20 20 20 20 7d 0a 09 7d 0a 09 72 65 74 75 72 . }..}..retur
2bb0: 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 23 n. }.. # #
2bc0: 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 ## ### ##### ##
2bd0: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 ###### #########
2be0: 23 23 23 23 0a 20 20 20 20 23 23 20 53 74 61 74 ####. ## Stat
2bf0: 65 0a 0a 20 20 20 20 23 20 50 65 72 73 69 73 74 e.. # Persist
2c00: 65 6e 74 3a 20 6d 79 69 64 20 20 20 20 20 20 20 ent: myid
2c10: 20 20 20 20 20 20 20 20 20 2d 20 72 65 76 69 73 - revis
2c20: 69 6f 6e 2e 72 69 64 0a 20 20 20 20 23 20 20 20 ion.rid. #
2c30: 20 20 20 20 20 20 20 20 20 20 6d 79 66 69 6c 65 myfile
2c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 20 -
2c50: 72 65 76 69 73 69 6f 6e 2e 66 69 64 0a 20 20 20 revision.fid.
2c60: 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 6d # m
2c70: 79 6c 6f 64 20 20 20 20 20 20 20 20 20 20 20 20 ylod
2c80: 20 20 20 2d 20 72 65 76 69 73 69 6f 6e 2e 6c 6f - revision.lo
2c90: 64 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 d. #
2ca0: 20 20 20 20 6d 79 72 65 76 6e 72 20 20 20 20 20 myrevnr
2cb0: 20 20 20 20 20 20 20 20 2d 20 72 65 76 69 73 69 - revisi
2cc0: 6f 6e 2e 72 65 76 0a 20 20 20 20 23 20 20 20 20 on.rev. #
2cd0: 20 20 20 20 20 20 20 20 20 6d 79 64 61 74 65 20 mydate
2ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 20 72 - r
2cf0: 65 76 69 73 69 6f 6e 2e 64 61 74 65 0a 20 20 20 evision.date.
2d00: 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 6d # m
2d10: 79 73 74 61 74 65 20 20 20 20 20 20 20 20 20 20 ystate
2d20: 20 20 20 2d 20 72 65 76 69 73 69 6f 6e 2e 73 74 - revision.st
2d30: 61 74 65 0a 20 20 20 20 23 20 20 20 20 20 20 20 ate. #
2d40: 20 20 20 20 20 20 6d 79 6d 65 74 61 69 64 20 20 mymetaid
2d50: 20 20 20 20 20 20 20 20 20 20 2d 20 72 65 76 69 - revi
2d60: 73 69 6f 6e 2e 6d 69 64 0a 20 20 20 20 23 20 20 sion.mid. #
2d70: 20 20 20 20 20 20 20 20 20 20 20 6d 79 74 65 78 mytex
2d80: 74 7b 73 74 61 72 74 2c 65 6e 64 7d 20 20 20 2d t{start,end} -
2d90: 20 72 65 76 69 73 69 6f 6e 2e 7b 63 73 2c 63 65 revision.{cs,ce
2da0: 7d 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 }. #
2db0: 20 20 20 20 6d 79 70 61 72 65 6e 74 20 20 20 20 myparent
2dc0: 20 20 20 20 20 20 20 20 2d 20 72 65 76 69 73 69 - revisi
2dd0: 6f 6e 2e 70 61 72 65 6e 74 0a 20 20 20 20 23 20 on.parent. #
2de0: 20 20 20 20 20 20 20 20 20 20 20 20 6d 79 63 68 mych
2df0: 69 6c 64 20 20 20 20 20 20 20 20 20 20 20 20 20 ild
2e00: 2d 20 72 65 76 69 73 69 6f 6e 2e 63 68 69 6c 64 - revision.child
2e10: 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 . #
2e20: 20 20 20 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 myparentbranc
2e30: 68 20 20 20 20 20 20 2d 20 72 65 76 69 73 69 6f h - revisio
2e40: 6e 2e 62 70 61 72 65 6e 74 0a 20 20 20 20 23 20 n.bparent. #
2e50: 20 20 20 20 20 20 20 20 20 20 20 20 6d 79 6f 70 myop
2e60: 65 72 61 74 69 6f 6e 20 20 20 20 20 20 20 20 20 eration
2e70: 2d 20 72 65 76 69 73 69 6f 6e 2e 6f 70 0a 20 20 - revision.op.
2e80: 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 #
2e90: 6d 79 69 73 6f 6e 64 65 66 61 75 6c 74 62 72 61 myisondefaultbra
2ea0: 6e 63 68 20 2d 20 72 65 76 69 73 69 6f 6e 2e 69 nch - revision.i
2eb0: 73 64 65 66 61 75 6c 74 0a 20 20 20 20 23 20 20 sdefault. #
2ec0: 20 20 20 20 20 20 20 20 20 20 20 6d 79 64 62 70 mydbp
2ed0: 61 72 65 6e 74 20 20 20 20 20 20 20 20 20 20 2d arent -
2ee0: 20 72 65 76 69 73 69 6f 6e 2e 64 62 70 61 72 65 revision.dbpare
2ef0: 6e 74 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 nt. #
2f00: 20 20 20 20 20 6d 79 64 62 63 68 69 6c 64 20 20 mydbchild
2f10: 20 20 20 20 20 20 20 20 20 2d 20 72 65 76 69 73 - revis
2f20: 69 6f 6e 2e 64 62 63 68 69 6c 64 0a 0a 20 20 20 ion.dbchild..
2f30: 20 6d 65 74 68 6f 64 20 44 55 4d 50 20 7b 6c 61 method DUMP {la
2f40: 62 65 6c 7d 20 7b 0a 09 70 75 74 73 20 22 24 6c bel} {..puts "$l
2f50: 61 62 65 6c 20 3d 20 24 73 65 6c 66 20 3c 24 6d abel = $self <$m
2f60: 79 72 65 76 6e 72 3e 20 28 4e 54 44 42 3d 24 6d yrevnr> (NTDB=$m
2f70: 79 69 73 6f 6e 64 65 66 61 75 6c 74 62 72 61 6e yisondefaultbran
2f80: 63 68 29 20 5c 7b 22 0a 09 70 75 74 73 20 22 5c ch) \{"..puts "\
2f90: 74 50 5c 74 24 6d 79 70 61 72 65 6e 74 22 0a 09 tP\t$myparent"..
2fa0: 70 75 74 73 20 22 5c 74 43 5c 74 24 6d 79 63 68 puts "\tC\t$mych
2fb0: 69 6c 64 22 0a 09 70 75 74 73 20 22 5c 74 50 42 ild"..puts "\tPB
2fc0: 5c 74 24 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 \t$myparentbranc
2fd0: 68 22 0a 09 70 75 74 73 20 22 5c 74 64 62 50 5c h"..puts "\tdbP\
2fe0: 74 24 6d 79 64 62 70 61 72 65 6e 74 22 0a 09 70 t$mydbparent"..p
2ff0: 75 74 73 20 22 5c 74 64 62 43 5c 74 24 6d 79 64 uts "\tdbC\t$myd
3000: 62 63 68 69 6c 64 22 0a 09 66 6f 72 65 61 63 68 bchild"..foreach
3010: 20 62 20 24 6d 79 62 72 61 6e 63 68 65 73 20 7b b $mybranches {
3020: 0a 09 20 20 20 20 70 75 74 73 20 5c 74 5c 74 42 .. puts \t\tB
3030: 5c 74 24 62 0a 09 7d 0a 09 66 6f 72 65 61 63 68 \t$b..}..foreach
3040: 20 62 20 24 6d 79 62 72 61 6e 63 68 63 68 69 6c b $mybranchchil
3050: 64 72 65 6e 20 7b 0a 09 20 20 20 20 70 75 74 73 dren {.. puts
3060: 20 5c 74 5c 74 42 43 5c 74 24 62 0a 09 7d 0a 09 \t\tBC\t$b..}..
3070: 70 75 74 73 20 22 5c 7d 22 0a 09 72 65 74 75 72 puts "\}"..retur
3080: 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 74 79 70 n. }.. typ
3090: 65 76 61 72 69 61 62 6c 65 20 6d 79 62 72 61 6e evariable mybran
30a0: 63 68 70 61 74 74 65 72 6e 20 7b 5e 28 28 3f 3a chpattern {^((?:
30b0: 5c 64 2b 5c 2e 5c 64 2b 5c 2e 29 2b 29 28 3f 3a \d+\.\d+\.)+)(?:
30c0: 30 5c 2e 29 3f 28 5c 64 2b 29 24 7d 0a 20 20 20 0\.)?(\d+)$}.
30d0: 20 23 20 46 69 72 73 74 20 61 20 6e 6f 6e 7a 65 # First a nonze
30e0: 72 6f 20 65 76 65 6e 20 6e 75 6d 62 65 72 20 6f ro even number o
30f0: 66 20 64 69 67 69 74 20 67 72 6f 75 70 73 20 77 f digit groups w
3100: 69 74 68 20 74 72 61 69 6c 69 6e 67 20 64 6f 74 ith trailing dot
3110: 0a 20 20 20 20 23 20 43 56 53 20 74 68 65 6e 20 . # CVS then
3120: 73 74 69 63 6b 73 20 61 6e 20 65 78 74 72 61 20 sticks an extra
3130: 30 20 69 6e 20 68 65 72 65 3b 20 52 43 53 20 64 0 in here; RCS d
3140: 6f 65 73 20 6e 6f 74 2e 0a 20 20 20 20 23 20 41 oes not.. # A
3150: 6e 64 20 74 68 65 20 6c 61 73 74 20 64 69 67 69 nd the last digi
3160: 74 20 67 72 6f 75 70 2e 0a 0a 20 20 20 20 74 79 t group... ty
3170: 70 65 76 61 72 69 61 62 6c 65 20 6d 79 69 64 63 pevariable myidc
3180: 6f 75 6e 74 65 72 20 30 20 3b 20 23 20 43 6f 75 ounter 0 ; # Cou
3190: 6e 74 65 72 20 66 6f 72 20 72 65 76 69 73 69 6f nter for revisio
31a0: 6e 20 69 64 73 2e 0a 20 20 20 20 76 61 72 69 61 n ids.. varia
31b0: 62 6c 65 20 6d 79 69 64 20 20 20 20 20 20 20 20 ble myid
31c0: 20 20 20 7b 7d 20 3b 20 23 20 52 65 76 69 73 69 {} ; # Revisi
31d0: 6f 6e 20 69 64 2e 0a 0a 20 20 20 20 76 61 72 69 on id... vari
31e0: 61 62 6c 65 20 6d 79 72 65 76 6e 72 20 20 20 20 able myrevnr
31f0: 20 7b 7d 20 3b 20 23 20 52 65 76 69 73 69 6f 6e {} ; # Revision
3200: 20 6e 75 6d 62 65 72 20 6f 66 20 74 68 65 20 72 number of the r
3210: 65 76 69 73 69 6f 6e 2e 0a 20 20 20 20 76 61 72 evision.. var
3220: 69 61 62 6c 65 20 6d 79 64 61 74 65 20 20 20 20 iable mydate
3230: 20 20 7b 7d 20 3b 20 23 20 54 69 6d 65 73 74 61 {} ; # Timesta
3240: 6d 70 20 6f 66 20 74 68 65 20 72 65 76 69 73 69 mp of the revisi
3250: 6f 6e 2c 20 73 65 63 6f 6e 64 73 20 73 69 6e 63 on, seconds sinc
3260: 65 20 65 70 6f 63 68 0a 20 20 20 20 76 61 72 69 e epoch. vari
3270: 61 62 6c 65 20 6d 79 6f 72 69 67 64 61 74 65 20 able myorigdate
3280: 20 7b 7d 20 3b 20 23 20 4f 72 69 67 69 6e 61 6c {} ; # Original
3290: 20 75 6e 6d 6f 64 69 66 69 65 64 20 74 69 6d 65 unmodified time
32a0: 73 74 61 6d 70 2e 0a 20 20 20 20 76 61 72 69 61 stamp.. varia
32b0: 62 6c 65 20 6d 79 73 74 61 74 65 20 20 20 20 20 ble mystate
32c0: 7b 7d 20 3b 20 23 20 53 74 61 74 65 20 6f 66 20 {} ; # State of
32d0: 74 68 65 20 72 65 76 69 73 69 6f 6e 2e 0a 20 20 the revision..
32e0: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 66 69 6c variable myfil
32f0: 65 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 52 65 e {} ; # Re
3300: 66 20 74 6f 20 74 68 65 20 66 69 6c 65 20 6f 62 f to the file ob
3310: 6a 65 63 74 20 74 68 65 20 72 65 76 69 73 69 6f ject the revisio
3320: 6e 20 62 65 6c 6f 6e 67 73 20 74 6f 2e 0a 20 20 n belongs to..
3330: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 74 65 78 variable mytex
3340: 74 73 74 61 72 74 20 7b 7d 20 3b 20 23 20 53 74 tstart {} ; # St
3350: 61 72 74 20 6f 66 20 74 68 65 20 72 61 6e 67 65 art of the range
3360: 20 6f 66 20 74 68 65 20 28 64 65 6c 74 61 29 20 of the (delta)
3370: 74 65 78 74 0a 09 09 09 20 20 20 20 20 20 23 20 text.... #
3380: 66 6f 72 20 74 68 69 73 20 72 65 76 69 73 69 6f for this revisio
3390: 6e 20 69 6e 20 74 68 65 20 66 69 6c 65 2e 0a 20 n in the file..
33a0: 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 74 65 variable myte
33b0: 78 74 65 6e 64 20 20 20 7b 7d 20 3b 20 23 20 45 xtend {} ; # E
33c0: 6e 64 20 6f 66 20 74 68 65 20 72 61 6e 67 65 20 nd of the range
33d0: 6f 66 20 74 68 65 20 28 64 65 6c 74 61 29 20 74 of the (delta) t
33e0: 65 78 74 0a 09 09 09 20 20 20 20 20 20 23 20 66 ext.... # f
33f0: 6f 72 20 74 68 69 73 20 72 65 76 69 73 69 6f 6e or this revision
3400: 20 69 6e 20 74 68 65 20 66 69 6c 65 2e 0a 20 20 in the file..
3410: 20 20 76 61 72 69 61 62 6c 65 20 6d 79 6d 65 74 variable mymet
3420: 61 69 64 20 20 20 20 7b 7d 20 3b 20 23 20 49 64 aid {} ; # Id
3430: 20 6f 66 20 74 68 65 20 6d 65 74 61 20 64 61 74 of the meta dat
3440: 61 20 67 72 6f 75 70 20 74 68 65 20 72 65 76 69 a group the revi
3450: 73 69 6f 6e 0a 09 09 09 20 20 20 20 20 20 23 20 sion.... #
3460: 62 65 6c 6f 6e 67 73 20 74 6f 2e 20 54 68 69 73 belongs to. This
3470: 20 69 73 20 6c 61 74 65 72 20 75 73 65 64 20 74 is later used t
3480: 6f 20 70 75 74 0a 09 09 09 20 20 20 20 20 20 23 o put.... #
3490: 20 74 68 65 20 66 69 6c 65 20 72 65 76 69 73 69 the file revisi
34a0: 6f 6e 73 20 69 6e 74 6f 20 70 72 65 6c 69 6d 69 ons into prelimi
34b0: 6e 61 72 79 0a 09 09 09 20 20 20 20 20 20 23 20 nary.... #
34c0: 63 68 61 6e 67 65 73 65 74 73 20 28 61 6b 61 20 changesets (aka
34d0: 70 72 6f 6a 65 63 74 20 72 65 76 69 73 69 6f 6e project revision
34e0: 73 29 2e 0a 09 09 09 20 20 20 20 20 20 23 20 54 s)..... # T
34f0: 68 69 73 20 69 64 20 65 6e 63 6f 64 65 73 20 34 his id encodes 4
3500: 20 70 69 65 63 65 73 20 6f 66 20 64 61 74 61 2c pieces of data,
3510: 0a 09 09 09 20 20 20 20 20 20 23 20 6e 61 6d 65 .... # name
3520: 6c 79 3a 20 74 68 65 20 70 72 6f 6a 65 63 74 20 ly: the project
3530: 61 6e 64 20 62 72 61 6e 63 68 20 74 68 65 0a 09 and branch the..
3540: 09 09 20 20 20 20 20 20 23 20 72 65 76 69 73 69 .. # revisi
3550: 6f 6e 20 77 61 73 20 63 6f 6d 6d 69 74 74 65 64 on was committed
3560: 20 74 6f 2c 20 74 68 65 20 61 75 74 68 6f 72 0a to, the author.
3570: 09 09 09 20 20 20 20 20 20 23 20 77 68 6f 20 64 ... # who d
3580: 69 64 20 74 68 65 20 63 6f 6d 6d 69 74 2c 20 61 id the commit, a
3590: 6e 64 20 74 68 65 20 6d 65 73 73 61 67 65 0a 09 nd the message..
35a0: 09 09 20 20 20 20 20 20 23 20 75 73 65 64 2e 0a .. # used..
35b0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 6c variable myl
35c0: 6f 64 20 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 od {} ; #
35d0: 52 65 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65 Reference to the
35e0: 20 6c 69 6e 65 2d 6f 66 2d 64 65 76 65 6c 6f 70 line-of-develop
35f0: 6d 65 6e 74 0a 09 09 09 20 20 20 20 20 20 23 20 ment.... #
3600: 6f 62 6a 65 63 74 20 74 68 65 20 72 65 76 69 73 object the revis
3610: 69 6f 6e 20 62 65 6c 6f 6e 67 73 20 74 6f 2e 20 ion belongs to.
3620: 41 6e 0a 09 09 09 20 20 20 20 20 20 23 20 61 6c An.... # al
3630: 74 65 72 6e 61 74 69 76 65 20 69 64 69 6f 6d 20 ternative idiom
3640: 77 6f 75 6c 64 20 62 65 20 74 6f 20 63 61 6c 6c would be to call
3650: 20 69 74 0a 09 09 09 20 20 20 20 20 20 23 20 74 it.... # t
3660: 68 65 20 62 72 61 6e 63 68 20 74 68 65 20 72 65 he branch the re
3670: 76 69 73 69 6f 6e 20 69 73 20 6f 6e 2e 20 54 68 vision is on. Th
3680: 69 73 0a 09 09 09 20 20 20 20 20 20 23 20 72 65 is.... # re
3690: 66 65 72 65 6e 63 65 20 69 73 20 74 6f 20 65 69 ference is to ei
36a0: 74 68 65 72 20 70 72 6f 6a 65 63 74 2d 6c 65 76 ther project-lev
36b0: 65 6c 0a 09 09 09 20 20 20 20 20 20 23 20 74 72 el.... # tr
36c0: 75 6e 6b 20 6f 72 20 66 69 6c 65 2d 6c 65 76 65 unk or file-leve
36d0: 6c 20 73 79 6d 62 6f 6c 2e 0a 0a 20 20 20 20 23 l symbol... #
36e0: 20 42 61 73 69 63 20 70 61 72 65 6e 74 2f 63 68 Basic parent/ch
36f0: 69 6c 64 20 6c 69 6e 6b 61 67 65 20 28 6c 69 6e ild linkage (lin
3700: 65 73 20 6f 66 20 64 65 76 65 6c 6f 70 6d 65 6e es of developmen
3710: 74 29 0a 0a 20 20 20 20 76 61 72 69 61 62 6c 65 t).. variable
3720: 20 6d 79 70 61 72 65 6e 74 20 7b 7d 20 3b 20 23 myparent {} ; #
3730: 20 52 65 66 20 74 6f 20 70 61 72 65 6e 74 20 72 Ref to parent r
3740: 65 76 69 73 69 6f 6e 20 6f 62 6a 65 63 74 2e 20 evision object.
3750: 4c 69 6e 6b 20 72 65 71 75 69 72 65 64 20 62 65 Link required be
3760: 63 61 75 73 65 20 6f 66 0a 20 20 20 20 23 20 20 cause of. #
3770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3780: 20 20 3b 20 23 20 27 63 76 73 61 64 6d 69 6e 20 ; # 'cvsadmin
3790: 2d 6f 27 2c 20 77 68 69 63 68 20 63 61 6e 20 63 -o', which can c
37a0: 72 65 61 74 65 20 61 72 62 69 74 72 61 72 79 20 reate arbitrary
37b0: 67 61 70 73 20 69 6e 20 74 68 65 0a 20 20 20 20 gaps in the.
37c0: 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #
37d0: 20 20 20 20 20 3b 20 23 20 6e 75 6d 62 65 72 69 ; # numberi
37e0: 6e 67 20 73 65 71 75 65 6e 63 65 2e 20 54 68 69 ng sequence. Thi
37f0: 73 20 69 73 20 69 6e 20 74 68 65 20 73 61 6d 65 s is in the same
3800: 20 6c 69 6e 65 20 6f 66 20 64 65 76 65 6c 6f 70 line of develop
3810: 6d 65 6e 74 0a 20 20 20 20 23 20 20 20 20 20 20 ment. #
3820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 ;
3830: 23 20 4e 6f 74 65 3a 20 46 6f 72 20 74 68 65 20 # Note: For the
3840: 66 69 72 73 74 20 72 65 76 69 73 69 6f 6e 20 6f first revision o
3850: 6e 20 61 20 62 72 61 6e 63 68 20 74 68 65 20 72 n a branch the r
3860: 65 76 69 73 69 6f 6e 0a 20 20 20 20 23 20 20 20 evision. #
3870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3880: 20 3b 20 23 20 69 74 20 77 61 73 20 73 70 61 77 ; # it was spaw
3890: 6e 65 64 20 66 72 6f 6d 20 69 73 20 74 68 65 20 ned from is the
38a0: 70 61 72 65 6e 74 2e 20 4f 6e 6c 79 20 74 68 65 parent. Only the
38b0: 20 72 6f 6f 74 20 72 65 76 69 73 69 6f 6e 0a 20 root revision.
38c0: 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 #
38d0: 20 20 20 20 20 20 20 20 3b 20 23 20 6f 66 20 6d ; # of m
38e0: 79 66 69 6c 65 27 73 20 72 65 76 69 73 69 6f 6e yfile's revision
38f0: 20 74 72 65 65 20 68 61 73 20 6e 6f 74 68 69 6e tree has nothin
3900: 67 20 73 65 74 20 68 65 72 65 2e 0a 20 20 20 20 g set here..
3910: 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #
3920: 20 20 20 20 20 3b 20 23 0a 0a 20 20 20 20 76 61 ; #.. va
3930: 72 69 61 62 6c 65 20 6d 79 63 68 69 6c 64 20 20 riable mychild
3940: 7b 7d 20 3b 20 23 20 52 65 66 20 74 6f 20 74 68 {} ; # Ref to th
3950: 65 20 70 72 69 6d 61 72 79 20 63 68 69 6c 64 20 e primary child
3960: 72 65 76 69 73 69 6f 6e 20 6f 62 6a 65 63 74 2c revision object,
3970: 20 69 2e 65 2e 20 74 68 65 20 6e 65 78 74 0a 20 i.e. the next.
3980: 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 #
3990: 20 20 20 20 20 20 20 20 3b 20 23 20 72 65 76 69 ; # revi
39a0: 73 69 6f 6e 20 69 6e 20 74 68 65 20 73 61 6d 65 sion in the same
39b0: 20 6c 69 6e 65 20 6f 66 20 64 65 76 65 6c 6f 70 line of develop
39c0: 6d 65 6e 74 2e 0a 0a 20 20 20 20 23 20 42 72 61 ment... # Bra
39d0: 6e 63 68 20 6c 69 6e 6b 61 67 65 20 5f 5f 5f 5f nch linkage ____
39e0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
39f0: 0a 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d .. variable m
3a00: 79 62 72 61 6e 63 68 65 73 20 20 20 20 20 7b 7d ybranches {}
3a10: 20 3b 20 23 20 4c 69 73 74 20 6f 66 20 74 68 65 ; # List of the
3a20: 20 62 72 61 6e 63 68 65 73 20 28 6f 62 6a 73 29 branches (objs)
3a30: 20 73 70 61 77 6e 65 64 20 62 79 20 74 68 69 73 spawned by this
3a40: 20 72 65 76 69 73 69 6f 6e 2e 0a 20 20 20 20 76 revision.. v
3a50: 61 72 69 61 62 6c 65 20 6d 79 70 61 72 65 6e 74 ariable myparent
3a60: 62 72 61 6e 63 68 20 7b 7d 20 3b 20 23 20 46 6f branch {} ; # Fo
3a70: 72 20 74 68 65 20 66 69 72 73 74 20 72 65 76 69 r the first revi
3a80: 73 69 6f 6e 20 6f 6e 20 61 20 62 72 61 6e 63 68 sion on a branch
3a90: 20 74 68 65 20 72 65 6c 65 76 61 6e 74 0a 20 20 the relevant.
3aa0: 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 #
3ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 ; #
3ac0: 20 62 72 61 6e 63 68 20 6f 62 6a 65 63 74 2e 20 branch object.
3ad0: 54 68 69 73 20 61 6c 73 6f 20 61 6c 6c 6f 77 73 This also allows
3ae0: 20 75 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 us to determine
3af0: 20 69 66 0a 20 20 20 20 23 20 20 20 20 20 20 20 if. #
3b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3b10: 20 20 20 3b 20 23 20 6d 79 70 61 72 65 6e 74 20 ; # myparent
3b20: 69 73 20 69 6e 20 74 68 65 20 73 61 6d 65 20 4c is in the same L
3b30: 4f 44 2c 20 6f 72 20 74 68 65 20 72 65 76 69 73 OD, or the revis
3b40: 69 6f 6e 20 74 68 65 0a 20 20 20 20 23 20 20 20 ion the. #
3b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3b60: 20 20 20 20 20 20 20 3b 20 23 20 62 72 61 6e 63 ; # branc
3b70: 68 20 73 70 61 77 6e 65 64 20 66 72 6f 6d 2e 0a h spawned from..
3b80: 0a 20 20 20 20 23 20 4c 69 73 74 20 6f 66 20 74 . # List of t
3b90: 68 65 20 72 65 76 69 73 69 6f 6e 20 6f 62 6a 65 he revision obje
3ba0: 63 74 73 20 6f 66 20 74 68 65 20 66 69 72 73 74 cts of the first
3bb0: 20 63 6f 6d 6d 69 74 73 20 6f 6e 20 61 6e 79 0a commits on any.
3bc0: 20 20 20 20 23 20 62 72 61 6e 63 68 65 73 20 73 # branches s
3bd0: 70 61 77 6e 65 64 20 62 79 20 74 68 69 73 20 72 pawned by this r
3be0: 65 76 69 73 69 6f 6e 20 6f 6e 20 77 68 69 63 68 evision on which
3bf0: 20 63 6f 6d 6d 69 74 73 20 6f 63 63 75 72 72 65 commits occurre
3c00: 64 2e 0a 20 20 20 20 23 20 54 68 69 73 20 64 65 d.. # This de
3c10: 70 65 6e 64 65 6e 63 79 20 69 73 20 6b 65 70 74 pendency is kept
3c20: 20 65 78 70 6c 69 63 69 74 6c 79 20 62 65 63 61 explicitly beca
3c30: 75 73 65 20 6f 74 68 65 72 77 69 73 65 20 61 0a use otherwise a.
3c40: 20 20 20 20 23 20 72 65 76 69 73 69 6f 6e 2d 6f # revision-o
3c50: 6e 6c 79 20 74 6f 70 6f 6c 6f 67 69 63 61 6c 20 nly topological
3c60: 73 6f 72 74 20 77 6f 75 6c 64 20 6d 69 73 73 20 sort would miss
3c70: 74 68 65 20 64 65 70 65 6e 64 65 6e 63 79 20 74 the dependency t
3c80: 68 61 74 0a 20 20 20 20 23 20 65 78 69 73 74 73 hat. # exists
3c90: 20 76 69 61 20 2d 3e 20 6d 79 62 72 61 6e 63 68 via -> mybranch
3ca0: 65 73 2e 0a 0a 20 20 20 20 76 61 72 69 61 62 6c es... variabl
3cb0: 65 20 6d 79 62 72 61 6e 63 68 63 68 69 6c 64 72 e mybranchchildr
3cc0: 65 6e 20 7b 7d 20 3b 20 23 20 4c 69 73 74 20 6f en {} ; # List o
3cd0: 66 20 74 68 65 20 72 65 76 69 73 69 6f 6e 73 20 f the revisions
3ce0: 28 6f 62 6a 73 29 20 77 68 69 63 68 20 61 72 65 (objs) which are
3cf0: 20 74 68 65 20 66 69 72 73 74 0a 20 20 20 20 23 the first. #
3d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3d10: 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 ; #
3d20: 63 6f 6d 6d 69 74 73 20 6f 6e 20 61 6e 79 20 6f commits on any o
3d30: 66 20 74 68 65 20 62 72 61 6e 63 68 65 73 20 73 f the branches s
3d40: 70 61 77 6e 65 64 20 66 72 6f 6d 20 74 68 69 73 pawned from this
3d50: 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 . #
3d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3d70: 20 20 3b 20 23 20 72 65 76 69 73 69 6f 6e 2e 20 ; # revision.
3d80: 54 68 65 20 64 65 70 65 6e 64 65 6e 63 79 20 69 The dependency i
3d90: 73 20 6b 65 70 74 20 65 78 70 6c 69 63 69 74 6c s kept explicitl
3da0: 79 20 74 6f 0a 20 20 20 20 23 20 20 20 20 20 20 y to. #
3db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3dc0: 20 20 20 20 20 20 3b 20 23 20 65 6e 73 75 72 65 ; # ensure
3dd0: 20 74 68 61 74 20 61 20 72 65 76 69 73 69 6f 6e that a revision
3de0: 2d 6f 6e 6c 79 20 74 6f 70 6f 6c 6f 67 69 63 61 -only topologica
3df0: 6c 20 73 6f 72 74 20 77 69 6c 6c 0a 20 20 20 20 l sort will.
3e00: 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #
3e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 ; #
3e20: 20 6e 6f 74 20 6d 69 73 73 20 69 74 2c 20 61 73 not miss it, as
3e30: 20 69 74 20 6f 74 68 65 72 77 69 73 65 20 65 78 it otherwise ex
3e40: 69 73 74 73 20 6f 6e 6c 79 20 76 69 61 0a 20 20 ists only via.
3e50: 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 #
3e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b ;
3e70: 20 23 20 6d 79 62 72 61 6e 63 68 65 73 2e 0a 0a # mybranches...
3e80: 20 20 20 20 23 20 54 61 67 20 6c 69 6e 6b 61 67 # Tag linkag
3e90: 65 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f e ______________
3ea0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 __________..
3eb0: 76 61 72 69 61 62 6c 65 20 6d 79 74 61 67 73 20 variable mytags
3ec0: 7b 7d 20 3b 20 23 20 4c 69 73 74 20 6f 66 20 74 {} ; # List of t
3ed0: 61 67 73 20 28 6f 62 6a 73 29 20 61 73 73 6f 63 ags (objs) assoc
3ee0: 69 61 74 65 64 20 77 69 74 68 20 74 68 69 73 20 iated with this
3ef0: 72 65 76 69 73 69 6f 6e 2e 0a 0a 20 20 20 20 23 revision... #
3f00: 20 4d 6f 72 65 20 64 65 72 69 76 65 64 20 64 61 More derived da
3f10: 74 61 0a 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ta.. variable
3f20: 20 6d 79 6f 70 65 72 61 74 69 6f 6e 20 20 20 20 myoperation
3f30: 20 20 20 20 7b 7d 20 3b 20 23 20 4f 6e 65 20 6f {} ; # One o
3f40: 66 20 27 61 64 64 27 2c 20 27 63 68 61 6e 67 65 f 'add', 'change
3f50: 27 2c 20 27 64 65 6c 65 74 65 27 2c 20 6f 72 0a ', 'delete', or.
3f60: 09 09 09 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
3f70: 23 20 27 6e 6f 74 68 69 6e 67 27 2e 20 44 65 72 # 'nothing'. Der
3f80: 69 76 65 64 20 66 72 6f 6d 20 6f 75 72 20 61 6e ived from our an
3f90: 64 0a 09 09 09 20 20 20 20 20 20 20 20 20 20 20 d....
3fa0: 20 20 23 20 69 74 73 20 70 61 72 65 6e 74 27 73 # its parent's
3fb0: 20 73 74 61 74 65 2e 0a 20 20 20 20 76 61 72 69 state.. vari
3fc0: 61 62 6c 65 20 6d 79 69 73 6f 6e 64 65 66 61 75 able myisondefau
3fd0: 6c 74 62 72 61 6e 63 68 20 30 20 3b 20 23 20 42 ltbranch 0 ; # B
3fe0: 6f 6f 6c 65 61 6e 20 66 6c 61 67 2c 20 73 65 74 oolean flag, set
3ff0: 20 69 66 20 74 68 65 0a 09 09 09 09 20 20 20 20 if the.....
4000: 20 23 20 72 65 76 69 73 69 6f 6e 20 69 73 20 6f # revision is o
4010: 6e 20 74 68 65 20 6e 6f 6e 2d 74 72 75 6e 6b 0a n the non-trunk.
4020: 09 09 09 09 20 20 20 20 20 23 20 64 65 66 61 75 .... # defau
4030: 6c 74 20 62 72 61 6e 63 68 2c 20 61 6b 61 20 76 lt branch, aka v
4040: 65 6e 64 6f 72 0a 09 09 09 09 20 20 20 20 20 23 endor..... #
4050: 20 62 72 61 6e 63 68 2e 0a 20 20 20 20 76 61 72 branch.. var
4060: 69 61 62 6c 65 20 6d 79 64 62 70 61 72 65 6e 74 iable mydbparent
4070: 20 20 20 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 {} ; #
4080: 52 65 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65 Reference to the
4090: 20 6c 61 73 74 20 72 65 76 69 73 69 6f 6e 0a 09 last revision..
40a0: 09 09 09 20 20 20 20 20 23 20 6f 6e 20 74 68 65 ... # on the
40b0: 20 76 65 6e 64 6f 72 20 62 72 61 6e 63 68 20 69 vendor branch i
40c0: 66 20 74 68 69 73 20 69 73 0a 09 09 09 09 20 20 f this is.....
40d0: 20 20 20 23 20 74 68 65 20 70 72 69 6d 61 72 79 # the primary
40e0: 20 63 68 69 6c 64 20 6f 66 20 74 68 65 0a 09 09 child of the...
40f0: 09 09 20 20 20 20 20 23 20 72 65 67 75 6c 61 72 .. # regular
4100: 20 72 6f 6f 74 2e 0a 20 20 20 20 76 61 72 69 61 root.. varia
4110: 62 6c 65 20 6d 79 64 62 63 68 69 6c 64 20 20 20 ble mydbchild
4120: 20 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 52 65 {} ; # Re
4130: 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 70 ference to the p
4140: 72 69 6d 61 72 79 20 63 68 69 6c 64 0a 09 09 09 rimary child....
4150: 09 20 20 20 20 20 23 20 6f 66 20 74 68 65 20 72 . # of the r
4160: 65 67 75 6c 61 72 20 72 6f 6f 74 20 69 66 20 74 egular root if t
4170: 68 69 73 20 69 73 0a 09 09 09 09 20 20 20 20 20 his is.....
4180: 23 20 74 68 65 20 6c 61 73 74 20 72 65 76 69 73 # the last revis
4190: 69 6f 6e 20 6f 6e 20 74 68 65 20 76 65 6e 64 6f ion on the vendo
41a0: 72 0a 09 09 09 09 20 20 20 20 20 23 20 62 72 61 r..... # bra
41b0: 6e 63 68 2e 0a 0a 20 20 20 20 23 20 64 65 61 64 nch... # dead
41c0: 28 73 65 6c 66 29 20 78 20 64 65 61 64 28 70 61 (self) x dead(pa
41d0: 72 65 6e 74 29 20 2d 3e 20 6f 70 65 72 61 74 69 rent) -> operati
41e0: 6f 6e 0a 20 20 20 20 74 79 70 65 76 61 72 69 61 on. typevaria
41f0: 62 6c 65 20 6d 79 6f 70 73 74 61 74 65 20 2d 61 ble myopstate -a
4200: 72 72 61 79 20 7b 0a 09 7b 30 20 30 7d 20 63 68 rray {..{0 0} ch
4210: 61 6e 67 65 0a 09 7b 30 20 31 7d 20 64 65 6c 65 ange..{0 1} dele
4220: 74 65 0a 09 7b 31 20 30 7d 20 61 64 64 0a 09 7b te..{1 0} add..{
4230: 31 20 31 7d 20 6e 6f 74 68 69 6e 67 0a 20 20 20 1 1} nothing.
4240: 20 7d 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 68 }.. typemeth
4250: 6f 64 20 67 65 74 6f 70 63 6f 64 65 73 20 7b 7d od getopcodes {}
4260: 20 7b 0a 09 66 6f 72 65 61 63 68 20 7b 69 64 20 {..foreach {id
4270: 6e 61 6d 65 7d 20 5b 73 74 61 74 65 20 72 75 6e name} [state run
4280: 20 7b 0a 09 20 20 20 20 53 45 4c 45 43 54 20 6f {.. SELECT o
4290: 69 64 2c 20 6e 61 6d 65 20 46 52 4f 4d 20 6f 70 id, name FROM op
42a0: 74 79 70 65 3b 0a 09 7d 5d 20 7b 20 73 65 74 20 type;..}] { set
42b0: 6d 79 6f 70 63 6f 64 65 28 24 6e 61 6d 65 29 20 myopcode($name)
42c0: 24 69 64 20 7d 0a 09 72 65 74 75 72 6e 0a 20 20 $id }..return.
42d0: 20 20 7d 0a 0a 20 20 20 20 74 79 70 65 76 61 72 }.. typevar
42e0: 69 61 62 6c 65 20 6d 79 6f 70 63 6f 64 65 20 2d iable myopcode -
42f0: 61 72 72 61 79 20 7b 7d 0a 0a 20 20 20 20 23 20 array {}.. #
4300: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 # ## ### ##### #
4310: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
4320: 23 23 23 23 23 0a 20 20 20 20 23 23 20 49 6e 74 #####. ## Int
4330: 65 72 6e 61 6c 20 6d 65 74 68 6f 64 73 0a 0a 20 ernal methods..
4340: 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23 23 # # ## ### ##
4350: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 ### ######## ###
4360: 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 ##########. #
4370: 23 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a # Configuration.
4380: 0a 20 20 20 20 70 72 61 67 6d 61 20 2d 68 61 73 . pragma -has
4390: 74 79 70 65 69 6e 66 6f 20 20 20 20 6e 6f 20 20 typeinfo no
43a0: 3b 20 23 20 6e 6f 20 74 79 70 65 20 69 6e 74 72 ; # no type intr
43b0: 6f 73 70 65 63 74 69 6f 6e 0a 20 20 20 20 70 72 ospection. pr
43c0: 61 67 6d 61 20 2d 68 61 73 69 6e 66 6f 20 20 20 agma -hasinfo
43d0: 20 20 20 20 20 6e 6f 20 20 3b 20 23 20 6e 6f 20 no ; # no
43e0: 6f 62 6a 65 63 74 20 69 6e 74 72 6f 73 70 65 63 object introspec
43f0: 74 69 6f 6e 0a 20 20 20 20 70 72 61 67 6d 61 20 tion. pragma
4400: 2d 73 69 6d 70 6c 65 64 69 73 70 61 74 63 68 20 -simpledispatch
4410: 79 65 73 20 3b 20 23 20 73 69 6d 70 6c 65 20 66 yes ; # simple f
4420: 61 73 74 20 64 69 73 70 61 74 63 68 0a 0a 20 20 ast dispatch..
4430: 20 20 23 20 23 20 23 23 20 23 23 23 20 23 23 23 # # ## ### ###
4440: 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 ## ######## ####
4450: 23 23 23 23 23 23 23 23 23 0a 7d 0a 0a 6e 61 6d #########.}..nam
4460: 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 76 63 espace eval ::vc
4470: 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 ::fossil::import
4480: 3a 3a 63 76 73 3a 3a 66 69 6c 65 20 7b 0a 20 20 ::cvs::file {.
4490: 20 20 6e 61 6d 65 73 70 61 63 65 20 65 78 70 6f namespace expo
44a0: 72 74 20 72 65 76 0a 20 20 20 20 6e 61 6d 65 73 rt rev. names
44b0: 70 61 63 65 20 65 76 61 6c 20 72 65 76 20 7b 0a pace eval rev {.
44c0: 09 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 .namespace impor
44d0: 74 20 3a 3a 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6d t ::vc::tools::m
44e0: 69 73 63 3a 3a 2a 0a 09 6e 61 6d 65 73 70 61 63 isc::*..namespac
44f0: 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 66 e import ::vc::f
4500: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 ossil::import::c
4510: 76 73 3a 3a 73 74 61 74 65 0a 09 6e 61 6d 65 73 vs::state..names
4520: 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 pace import ::vc
4530: 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 ::fossil::import
4540: 3a 3a 63 76 73 3a 3a 69 6e 74 65 67 72 69 74 79 ::cvs::integrity
4550: 0a 20 20 20 20 7d 0a 7d 0a 0a 23 20 23 20 23 23 . }.}..# # ##
4560: 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 ### ##### #####
4570: 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 ### ############
4580: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 # ##############
4590: 23 23 23 23 23 23 23 0a 23 23 20 52 65 61 64 79 #######.## Ready
45a0: 0a 0a 70 61 63 6b 61 67 65 20 70 72 6f 76 69 64 ..package provid
45b0: 65 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d e vc::fossil::im
45c0: 70 6f 72 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 3a port::cvs::file:
45d0: 3a 72 65 76 20 31 2e 30 0a 72 65 74 75 72 6e 0a :rev 1.0.return.