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 09 73 65 74 20 63 6c 65 6e 20 5b 65 78 70 72 ..set clen [expr
27b0: 20 7b 24 6d 79 74 65 78 74 65 6e 64 20 2d 20 24 {$mytextend - $
27c0: 6d 79 74 65 78 74 73 74 61 72 74 7d 5d 0a 0a 09 mytextstart}]...
27d0: 6c 61 70 70 65 6e 64 20 6d 61 70 20 40 50 40 20 lappend map @P@
27e0: 5b 65 78 70 72 20 7b 20 28 24 6d 79 70 61 72 65 [expr { ($mypare
27f0: 6e 74 20 20 20 20 20 20 20 65 71 20 22 22 29 20 nt eq "")
2800: 3f 20 22 4e 55 4c 4c 22 20 3a 20 5b 24 6d 79 70 ? "NULL" : [$myp
2810: 61 72 65 6e 74 20 20 20 20 20 20 20 69 64 5d 20 arent id]
2820: 7d 5d 0a 09 6c 61 70 70 65 6e 64 20 6d 61 70 20 }]..lappend map
2830: 40 43 40 20 5b 65 78 70 72 20 7b 20 28 24 6d 79 @C@ [expr { ($my
2840: 63 68 69 6c 64 20 20 20 20 20 20 20 20 65 71 20 child eq
2850: 22 22 29 20 3f 20 22 4e 55 4c 4c 22 20 3a 20 5b "") ? "NULL" : [
2860: 24 6d 79 63 68 69 6c 64 20 20 20 20 20 20 20 20 $mychild
2870: 69 64 5d 20 7d 5d 0a 09 6c 61 70 70 65 6e 64 20 id] }]..lappend
2880: 6d 61 70 20 40 44 50 20 5b 65 78 70 72 20 7b 20 map @DP [expr {
2890: 28 24 6d 79 64 62 70 61 72 65 6e 74 20 20 20 20 ($mydbparent
28a0: 20 65 71 20 22 22 29 20 3f 20 22 4e 55 4c 4c 22 eq "") ? "NULL"
28b0: 20 3a 20 5b 24 6d 79 64 62 70 61 72 65 6e 74 20 : [$mydbparent
28c0: 20 20 20 20 69 64 5d 20 7d 5d 0a 09 6c 61 70 70 id] }]..lapp
28d0: 65 6e 64 20 6d 61 70 20 40 44 43 20 5b 65 78 70 end map @DC [exp
28e0: 72 20 7b 20 28 24 6d 79 64 62 63 68 69 6c 64 20 r { ($mydbchild
28f0: 20 20 20 20 20 65 71 20 22 22 29 20 3f 20 22 4e eq "") ? "N
2900: 55 4c 4c 22 20 3a 20 5b 24 6d 79 64 62 63 68 69 ULL" : [$mydbchi
2910: 6c 64 20 20 20 20 20 20 69 64 5d 20 7d 5d 0a 09 ld id] }]..
2920: 6c 61 70 70 65 6e 64 20 6d 61 70 20 40 42 50 20 lappend map @BP
2930: 5b 65 78 70 72 20 7b 20 28 24 6d 79 70 61 72 65 [expr { ($mypare
2940: 6e 74 62 72 61 6e 63 68 20 65 71 20 22 22 29 20 ntbranch eq "")
2950: 3f 20 22 4e 55 4c 4c 22 20 3a 20 5b 24 6d 79 70 ? "NULL" : [$myp
2960: 61 72 65 6e 74 62 72 61 6e 63 68 20 69 64 5d 20 arentbranch id]
2970: 7d 5d 0a 0a 09 73 65 74 20 63 6d 64 20 7b 0a 09 }]...set cmd {..
2980: 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 INSERT INTO
2990: 72 65 76 69 73 69 6f 6e 20 28 20 72 69 64 2c 20 revision ( rid,
29a0: 20 20 66 69 64 2c 20 20 72 65 76 2c 20 20 20 20 fid, rev,
29b0: 20 20 6c 6f 64 2c 20 70 61 72 65 6e 74 2c 20 63 lod, parent, c
29c0: 68 69 6c 64 2c 20 20 69 73 64 65 66 61 75 6c 74 hild, isdefault
29d0: 2c 20 64 62 70 61 72 65 6e 74 2c 20 64 62 63 68 , dbparent, dbch
29e0: 69 6c 64 2c 20 62 70 61 72 65 6e 74 2c 20 20 6f ild, bparent, o
29f0: 70 2c 20 20 64 61 74 65 2c 20 20 20 20 73 74 61 p, date, sta
2a00: 74 65 2c 20 20 20 20 6d 69 64 2c 20 20 20 20 20 te, mid,
2a10: 20 20 63 6f 66 66 2c 20 20 20 20 20 20 20 20 63 coff, c
2a20: 6c 65 6e 29 0a 09 20 20 20 20 56 41 4c 55 45 53 len).. VALUES
2a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 (
2a40: 24 6d 79 69 64 2c 20 24 66 69 64 2c 20 24 6d 79 $myid, $fid, $my
2a50: 72 65 76 6e 72 2c 20 24 6c 6f 64 2c 20 40 50 40 revnr, $lod, @P@
2a60: 2c 20 20 20 20 40 43 40 2c 20 20 20 24 69 64 62 , @C@, $idb
2a70: 2c 20 20 20 20 20 20 20 40 44 50 2c 20 20 20 20 , @DP,
2a80: 20 20 40 44 43 2c 20 20 20 20 20 40 42 50 20 20 @DC, @BP
2a90: 20 20 2c 20 24 6f 70 2c 20 24 6d 79 64 61 74 65 , $op, $mydate
2aa0: 2c 20 24 6d 79 73 74 61 74 65 2c 20 24 6d 79 6d , $mystate, $mym
2ab0: 65 74 61 69 64 2c 20 24 6d 79 74 65 78 74 73 74 etaid, $mytextst
2ac0: 61 72 74 2c 20 24 63 6c 65 6e 29 3b 0a 09 7d 0a art, $clen);..}.
2ad0: 0a 09 73 74 61 74 65 20 74 72 61 6e 73 61 63 74 ..state transact
2ae0: 69 6f 6e 20 7b 0a 09 20 20 20 20 73 74 61 74 65 ion {.. state
2af0: 20 72 75 6e 20 5b 73 74 72 69 6e 67 20 6d 61 70 run [string map
2b00: 20 24 6d 61 70 20 24 63 6d 64 5d 0a 0a 09 20 20 $map $cmd]...
2b10: 20 20 23 20 41 6e 64 20 74 68 65 20 62 72 61 6e # And the bran
2b20: 63 68 20 63 68 69 6c 64 72 65 6e 20 61 73 20 77 ch children as w
2b30: 65 6c 6c 2c 20 66 6f 72 20 70 61 73 73 20 35 2e ell, for pass 5.
2b40: 0a 09 20 20 20 20 66 6f 72 65 61 63 68 20 62 63 .. foreach bc
2b50: 20 24 6d 79 62 72 61 6e 63 68 63 68 69 6c 64 72 $mybranchchildr
2b60: 65 6e 20 7b 0a 09 09 73 65 74 20 62 63 69 64 20 en {...set bcid
2b70: 5b 24 62 63 20 69 64 5d 0a 09 09 73 74 61 74 65 [$bc id]...state
2b80: 20 72 75 6e 20 7b 0a 09 09 20 20 20 20 49 4e 53 run {... INS
2b90: 45 52 54 20 49 4e 54 4f 20 72 65 76 69 73 69 6f ERT INTO revisio
2ba0: 6e 62 72 61 6e 63 68 63 68 69 6c 64 72 65 6e 20 nbranchchildren
2bb0: 28 72 69 64 2c 20 20 20 62 72 69 64 29 0a 09 09 (rid, brid)...
2bc0: 20 20 20 20 56 41 4c 55 45 53 20 20 20 20 20 20 VALUES
2bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
2be0: 20 20 20 20 20 20 20 28 24 6d 79 69 64 2c 20 24 ($myid, $
2bf0: 62 63 69 64 29 3b 0a 09 09 7d 0a 09 20 20 20 20 bcid);...}..
2c00: 7d 0a 09 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 }..}..return.
2c10: 20 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 }.. # # ## #
2c20: 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 ## ##### #######
2c30: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 0a # #############.
2c40: 20 20 20 20 23 23 20 53 74 61 74 65 0a 0a 20 20 ## State..
2c50: 20 20 23 20 50 65 72 73 69 73 74 65 6e 74 3a 20 # Persistent:
2c60: 6d 79 69 64 20 20 20 20 20 20 20 20 20 20 20 20 myid
2c70: 20 20 20 20 2d 20 72 65 76 69 73 69 6f 6e 2e 72 - revision.r
2c80: 69 64 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 id. #
2c90: 20 20 20 20 20 6d 79 66 69 6c 65 20 20 20 20 20 myfile
2ca0: 20 20 20 20 20 20 20 20 20 2d 20 72 65 76 69 73 - revis
2cb0: 69 6f 6e 2e 66 69 64 0a 20 20 20 20 23 20 20 20 ion.fid. #
2cc0: 20 20 20 20 20 20 20 20 20 20 6d 79 6c 6f 64 20 mylod
2cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 20 -
2ce0: 72 65 76 69 73 69 6f 6e 2e 6c 6f 64 0a 20 20 20 revision.lod.
2cf0: 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 6d # m
2d00: 79 72 65 76 6e 72 20 20 20 20 20 20 20 20 20 20 yrevnr
2d10: 20 20 20 2d 20 72 65 76 69 73 69 6f 6e 2e 72 65 - revision.re
2d20: 76 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 20 v. #
2d30: 20 20 20 20 6d 79 64 61 74 65 20 20 20 20 20 20 mydate
2d40: 20 20 20 20 20 20 20 20 2d 20 72 65 76 69 73 69 - revisi
2d50: 6f 6e 2e 64 61 74 65 0a 20 20 20 20 23 20 20 20 on.date. #
2d60: 20 20 20 20 20 20 20 20 20 20 6d 79 73 74 61 74 mystat
2d70: 65 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 20 e -
2d80: 72 65 76 69 73 69 6f 6e 2e 73 74 61 74 65 0a 20 revision.state.
2d90: 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 #
2da0: 20 6d 79 6d 65 74 61 69 64 20 20 20 20 20 20 20 mymetaid
2db0: 20 20 20 20 20 2d 20 72 65 76 69 73 69 6f 6e 2e - revision.
2dc0: 6d 69 64 0a 20 20 20 20 23 20 20 20 20 20 20 20 mid. #
2dd0: 20 20 20 20 20 20 6d 79 74 65 78 74 7b 73 74 61 mytext{sta
2de0: 72 74 2c 65 6e 64 7d 20 20 20 2d 20 72 65 76 69 rt,end} - revi
2df0: 73 69 6f 6e 2e 7b 63 73 2c 63 65 7d 0a 20 20 20 sion.{cs,ce}.
2e00: 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 6d # m
2e10: 79 70 61 72 65 6e 74 20 20 20 20 20 20 20 20 20 yparent
2e20: 20 20 20 2d 20 72 65 76 69 73 69 6f 6e 2e 70 61 - revision.pa
2e30: 72 65 6e 74 0a 20 20 20 20 23 20 20 20 20 20 20 rent. #
2e40: 20 20 20 20 20 20 20 6d 79 63 68 69 6c 64 20 20 mychild
2e50: 20 20 20 20 20 20 20 20 20 20 20 2d 20 72 65 76 - rev
2e60: 69 73 69 6f 6e 2e 63 68 69 6c 64 0a 20 20 20 20 ision.child.
2e70: 23 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 79 # my
2e80: 70 61 72 65 6e 74 62 72 61 6e 63 68 20 20 20 20 parentbranch
2e90: 20 20 2d 20 72 65 76 69 73 69 6f 6e 2e 62 70 61 - revision.bpa
2ea0: 72 65 6e 74 0a 20 20 20 20 23 20 20 20 20 20 20 rent. #
2eb0: 20 20 20 20 20 20 20 6d 79 6f 70 65 72 61 74 69 myoperati
2ec0: 6f 6e 20 20 20 20 20 20 20 20 20 2d 20 72 65 76 on - rev
2ed0: 69 73 69 6f 6e 2e 6f 70 0a 20 20 20 20 23 20 20 ision.op. #
2ee0: 20 20 20 20 20 20 20 20 20 20 20 6d 79 69 73 6f myiso
2ef0: 6e 64 65 66 61 75 6c 74 62 72 61 6e 63 68 20 2d ndefaultbranch -
2f00: 20 72 65 76 69 73 69 6f 6e 2e 69 73 64 65 66 61 revision.isdefa
2f10: 75 6c 74 0a 20 20 20 20 23 20 20 20 20 20 20 20 ult. #
2f20: 20 20 20 20 20 20 6d 79 64 62 70 61 72 65 6e 74 mydbparent
2f30: 20 20 20 20 20 20 20 20 20 20 2d 20 72 65 76 69 - revi
2f40: 73 69 6f 6e 2e 64 62 70 61 72 65 6e 74 0a 20 20 sion.dbparent.
2f50: 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 #
2f60: 6d 79 64 62 63 68 69 6c 64 20 20 20 20 20 20 20 mydbchild
2f70: 20 20 20 20 2d 20 72 65 76 69 73 69 6f 6e 2e 64 - revision.d
2f80: 62 63 68 69 6c 64 0a 0a 20 20 20 20 6d 65 74 68 bchild.. meth
2f90: 6f 64 20 44 55 4d 50 20 7b 6c 61 62 65 6c 7d 20 od DUMP {label}
2fa0: 7b 0a 09 70 75 74 73 20 22 24 6c 61 62 65 6c 20 {..puts "$label
2fb0: 3d 20 24 73 65 6c 66 20 3c 24 6d 79 72 65 76 6e = $self <$myrevn
2fc0: 72 3e 20 28 4e 54 44 42 3d 24 6d 79 69 73 6f 6e r> (NTDB=$myison
2fd0: 64 65 66 61 75 6c 74 62 72 61 6e 63 68 29 20 5c defaultbranch) \
2fe0: 7b 22 0a 09 70 75 74 73 20 22 5c 74 50 5c 74 24 {"..puts "\tP\t$
2ff0: 6d 79 70 61 72 65 6e 74 22 0a 09 70 75 74 73 20 myparent"..puts
3000: 22 5c 74 43 5c 74 24 6d 79 63 68 69 6c 64 22 0a "\tC\t$mychild".
3010: 09 70 75 74 73 20 22 5c 74 50 42 5c 74 24 6d 79 .puts "\tPB\t$my
3020: 70 61 72 65 6e 74 62 72 61 6e 63 68 22 0a 09 70 parentbranch"..p
3030: 75 74 73 20 22 5c 74 64 62 50 5c 74 24 6d 79 64 uts "\tdbP\t$myd
3040: 62 70 61 72 65 6e 74 22 0a 09 70 75 74 73 20 22 bparent"..puts "
3050: 5c 74 64 62 43 5c 74 24 6d 79 64 62 63 68 69 6c \tdbC\t$mydbchil
3060: 64 22 0a 09 66 6f 72 65 61 63 68 20 62 20 24 6d d"..foreach b $m
3070: 79 62 72 61 6e 63 68 65 73 20 7b 0a 09 20 20 20 ybranches {..
3080: 20 70 75 74 73 20 5c 74 5c 74 42 5c 74 24 62 0a puts \t\tB\t$b.
3090: 09 7d 0a 09 66 6f 72 65 61 63 68 20 62 20 24 6d .}..foreach b $m
30a0: 79 62 72 61 6e 63 68 63 68 69 6c 64 72 65 6e 20 ybranchchildren
30b0: 7b 0a 09 20 20 20 20 70 75 74 73 20 5c 74 5c 74 {.. puts \t\t
30c0: 42 43 5c 74 24 62 0a 09 7d 0a 09 70 75 74 73 20 BC\t$b..}..puts
30d0: 22 5c 7d 22 0a 09 72 65 74 75 72 6e 0a 20 20 20 "\}"..return.
30e0: 20 7d 0a 0a 20 20 20 20 74 79 70 65 76 61 72 69 }.. typevari
30f0: 61 62 6c 65 20 6d 79 62 72 61 6e 63 68 70 61 74 able mybranchpat
3100: 74 65 72 6e 20 7b 5e 28 28 3f 3a 5c 64 2b 5c 2e tern {^((?:\d+\.
3110: 5c 64 2b 5c 2e 29 2b 29 28 3f 3a 30 5c 2e 29 3f \d+\.)+)(?:0\.)?
3120: 28 5c 64 2b 29 24 7d 0a 20 20 20 20 23 20 46 69 (\d+)$}. # Fi
3130: 72 73 74 20 61 20 6e 6f 6e 7a 65 72 6f 20 65 76 rst a nonzero ev
3140: 65 6e 20 6e 75 6d 62 65 72 20 6f 66 20 64 69 67 en number of dig
3150: 69 74 20 67 72 6f 75 70 73 20 77 69 74 68 20 74 it groups with t
3160: 72 61 69 6c 69 6e 67 20 64 6f 74 0a 20 20 20 20 railing dot.
3170: 23 20 43 56 53 20 74 68 65 6e 20 73 74 69 63 6b # CVS then stick
3180: 73 20 61 6e 20 65 78 74 72 61 20 30 20 69 6e 20 s an extra 0 in
3190: 68 65 72 65 3b 20 52 43 53 20 64 6f 65 73 20 6e here; RCS does n
31a0: 6f 74 2e 0a 20 20 20 20 23 20 41 6e 64 20 74 68 ot.. # And th
31b0: 65 20 6c 61 73 74 20 64 69 67 69 74 20 67 72 6f e last digit gro
31c0: 75 70 2e 0a 0a 20 20 20 20 74 79 70 65 76 61 72 up... typevar
31d0: 69 61 62 6c 65 20 6d 79 69 64 63 6f 75 6e 74 65 iable myidcounte
31e0: 72 20 30 20 3b 20 23 20 43 6f 75 6e 74 65 72 20 r 0 ; # Counter
31f0: 66 6f 72 20 72 65 76 69 73 69 6f 6e 20 69 64 73 for revision ids
3200: 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d .. variable m
3210: 79 69 64 20 20 20 20 20 20 20 20 20 20 20 7b 7d yid {}
3220: 20 3b 20 23 20 52 65 76 69 73 69 6f 6e 20 69 64 ; # Revision id
3230: 2e 0a 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 ... variable
3240: 6d 79 72 65 76 6e 72 20 20 20 20 20 7b 7d 20 3b myrevnr {} ;
3250: 20 23 20 52 65 76 69 73 69 6f 6e 20 6e 75 6d 62 # Revision numb
3260: 65 72 20 6f 66 20 74 68 65 20 72 65 76 69 73 69 er of the revisi
3270: 6f 6e 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 on.. variable
3280: 20 6d 79 64 61 74 65 20 20 20 20 20 20 7b 7d 20 mydate {}
3290: 3b 20 23 20 54 69 6d 65 73 74 61 6d 70 20 6f 66 ; # Timestamp of
32a0: 20 74 68 65 20 72 65 76 69 73 69 6f 6e 2c 20 73 the revision, s
32b0: 65 63 6f 6e 64 73 20 73 69 6e 63 65 20 65 70 6f econds since epo
32c0: 63 68 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 ch. variable
32d0: 6d 79 6f 72 69 67 64 61 74 65 20 20 7b 7d 20 3b myorigdate {} ;
32e0: 20 23 20 4f 72 69 67 69 6e 61 6c 20 75 6e 6d 6f # Original unmo
32f0: 64 69 66 69 65 64 20 74 69 6d 65 73 74 61 6d 70 dified timestamp
3300: 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d .. variable m
3310: 79 73 74 61 74 65 20 20 20 20 20 7b 7d 20 3b 20 ystate {} ;
3320: 23 20 53 74 61 74 65 20 6f 66 20 74 68 65 20 72 # State of the r
3330: 65 76 69 73 69 6f 6e 2e 0a 20 20 20 20 76 61 72 evision.. var
3340: 69 61 62 6c 65 20 6d 79 66 69 6c 65 20 20 20 20 iable myfile
3350: 20 20 7b 7d 20 3b 20 23 20 52 65 66 20 74 6f 20 {} ; # Ref to
3360: 74 68 65 20 66 69 6c 65 20 6f 62 6a 65 63 74 20 the file object
3370: 74 68 65 20 72 65 76 69 73 69 6f 6e 20 62 65 6c the revision bel
3380: 6f 6e 67 73 20 74 6f 2e 0a 20 20 20 20 76 61 72 ongs to.. var
3390: 69 61 62 6c 65 20 6d 79 74 65 78 74 73 74 61 72 iable mytextstar
33a0: 74 20 7b 7d 20 3b 20 23 20 53 74 61 72 74 20 6f t {} ; # Start o
33b0: 66 20 74 68 65 20 72 61 6e 67 65 20 6f 66 20 74 f the range of t
33c0: 68 65 20 28 64 65 6c 74 61 29 20 74 65 78 74 0a he (delta) text.
33d0: 09 09 09 20 20 20 20 20 20 23 20 66 6f 72 20 74 ... # for t
33e0: 68 69 73 20 72 65 76 69 73 69 6f 6e 20 69 6e 20 his revision in
33f0: 74 68 65 20 66 69 6c 65 2e 0a 20 20 20 20 76 61 the file.. va
3400: 72 69 61 62 6c 65 20 6d 79 74 65 78 74 65 6e 64 riable mytextend
3410: 20 20 20 7b 7d 20 3b 20 23 20 45 6e 64 20 6f 66 {} ; # End of
3420: 20 74 68 65 20 72 61 6e 67 65 20 6f 66 20 74 68 the range of th
3430: 65 20 28 64 65 6c 74 61 29 20 74 65 78 74 0a 09 e (delta) text..
3440: 09 09 20 20 20 20 20 20 23 20 66 6f 72 20 74 68 .. # for th
3450: 69 73 20 72 65 76 69 73 69 6f 6e 20 69 6e 20 74 is revision in t
3460: 68 65 20 66 69 6c 65 2e 0a 20 20 20 20 76 61 72 he file.. var
3470: 69 61 62 6c 65 20 6d 79 6d 65 74 61 69 64 20 20 iable mymetaid
3480: 20 20 7b 7d 20 3b 20 23 20 49 64 20 6f 66 20 74 {} ; # Id of t
3490: 68 65 20 6d 65 74 61 20 64 61 74 61 20 67 72 6f he meta data gro
34a0: 75 70 20 74 68 65 20 72 65 76 69 73 69 6f 6e 0a up the revision.
34b0: 09 09 09 20 20 20 20 20 20 23 20 62 65 6c 6f 6e ... # belon
34c0: 67 73 20 74 6f 2e 20 54 68 69 73 20 69 73 20 6c gs to. This is l
34d0: 61 74 65 72 20 75 73 65 64 20 74 6f 20 70 75 74 ater used to put
34e0: 0a 09 09 09 20 20 20 20 20 20 23 20 74 68 65 20 .... # the
34f0: 66 69 6c 65 20 72 65 76 69 73 69 6f 6e 73 20 69 file revisions i
3500: 6e 74 6f 20 70 72 65 6c 69 6d 69 6e 61 72 79 0a nto preliminary.
3510: 09 09 09 20 20 20 20 20 20 23 20 63 68 61 6e 67 ... # chang
3520: 65 73 65 74 73 20 28 61 6b 61 20 70 72 6f 6a 65 esets (aka proje
3530: 63 74 20 72 65 76 69 73 69 6f 6e 73 29 2e 0a 09 ct revisions)...
3540: 09 09 20 20 20 20 20 20 23 20 54 68 69 73 20 69 .. # This i
3550: 64 20 65 6e 63 6f 64 65 73 20 34 20 70 69 65 63 d encodes 4 piec
3560: 65 73 20 6f 66 20 64 61 74 61 2c 0a 09 09 09 20 es of data,....
3570: 20 20 20 20 20 23 20 6e 61 6d 65 6c 79 3a 20 74 # namely: t
3580: 68 65 20 70 72 6f 6a 65 63 74 20 61 6e 64 20 62 he project and b
3590: 72 61 6e 63 68 20 74 68 65 0a 09 09 09 20 20 20 ranch the....
35a0: 20 20 20 23 20 72 65 76 69 73 69 6f 6e 20 77 61 # revision wa
35b0: 73 20 63 6f 6d 6d 69 74 74 65 64 20 74 6f 2c 20 s committed to,
35c0: 74 68 65 20 61 75 74 68 6f 72 0a 09 09 09 20 20 the author....
35d0: 20 20 20 20 23 20 77 68 6f 20 64 69 64 20 74 68 # who did th
35e0: 65 20 63 6f 6d 6d 69 74 2c 20 61 6e 64 20 74 68 e commit, and th
35f0: 65 20 6d 65 73 73 61 67 65 0a 09 09 09 20 20 20 e message....
3600: 20 20 20 23 20 75 73 65 64 2e 0a 20 20 20 20 76 # used.. v
3610: 61 72 69 61 62 6c 65 20 6d 79 6c 6f 64 20 20 20 ariable mylod
3620: 20 20 20 20 7b 7d 20 3b 20 23 20 52 65 66 65 72 {} ; # Refer
3630: 65 6e 63 65 20 74 6f 20 74 68 65 20 6c 69 6e 65 ence to the line
3640: 2d 6f 66 2d 64 65 76 65 6c 6f 70 6d 65 6e 74 0a -of-development.
3650: 09 09 09 20 20 20 20 20 20 23 20 6f 62 6a 65 63 ... # objec
3660: 74 20 74 68 65 20 72 65 76 69 73 69 6f 6e 20 62 t the revision b
3670: 65 6c 6f 6e 67 73 20 74 6f 2e 20 41 6e 0a 09 09 elongs to. An...
3680: 09 20 20 20 20 20 20 23 20 61 6c 74 65 72 6e 61 . # alterna
3690: 74 69 76 65 20 69 64 69 6f 6d 20 77 6f 75 6c 64 tive idiom would
36a0: 20 62 65 20 74 6f 20 63 61 6c 6c 20 69 74 0a 09 be to call it..
36b0: 09 09 20 20 20 20 20 20 23 20 74 68 65 20 62 72 .. # the br
36c0: 61 6e 63 68 20 74 68 65 20 72 65 76 69 73 69 6f anch the revisio
36d0: 6e 20 69 73 20 6f 6e 2e 20 54 68 69 73 0a 09 09 n is on. This...
36e0: 09 20 20 20 20 20 20 23 20 72 65 66 65 72 65 6e . # referen
36f0: 63 65 20 69 73 20 74 6f 20 65 69 74 68 65 72 20 ce is to either
3700: 70 72 6f 6a 65 63 74 2d 6c 65 76 65 6c 0a 09 09 project-level...
3710: 09 20 20 20 20 20 20 23 20 74 72 75 6e 6b 20 6f . # trunk o
3720: 72 20 66 69 6c 65 2d 6c 65 76 65 6c 20 73 79 6d r file-level sym
3730: 62 6f 6c 2e 0a 0a 20 20 20 20 23 20 42 61 73 69 bol... # Basi
3740: 63 20 70 61 72 65 6e 74 2f 63 68 69 6c 64 20 6c c parent/child l
3750: 69 6e 6b 61 67 65 20 28 6c 69 6e 65 73 20 6f 66 inkage (lines of
3760: 20 64 65 76 65 6c 6f 70 6d 65 6e 74 29 0a 0a 20 development)..
3770: 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 70 61 variable mypa
3780: 72 65 6e 74 20 7b 7d 20 3b 20 23 20 52 65 66 20 rent {} ; # Ref
3790: 74 6f 20 70 61 72 65 6e 74 20 72 65 76 69 73 69 to parent revisi
37a0: 6f 6e 20 6f 62 6a 65 63 74 2e 20 4c 69 6e 6b 20 on object. Link
37b0: 72 65 71 75 69 72 65 64 20 62 65 63 61 75 73 65 required because
37c0: 20 6f 66 0a 20 20 20 20 23 20 20 20 20 20 20 20 of. #
37d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 ; #
37e0: 20 27 63 76 73 61 64 6d 69 6e 20 2d 6f 27 2c 20 'cvsadmin -o',
37f0: 77 68 69 63 68 20 63 61 6e 20 63 72 65 61 74 65 which can create
3800: 20 61 72 62 69 74 72 61 72 79 20 67 61 70 73 20 arbitrary gaps
3810: 69 6e 20 74 68 65 0a 20 20 20 20 23 20 20 20 20 in the. #
3820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3830: 3b 20 23 20 6e 75 6d 62 65 72 69 6e 67 20 73 65 ; # numbering se
3840: 71 75 65 6e 63 65 2e 20 54 68 69 73 20 69 73 20 quence. This is
3850: 69 6e 20 74 68 65 20 73 61 6d 65 20 6c 69 6e 65 in the same line
3860: 20 6f 66 20 64 65 76 65 6c 6f 70 6d 65 6e 74 0a of development.
3870: 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20 #
3880: 20 20 20 20 20 20 20 20 20 3b 20 23 20 4e 6f 74 ; # Not
3890: 65 3a 20 46 6f 72 20 74 68 65 20 66 69 72 73 74 e: For the first
38a0: 20 72 65 76 69 73 69 6f 6e 20 6f 6e 20 61 20 62 revision on a b
38b0: 72 61 6e 63 68 20 74 68 65 20 72 65 76 69 73 69 ranch the revisi
38c0: 6f 6e 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 on. #
38d0: 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 ; #
38e0: 69 74 20 77 61 73 20 73 70 61 77 6e 65 64 20 66 it was spawned f
38f0: 72 6f 6d 20 69 73 20 74 68 65 20 70 61 72 65 6e rom is the paren
3900: 74 2e 20 4f 6e 6c 79 20 74 68 65 20 72 6f 6f 74 t. Only the root
3910: 20 72 65 76 69 73 69 6f 6e 0a 20 20 20 20 23 20 revision. #
3920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3930: 20 20 20 3b 20 23 20 6f 66 20 6d 79 66 69 6c 65 ; # of myfile
3940: 27 73 20 72 65 76 69 73 69 6f 6e 20 74 72 65 65 's revision tree
3950: 20 68 61 73 20 6e 6f 74 68 69 6e 67 20 73 65 74 has nothing set
3960: 20 68 65 72 65 2e 0a 20 20 20 20 23 20 20 20 20 here.. #
3970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3980: 3b 20 23 0a 0a 20 20 20 20 76 61 72 69 61 62 6c ; #.. variabl
3990: 65 20 6d 79 63 68 69 6c 64 20 20 7b 7d 20 3b 20 e mychild {} ;
39a0: 23 20 52 65 66 20 74 6f 20 74 68 65 20 70 72 69 # Ref to the pri
39b0: 6d 61 72 79 20 63 68 69 6c 64 20 72 65 76 69 73 mary child revis
39c0: 69 6f 6e 20 6f 62 6a 65 63 74 2c 20 69 2e 65 2e ion object, i.e.
39d0: 20 74 68 65 20 6e 65 78 74 0a 20 20 20 20 23 20 the next. #
39e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
39f0: 20 20 20 3b 20 23 20 72 65 76 69 73 69 6f 6e 20 ; # revision
3a00: 69 6e 20 74 68 65 20 73 61 6d 65 20 6c 69 6e 65 in the same line
3a10: 20 6f 66 20 64 65 76 65 6c 6f 70 6d 65 6e 74 2e of development.
3a20: 0a 0a 20 20 20 20 23 20 42 72 61 6e 63 68 20 6c .. # Branch l
3a30: 69 6e 6b 61 67 65 20 5f 5f 5f 5f 5f 5f 5f 5f 5f inkage _________
3a40: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 ___________..
3a50: 20 76 61 72 69 61 62 6c 65 20 6d 79 62 72 61 6e variable mybran
3a60: 63 68 65 73 20 20 20 20 20 7b 7d 20 3b 20 23 20 ches {} ; #
3a70: 4c 69 73 74 20 6f 66 20 74 68 65 20 62 72 61 6e List of the bran
3a80: 63 68 65 73 20 28 6f 62 6a 73 29 20 73 70 61 77 ches (objs) spaw
3a90: 6e 65 64 20 62 79 20 74 68 69 73 20 72 65 76 69 ned by this revi
3aa0: 73 69 6f 6e 2e 0a 20 20 20 20 76 61 72 69 61 62 sion.. variab
3ab0: 6c 65 20 6d 79 70 61 72 65 6e 74 62 72 61 6e 63 le myparentbranc
3ac0: 68 20 7b 7d 20 3b 20 23 20 46 6f 72 20 74 68 65 h {} ; # For the
3ad0: 20 66 69 72 73 74 20 72 65 76 69 73 69 6f 6e 20 first revision
3ae0: 6f 6e 20 61 20 62 72 61 6e 63 68 20 74 68 65 20 on a branch the
3af0: 72 65 6c 65 76 61 6e 74 0a 20 20 20 20 23 20 20 relevant. #
3b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3b10: 20 20 20 20 20 20 20 20 3b 20 23 20 62 72 61 6e ; # bran
3b20: 63 68 20 6f 62 6a 65 63 74 2e 20 54 68 69 73 20 ch object. This
3b30: 61 6c 73 6f 20 61 6c 6c 6f 77 73 20 75 73 20 74 also allows us t
3b40: 6f 20 64 65 74 65 72 6d 69 6e 65 20 69 66 0a 20 o determine if.
3b50: 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 #
3b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 ;
3b70: 23 20 6d 79 70 61 72 65 6e 74 20 69 73 20 69 6e # myparent is in
3b80: 20 74 68 65 20 73 61 6d 65 20 4c 4f 44 2c 20 6f the same LOD, o
3b90: 72 20 74 68 65 20 72 65 76 69 73 69 6f 6e 20 74 r the revision t
3ba0: 68 65 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 he. #
3bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3bc0: 20 20 3b 20 23 20 62 72 61 6e 63 68 20 73 70 61 ; # branch spa
3bd0: 77 6e 65 64 20 66 72 6f 6d 2e 0a 0a 20 20 20 20 wned from...
3be0: 23 20 4c 69 73 74 20 6f 66 20 74 68 65 20 72 65 # List of the re
3bf0: 76 69 73 69 6f 6e 20 6f 62 6a 65 63 74 73 20 6f vision objects o
3c00: 66 20 74 68 65 20 66 69 72 73 74 20 63 6f 6d 6d f the first comm
3c10: 69 74 73 20 6f 6e 20 61 6e 79 0a 20 20 20 20 23 its on any. #
3c20: 20 62 72 61 6e 63 68 65 73 20 73 70 61 77 6e 65 branches spawne
3c30: 64 20 62 79 20 74 68 69 73 20 72 65 76 69 73 69 d by this revisi
3c40: 6f 6e 20 6f 6e 20 77 68 69 63 68 20 63 6f 6d 6d on on which comm
3c50: 69 74 73 20 6f 63 63 75 72 72 65 64 2e 0a 20 20 its occurred..
3c60: 20 20 23 20 54 68 69 73 20 64 65 70 65 6e 64 65 # This depende
3c70: 6e 63 79 20 69 73 20 6b 65 70 74 20 65 78 70 6c ncy is kept expl
3c80: 69 63 69 74 6c 79 20 62 65 63 61 75 73 65 20 6f icitly because o
3c90: 74 68 65 72 77 69 73 65 20 61 0a 20 20 20 20 23 therwise a. #
3ca0: 20 72 65 76 69 73 69 6f 6e 2d 6f 6e 6c 79 20 74 revision-only t
3cb0: 6f 70 6f 6c 6f 67 69 63 61 6c 20 73 6f 72 74 20 opological sort
3cc0: 77 6f 75 6c 64 20 6d 69 73 73 20 74 68 65 20 64 would miss the d
3cd0: 65 70 65 6e 64 65 6e 63 79 20 74 68 61 74 0a 20 ependency that.
3ce0: 20 20 20 23 20 65 78 69 73 74 73 20 76 69 61 20 # exists via
3cf0: 2d 3e 20 6d 79 62 72 61 6e 63 68 65 73 2e 0a 0a -> mybranches...
3d00: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 62 variable myb
3d10: 72 61 6e 63 68 63 68 69 6c 64 72 65 6e 20 7b 7d ranchchildren {}
3d20: 20 3b 20 23 20 4c 69 73 74 20 6f 66 20 74 68 65 ; # List of the
3d30: 20 72 65 76 69 73 69 6f 6e 73 20 28 6f 62 6a 73 revisions (objs
3d40: 29 20 77 68 69 63 68 20 61 72 65 20 74 68 65 20 ) which are the
3d50: 66 69 72 73 74 0a 20 20 20 20 23 20 20 20 20 20 first. #
3d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3d70: 20 20 20 20 20 20 20 3b 20 23 20 63 6f 6d 6d 69 ; # commi
3d80: 74 73 20 6f 6e 20 61 6e 79 20 6f 66 20 74 68 65 ts on any of the
3d90: 20 62 72 61 6e 63 68 65 73 20 73 70 61 77 6e 65 branches spawne
3da0: 64 20 66 72 6f 6d 20 74 68 69 73 0a 20 20 20 20 d from this.
3db0: 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 #
3dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 ; #
3dd0: 20 72 65 76 69 73 69 6f 6e 2e 20 54 68 65 20 64 revision. The d
3de0: 65 70 65 6e 64 65 6e 63 79 20 69 73 20 6b 65 70 ependency is kep
3df0: 74 20 65 78 70 6c 69 63 69 74 6c 79 20 74 6f 0a t explicitly to.
3e00: 20 20 20 20 23 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 20 20 20
3e20: 20 3b 20 23 20 65 6e 73 75 72 65 20 74 68 61 74 ; # ensure that
3e30: 20 61 20 72 65 76 69 73 69 6f 6e 2d 6f 6e 6c 79 a revision-only
3e40: 20 74 6f 70 6f 6c 6f 67 69 63 61 6c 20 73 6f 72 topological sor
3e50: 74 20 77 69 6c 6c 0a 20 20 20 20 23 20 20 20 20 t will. #
3e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3e70: 20 20 20 20 20 20 20 20 3b 20 23 20 6e 6f 74 20 ; # not
3e80: 6d 69 73 73 20 69 74 2c 20 61 73 20 69 74 20 6f miss it, as it o
3e90: 74 68 65 72 77 69 73 65 20 65 78 69 73 74 73 20 therwise exists
3ea0: 6f 6e 6c 79 20 76 69 61 0a 20 20 20 20 23 20 20 only via. #
3eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
3ec0: 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 6d 79 ; # my
3ed0: 62 72 61 6e 63 68 65 73 2e 0a 0a 20 20 20 20 23 branches... #
3ee0: 20 54 61 67 20 6c 69 6e 6b 61 67 65 20 5f 5f 5f Tag linkage ___
3ef0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
3f00: 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 76 61 72 69 61 _____.. varia
3f10: 62 6c 65 20 6d 79 74 61 67 73 20 7b 7d 20 3b 20 ble mytags {} ;
3f20: 23 20 4c 69 73 74 20 6f 66 20 74 61 67 73 20 28 # List of tags (
3f30: 6f 62 6a 73 29 20 61 73 73 6f 63 69 61 74 65 64 objs) associated
3f40: 20 77 69 74 68 20 74 68 69 73 20 72 65 76 69 73 with this revis
3f50: 69 6f 6e 2e 0a 0a 20 20 20 20 23 20 4d 6f 72 65 ion... # More
3f60: 20 64 65 72 69 76 65 64 20 64 61 74 61 0a 0a 20 derived data..
3f70: 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 6f 70 variable myop
3f80: 65 72 61 74 69 6f 6e 20 20 20 20 20 20 20 20 7b eration {
3f90: 7d 20 3b 20 23 20 4f 6e 65 20 6f 66 20 27 61 64 } ; # One of 'ad
3fa0: 64 27 2c 20 27 63 68 61 6e 67 65 27 2c 20 27 64 d', 'change', 'd
3fb0: 65 6c 65 74 65 27 2c 20 6f 72 0a 09 09 09 20 20 elete', or....
3fc0: 20 20 20 20 20 20 20 20 20 20 20 23 20 27 6e 6f # 'no
3fd0: 74 68 69 6e 67 27 2e 20 44 65 72 69 76 65 64 20 thing'. Derived
3fe0: 66 72 6f 6d 20 6f 75 72 20 61 6e 64 0a 09 09 09 from our and....
3ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 69 # i
4000: 74 73 20 70 61 72 65 6e 74 27 73 20 73 74 61 74 ts parent's stat
4010: 65 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 e.. variable
4020: 6d 79 69 73 6f 6e 64 65 66 61 75 6c 74 62 72 61 myisondefaultbra
4030: 6e 63 68 20 30 20 3b 20 23 20 42 6f 6f 6c 65 61 nch 0 ; # Boolea
4040: 6e 20 66 6c 61 67 2c 20 73 65 74 20 69 66 20 74 n flag, set if t
4050: 68 65 0a 09 09 09 09 20 20 20 20 20 23 20 72 65 he..... # re
4060: 76 69 73 69 6f 6e 20 69 73 20 6f 6e 20 74 68 65 vision is on the
4070: 20 6e 6f 6e 2d 74 72 75 6e 6b 0a 09 09 09 09 20 non-trunk.....
4080: 20 20 20 20 23 20 64 65 66 61 75 6c 74 20 62 72 # default br
4090: 61 6e 63 68 2c 20 61 6b 61 20 76 65 6e 64 6f 72 anch, aka vendor
40a0: 0a 09 09 09 09 20 20 20 20 20 23 20 62 72 61 6e ..... # bran
40b0: 63 68 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ch.. variable
40c0: 20 6d 79 64 62 70 61 72 65 6e 74 20 20 20 20 20 mydbparent
40d0: 20 20 20 20 7b 7d 20 3b 20 23 20 52 65 66 65 72 {} ; # Refer
40e0: 65 6e 63 65 20 74 6f 20 74 68 65 20 6c 61 73 74 ence to the last
40f0: 20 72 65 76 69 73 69 6f 6e 0a 09 09 09 09 20 20 revision.....
4100: 20 20 20 23 20 6f 6e 20 74 68 65 20 76 65 6e 64 # on the vend
4110: 6f 72 20 62 72 61 6e 63 68 20 69 66 20 74 68 69 or branch if thi
4120: 73 20 69 73 0a 09 09 09 09 20 20 20 20 20 23 20 s is..... #
4130: 74 68 65 20 70 72 69 6d 61 72 79 20 63 68 69 6c the primary chil
4140: 64 20 6f 66 20 74 68 65 0a 09 09 09 09 20 20 20 d of the.....
4150: 20 20 23 20 72 65 67 75 6c 61 72 20 72 6f 6f 74 # regular root
4160: 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d .. variable m
4170: 79 64 62 63 68 69 6c 64 20 20 20 20 20 20 20 20 ydbchild
4180: 20 20 7b 7d 20 3b 20 23 20 52 65 66 65 72 65 6e {} ; # Referen
4190: 63 65 20 74 6f 20 74 68 65 20 70 72 69 6d 61 72 ce to the primar
41a0: 79 20 63 68 69 6c 64 0a 09 09 09 09 20 20 20 20 y child.....
41b0: 20 23 20 6f 66 20 74 68 65 20 72 65 67 75 6c 61 # of the regula
41c0: 72 20 72 6f 6f 74 20 69 66 20 74 68 69 73 20 69 r root if this i
41d0: 73 0a 09 09 09 09 20 20 20 20 20 23 20 74 68 65 s..... # the
41e0: 20 6c 61 73 74 20 72 65 76 69 73 69 6f 6e 20 6f last revision o
41f0: 6e 20 74 68 65 20 76 65 6e 64 6f 72 0a 09 09 09 n the vendor....
4200: 09 20 20 20 20 20 23 20 62 72 61 6e 63 68 2e 0a . # branch..
4210: 0a 20 20 20 20 23 20 64 65 61 64 28 73 65 6c 66 . # dead(self
4220: 29 20 78 20 64 65 61 64 28 70 61 72 65 6e 74 29 ) x dead(parent)
4230: 20 2d 3e 20 6f 70 65 72 61 74 69 6f 6e 0a 20 20 -> operation.
4240: 20 20 74 79 70 65 76 61 72 69 61 62 6c 65 20 6d typevariable m
4250: 79 6f 70 73 74 61 74 65 20 2d 61 72 72 61 79 20 yopstate -array
4260: 7b 0a 09 7b 30 20 30 7d 20 63 68 61 6e 67 65 0a {..{0 0} change.
4270: 09 7b 30 20 31 7d 20 64 65 6c 65 74 65 0a 09 7b .{0 1} delete..{
4280: 31 20 30 7d 20 61 64 64 0a 09 7b 31 20 31 7d 20 1 0} add..{1 1}
4290: 6e 6f 74 68 69 6e 67 0a 20 20 20 20 7d 0a 0a 20 nothing. }..
42a0: 20 20 20 74 79 70 65 6d 65 74 68 6f 64 20 67 65 typemethod ge
42b0: 74 6f 70 63 6f 64 65 73 20 7b 7d 20 7b 0a 09 66 topcodes {} {..f
42c0: 6f 72 65 61 63 68 20 7b 69 64 20 6e 61 6d 65 7d oreach {id name}
42d0: 20 5b 73 74 61 74 65 20 72 75 6e 20 7b 0a 09 20 [state run {..
42e0: 20 20 20 53 45 4c 45 43 54 20 6f 69 64 2c 20 6e SELECT oid, n
42f0: 61 6d 65 20 46 52 4f 4d 20 6f 70 74 79 70 65 3b ame FROM optype;
4300: 0a 09 7d 5d 20 7b 20 73 65 74 20 6d 79 6f 70 63 ..}] { set myopc
4310: 6f 64 65 28 24 6e 61 6d 65 29 20 24 69 64 20 7d ode($name) $id }
4320: 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a ..return. }..
4330: 20 20 20 20 74 79 70 65 76 61 72 69 61 62 6c 65 typevariable
4340: 20 6d 79 6f 70 63 6f 64 65 20 2d 61 72 72 61 79 myopcode -array
4350: 20 7b 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 20 {}.. # # ##
4360: 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 ### ##### ######
4370: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 ## #############
4380: 0a 20 20 20 20 23 23 20 49 6e 74 65 72 6e 61 6c . ## Internal
4390: 20 6d 65 74 68 6f 64 73 0a 0a 20 20 20 20 23 20 methods.. #
43a0: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 # ## ### ##### #
43b0: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
43c0: 23 23 23 23 23 0a 20 20 20 20 23 23 20 43 6f 6e #####. ## Con
43d0: 66 69 67 75 72 61 74 69 6f 6e 0a 0a 20 20 20 20 figuration..
43e0: 70 72 61 67 6d 61 20 2d 68 61 73 74 79 70 65 69 pragma -hastypei
43f0: 6e 66 6f 20 20 20 20 6e 6f 20 20 3b 20 23 20 6e nfo no ; # n
4400: 6f 20 74 79 70 65 20 69 6e 74 72 6f 73 70 65 63 o type introspec
4410: 74 69 6f 6e 0a 20 20 20 20 70 72 61 67 6d 61 20 tion. pragma
4420: 2d 68 61 73 69 6e 66 6f 20 20 20 20 20 20 20 20 -hasinfo
4430: 6e 6f 20 20 3b 20 23 20 6e 6f 20 6f 62 6a 65 63 no ; # no objec
4440: 74 20 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e 0a t introspection.
4450: 20 20 20 20 70 72 61 67 6d 61 20 2d 73 69 6d 70 pragma -simp
4460: 6c 65 64 69 73 70 61 74 63 68 20 79 65 73 20 3b ledispatch yes ;
4470: 20 23 20 73 69 6d 70 6c 65 20 66 61 73 74 20 64 # simple fast d
4480: 69 73 70 61 74 63 68 0a 0a 20 20 20 20 23 20 23 ispatch.. # #
4490: 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 ## ### ##### ##
44a0: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 ###### #########
44b0: 23 23 23 23 0a 7d 0a 0a 6e 61 6d 65 73 70 61 63 ####.}..namespac
44c0: 65 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 66 6f 73 e eval ::vc::fos
44d0: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 sil::import::cvs
44e0: 3a 3a 66 69 6c 65 20 7b 0a 20 20 20 20 6e 61 6d ::file {. nam
44f0: 65 73 70 61 63 65 20 65 78 70 6f 72 74 20 72 65 espace export re
4500: 76 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 v. namespace
4510: 65 76 61 6c 20 72 65 76 20 7b 0a 09 6e 61 6d 65 eval rev {..name
4520: 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 space import ::v
4530: 63 3a 3a 74 6f 6f 6c 73 3a 3a 6d 69 73 63 3a 3a c::tools::misc::
4540: 2a 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 *..namespace imp
4550: 6f 72 74 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c ort ::vc::fossil
4560: 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 73 ::import::cvs::s
4570: 74 61 74 65 0a 09 6e 61 6d 65 73 70 61 63 65 20 tate..namespace
4580: 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 66 6f 73 import ::vc::fos
4590: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 sil::import::cvs
45a0: 3a 3a 69 6e 74 65 67 72 69 74 79 0a 20 20 20 20 ::integrity.
45b0: 7d 0a 7d 0a 0a 23 20 23 20 23 23 20 23 23 23 20 }.}..# # ## ###
45c0: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 ##### ######## #
45d0: 23 23 23 23 23 23 23 23 23 23 23 23 20 23 23 23 ############ ###
45e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
45f0: 23 23 0a 23 23 20 52 65 61 64 79 0a 0a 70 61 63 ##.## Ready..pac
4600: 6b 61 67 65 20 70 72 6f 76 69 64 65 20 76 63 3a kage provide vc:
4610: 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a :fossil::import:
4620: 3a 63 76 73 3a 3a 66 69 6c 65 3a 3a 72 65 76 20 :cvs::file::rev
4630: 31 2e 30 0a 72 65 74 75 72 6e 0a 1.0.return.