Artifact b11a935cc8d103e3ec455b2acf48136b5cafcc83:
File
tools/cvs2fossil/lib/c2f_fsym.tcl
part of check-in
[66235f2430]
- Updated the copyright information of all files touched in the new year.
by
aku on
2008-02-06 05:04:12.
Also file
tools/cvs2fossil/lib/c2f_fsym.tcl
part of check-in
[6b78df3861]
- Merge in changes from Andreas's branch.
by
drh on
2008-02-08 21:52:21.
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 2d 32 30 30 38 20 41 6e 64 72 65 61 73 20 07-2008 Andreas
0070: 4b 75 70 72 69 65 73 2e 0a 23 0a 23 20 54 68 69 Kupries..#.# Thi
0080: 73 20 73 6f 66 74 77 61 72 65 20 69 73 20 6c 69 s software is li
0090: 63 65 6e 73 65 64 20 61 73 20 64 65 73 63 72 69 censed as descri
00a0: 62 65 64 20 69 6e 20 74 68 65 20 66 69 6c 65 20 bed in the file
00b0: 4c 49 43 45 4e 53 45 2c 20 77 68 69 63 68 0a 23 LICENSE, which.#
00c0: 20 79 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65 you should have
00d0: 20 72 65 63 65 69 76 65 64 20 61 73 20 70 61 72 received as par
00e0: 74 20 6f 66 20 74 68 69 73 20 64 69 73 74 72 69 t of this distri
00f0: 62 75 74 69 6f 6e 2e 0a 23 0a 23 20 54 68 69 73 bution..#.# This
0100: 20 73 6f 66 74 77 61 72 65 20 63 6f 6e 73 69 73 software consis
0110: 74 73 20 6f 66 20 76 6f 6c 75 6e 74 61 72 79 20 ts of voluntary
0120: 63 6f 6e 74 72 69 62 75 74 69 6f 6e 73 20 6d 61 contributions ma
0130: 64 65 20 62 79 20 6d 61 6e 79 0a 23 20 69 6e 64 de by many.# ind
0140: 69 76 69 64 75 61 6c 73 2e 20 20 46 6f 72 20 65 ividuals. For e
0150: 78 61 63 74 20 63 6f 6e 74 72 69 62 75 74 69 6f xact contributio
0160: 6e 20 68 69 73 74 6f 72 79 2c 20 73 65 65 20 74 n history, see t
0170: 68 65 20 72 65 76 69 73 69 6f 6e 0a 23 20 68 69 he revision.# hi
0180: 73 74 6f 72 79 20 61 6e 64 20 6c 6f 67 73 2c 20 story and logs,
0190: 61 76 61 69 6c 61 62 6c 65 20 61 74 20 68 74 74 available at htt
01a0: 70 3a 2f 2f 66 6f 73 73 69 6c 2d 73 63 6d 2e 68 p://fossil-scm.h
01b0: 77 61 63 69 2e 63 6f 6d 2f 66 6f 73 73 69 6c 0a waci.com/fossil.
01c0: 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 # # ## ### #####
01d0: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######## ######
01e0: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
01f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 0a 23 #############..#
0200: 23 20 53 79 6d 62 6f 6c 73 20 28 54 61 67 73 2c # Symbols (Tags,
0210: 20 42 72 61 6e 63 68 65 73 29 20 70 65 72 20 66 Branches) per f
0220: 69 6c 65 2e 0a 0a 23 20 23 20 23 23 20 23 23 23 ile...# # ## ###
0230: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 ##### ########
0240: 23 23 23 23 23 23 23 23 23 23 23 23 23 20 23 23 ############# ##
0250: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0260: 23 23 23 0a 23 23 20 52 65 71 75 69 72 65 6d 65 ###.## Requireme
0270: 6e 74 73 0a 0a 70 61 63 6b 61 67 65 20 72 65 71 nts..package req
0280: 75 69 72 65 20 54 63 6c 20 38 2e 34 20 20 20 20 uire Tcl 8.4
0290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02a0: 20 20 20 20 20 20 20 20 20 3b 20 23 20 52 65 71 ; # Req
02b0: 75 69 72 65 64 20 72 75 6e 74 69 6d 65 2e 0a 70 uired runtime..p
02c0: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 73 ackage require s
02d0: 6e 69 74 20 20 20 20 20 20 20 20 20 20 20 20 20 nit
02e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02f0: 20 20 20 3b 20 23 20 4f 4f 20 73 79 73 74 65 6d ; # OO system
0300: 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 ..package requir
0310: 65 20 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 74 72 6f e vc::tools::tro
0320: 75 62 6c 65 20 20 20 20 20 20 20 20 20 20 20 20 uble
0330: 20 20 20 20 20 20 3b 20 23 20 45 72 72 6f 72 20 ; # Error
0340: 72 65 70 6f 72 74 69 6e 67 2e 0a 70 61 63 6b 61 reporting..packa
0350: 67 65 20 72 65 71 75 69 72 65 20 76 63 3a 3a 66 ge require vc::f
0360: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 ossil::import::c
0370: 76 73 3a 3a 66 69 6c 65 3a 3a 72 65 76 20 20 3b vs::file::rev ;
0380: 20 23 20 43 56 53 20 70 65 72 20 66 69 6c 65 20 # CVS per file
0390: 72 65 76 69 73 69 6f 6e 73 2e 0a 70 61 63 6b 61 revisions..packa
03a0: 67 65 20 72 65 71 75 69 72 65 20 76 63 3a 3a 66 ge require vc::f
03b0: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 ossil::import::c
03c0: 76 73 3a 3a 73 74 61 74 65 20 20 20 20 20 20 3b vs::state ;
03d0: 20 23 20 53 74 61 74 65 20 73 74 6f 72 61 67 65 # State storage
03e0: 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 ..package requir
03f0: 65 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d e vc::fossil::im
0400: 70 6f 72 74 3a 3a 63 76 73 3a 3a 69 6e 74 65 67 port::cvs::integ
0410: 72 69 74 79 20 20 3b 20 23 20 53 74 61 74 65 20 rity ; # State
0420: 69 6e 74 65 67 72 69 74 79 20 63 68 65 63 6b 73 integrity checks
0430: 2e 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 ...# # ## ### ##
0440: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 ### ######## ###
0450: 23 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23 ########## #####
0460: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0470: 0a 23 23 0a 0a 73 6e 69 74 3a 3a 74 79 70 65 20 .##..snit::type
0480: 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d ::vc::fossil::im
0490: 70 6f 72 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 3a port::cvs::file:
04a0: 3a 73 79 6d 20 7b 0a 20 20 20 20 23 20 23 20 23 :sym {. # # #
04b0: 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 # ### ##### ####
04c0: 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 #### ###########
04d0: 23 23 0a 20 20 20 20 23 23 20 50 75 62 6c 69 63 ##. ## Public
04e0: 20 41 50 49 0a 0a 20 20 20 20 63 6f 6e 73 74 72 API.. constr
04f0: 75 63 74 6f 72 20 7b 73 79 6d 74 79 70 65 20 6e uctor {symtype n
0500: 72 20 73 79 6d 62 6f 6c 20 66 69 6c 65 7d 20 7b r symbol file} {
0510: 0a 09 73 65 74 20 6d 79 66 69 6c 65 20 20 20 24 ..set myfile $
0520: 66 69 6c 65 0a 09 73 65 74 20 6d 79 74 79 70 65 file..set mytype
0530: 20 20 20 24 73 79 6d 74 79 70 65 0a 09 73 65 74 $symtype..set
0540: 20 6d 79 6e 72 20 20 20 20 20 24 6e 72 0a 09 73 mynr $nr..s
0550: 65 74 20 6d 79 73 79 6d 62 6f 6c 20 24 73 79 6d et mysymbol $sym
0560: 62 6f 6c 0a 0a 09 73 77 69 74 63 68 20 2d 65 78 bol...switch -ex
0570: 61 63 74 20 2d 2d 20 24 6d 79 74 79 70 65 20 7b act -- $mytype {
0580: 0a 09 20 20 20 20 62 72 61 6e 63 68 20 20 7b 20 .. branch {
0590: 53 65 74 75 70 42 72 61 6e 63 68 20 3b 20 72 65 SetupBranch ; re
05a0: 74 75 72 6e 20 7d 0a 09 20 20 20 20 74 61 67 20 turn }.. tag
05b0: 20 20 20 20 7b 20 72 65 74 75 72 6e 20 7d 0a 09 { return }..
05c0: 7d 0a 09 69 6e 74 65 67 72 69 74 79 20 61 73 73 }..integrity ass
05d0: 65 72 74 20 30 20 7b 42 61 64 20 73 79 6d 62 6f ert 0 {Bad symbo
05e0: 6c 20 74 79 70 65 20 27 24 6d 79 74 79 70 65 27 l type '$mytype'
05f0: 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a }..return. }.
0600: 0a 20 20 20 20 6d 65 74 68 6f 64 20 64 65 66 69 . method defi
0610: 64 20 7b 7d 20 7b 0a 09 73 65 74 20 6d 79 69 64 d {} {..set myid
0620: 20 5b 69 6e 63 72 20 6d 79 69 64 63 6f 75 6e 74 [incr myidcount
0630: 65 72 5d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 er]..return.
0640: 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 66 69 }.. method fi
0650: 64 20 20 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e d {} { return
0660: 20 24 6d 79 69 64 20 20 20 20 20 7d 0a 20 20 20 $myid }.
0670: 20 6d 65 74 68 6f 64 20 73 79 6d 62 6f 6c 20 7b method symbol {
0680: 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 73 79 } { return $mysy
0690: 6d 62 6f 6c 20 7d 0a 0a 20 20 20 20 23 20 53 79 mbol }.. # Sy
06a0: 6d 62 6f 6c 20 61 63 65 73 73 6f 72 20 6d 65 74 mbol acessor met
06b0: 68 6f 64 73 2e 0a 0a 20 20 20 20 64 65 6c 65 67 hods... deleg
06c0: 61 74 65 20 6d 65 74 68 6f 64 20 6e 61 6d 65 20 ate method name
06d0: 74 6f 20 6d 79 73 79 6d 62 6f 6c 0a 20 20 20 20 to mysymbol.
06e0: 64 65 6c 65 67 61 74 65 20 6d 65 74 68 6f 64 20 delegate method
06f0: 69 64 20 20 20 74 6f 20 6d 79 73 79 6d 62 6f 6c id to mysymbol
0700: 0a 0a 20 20 20 20 23 20 53 79 6d 62 6f 6c 20 61 .. # Symbol a
0710: 67 67 72 65 67 61 74 69 6f 6e 20 6d 65 74 68 6f ggregation metho
0720: 64 73 0a 0a 20 20 20 20 64 65 6c 65 67 61 74 65 ds.. delegate
0730: 20 6d 65 74 68 6f 64 20 63 6f 75 6e 74 61 73 62 method countasb
0740: 72 61 6e 63 68 20 74 6f 20 6d 79 73 79 6d 62 6f ranch to mysymbo
0750: 6c 0a 20 20 20 20 64 65 6c 65 67 61 74 65 20 6d l. delegate m
0760: 65 74 68 6f 64 20 63 6f 75 6e 74 61 73 74 61 67 ethod countastag
0770: 20 20 20 20 74 6f 20 6d 79 73 79 6d 62 6f 6c 0a to mysymbol.
0780: 20 20 20 20 64 65 6c 65 67 61 74 65 20 6d 65 74 delegate met
0790: 68 6f 64 20 63 6f 75 6e 74 61 63 6f 6d 6d 69 74 hod countacommit
07a0: 20 20 74 6f 20 6d 79 73 79 6d 62 6f 6c 0a 0a 20 to mysymbol..
07b0: 20 20 20 6d 65 74 68 6f 64 20 62 6c 6f 63 6b 65 method blocke
07c0: 64 62 79 20 7b 66 73 79 6d 62 6f 6c 7d 20 7b 0a dby {fsymbol} {.
07d0: 09 24 6d 79 73 79 6d 62 6f 6c 20 62 6c 6f 63 6b .$mysymbol block
07e0: 65 64 62 79 20 5b 24 66 73 79 6d 62 6f 6c 20 73 edby [$fsymbol s
07f0: 79 6d 62 6f 6c 5d 0a 09 72 65 74 75 72 6e 0a 20 ymbol]..return.
0800: 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 }.. method
0810: 20 70 6f 73 73 69 62 6c 65 70 61 72 65 6e 74 73 possibleparents
0820: 20 7b 7d 20 7b 0a 09 73 77 69 74 63 68 20 2d 65 {} {..switch -e
0830: 78 61 63 74 20 2d 2d 20 24 6d 79 74 79 70 65 20 xact -- $mytype
0840: 7b 0a 09 20 20 20 20 62 72 61 6e 63 68 20 7b 20 {.. branch {
0850: 24 73 65 6c 66 20 42 72 61 6e 63 68 50 61 72 65 $self BranchPare
0860: 6e 74 73 20 7d 0a 09 20 20 20 20 74 61 67 20 20 nts }.. tag
0870: 20 20 7b 20 24 73 65 6c 66 20 54 61 67 50 61 72 { $self TagPar
0880: 65 6e 74 73 20 20 20 20 7d 0a 09 7d 0a 09 72 65 ents }..}..re
0890: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 turn. }..
08a0: 6d 65 74 68 6f 64 20 42 72 61 6e 63 68 50 61 72 method BranchPar
08b0: 65 6e 74 73 20 7b 7d 20 7b 0a 09 23 20 54 68 65 ents {} {..# The
08c0: 20 22 6f 62 76 69 6f 75 73 22 20 70 61 72 65 6e "obvious" paren
08d0: 74 20 6f 66 20 61 20 62 72 61 6e 63 68 20 69 73 t of a branch is
08e0: 20 74 68 65 20 62 72 61 6e 63 68 20 68 6f 6c 64 the branch hold
08f0: 69 6e 67 20 74 68 65 0a 09 23 20 72 65 76 69 73 ing the..# revis
0900: 69 6f 6e 20 73 70 61 77 6e 69 6e 67 20 74 68 65 ion spawning the
0910: 20 62 72 61 6e 63 68 2e 20 41 6e 79 20 6f 74 68 branch. Any oth
0920: 65 72 20 62 72 61 6e 63 68 65 73 20 74 68 61 74 er branches that
0930: 20 61 72 65 0a 09 23 20 72 6f 6f 74 65 64 20 61 are..# rooted a
0940: 74 20 74 68 65 20 73 61 6d 65 20 72 65 76 69 73 t the same revis
0950: 69 6f 6e 20 61 6e 64 20 77 65 72 65 20 63 6f 6d ion and were com
0960: 6d 69 74 74 65 64 20 65 61 72 6c 69 65 72 20 74 mitted earlier t
0970: 68 61 6e 0a 09 23 20 74 68 65 20 62 72 61 6e 63 han..# the branc
0980: 68 20 61 72 65 20 61 6c 73 6f 20 70 6f 73 73 69 h are also possi
0990: 62 6c 65 20 70 61 72 65 6e 74 73 2e 0a 0a 09 23 ble parents....#
09a0: 20 49 67 6e 6f 72 65 20 74 68 69 73 20 69 66 20 Ignore this if
09b0: 74 68 65 20 62 72 61 6e 63 68 20 73 79 6d 62 6f the branch symbo
09c0: 6c 20 69 73 20 64 65 74 61 63 68 65 64 2e 0a 09 l is detached...
09d0: 69 66 20 7b 24 6d 79 62 72 61 6e 63 68 70 61 72 if {$mybranchpar
09e0: 65 6e 74 20 65 71 20 22 22 7d 20 72 65 74 75 72 ent eq ""} retur
09f0: 6e 0a 0a 09 24 6d 79 73 79 6d 62 6f 6c 20 70 6f n...$mysymbol po
0a00: 73 73 69 62 6c 65 70 61 72 65 6e 74 20 5b 5b 24 ssibleparent [[$
0a10: 6d 79 62 72 61 6e 63 68 70 61 72 65 6e 74 20 6c mybranchparent l
0a20: 6f 64 5d 20 73 79 6d 62 6f 6c 5d 0a 0a 09 66 6f od] symbol]...fo
0a30: 72 65 61 63 68 20 62 72 61 6e 63 68 20 5b 24 6d reach branch [$m
0a40: 79 62 72 61 6e 63 68 70 61 72 65 6e 74 20 62 72 ybranchparent br
0a50: 61 6e 63 68 65 73 5d 20 7b 0a 09 20 20 20 20 23 anches] {.. #
0a60: 20 41 20 62 72 61 6e 63 68 20 63 61 6e 6e 6f 74 A branch cannot
0a70: 20 62 65 20 69 74 73 20 6f 77 6e 20 70 61 72 65 be its own pare
0a80: 6e 74 2e 20 4e 6f 72 20 63 61 6e 20 61 20 62 72 nt. Nor can a br
0a90: 61 6e 63 68 0a 09 20 20 20 20 23 20 63 72 65 61 anch.. # crea
0aa0: 74 65 64 20 61 66 74 65 72 20 74 68 69 73 20 6f ted after this o
0ab0: 6e 65 20 62 65 20 69 74 73 20 70 61 72 65 6e 74 ne be its parent
0ac0: 2e 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61 . This means tha
0ad0: 74 20 77 65 0a 09 20 20 20 20 23 20 63 61 6e 20 t we.. # can
0ae0: 61 62 6f 72 74 20 74 68 65 20 6c 6f 6f 70 20 77 abort the loop w
0af0: 68 65 6e 20 77 65 20 68 61 76 65 20 72 65 61 63 hen we have reac
0b00: 68 65 64 20 6f 75 72 73 65 6c 76 65 73 20 69 6e hed ourselves in
0b10: 20 74 68 65 0a 09 20 20 20 20 23 20 6c 69 73 74 the.. # list
0b20: 20 6f 66 20 62 72 61 6e 63 68 65 73 2e 20 48 65 of branches. He
0b30: 72 65 20 74 68 65 20 6f 72 64 65 72 20 6f 66 20 re the order of
0b40: 66 69 6c 65 3a 3a 72 65 76 2e 6d 79 62 72 61 6e file::rev.mybran
0b50: 63 68 65 73 0a 09 20 20 20 20 23 20 63 6f 6d 65 ches.. # come
0b60: 73 20 69 6e 74 6f 20 70 6c 61 79 2c 20 61 73 20 s into play, as
0b70: 63 72 65 61 74 65 64 20 62 79 20 66 69 6c 65 3a created by file:
0b80: 3a 72 65 76 3a 3a 73 6f 72 74 62 72 61 6e 63 68 :rev::sortbranch
0b90: 65 73 2e 0a 0a 09 20 20 20 20 69 66 20 7b 24 62 es.... if {$b
0ba0: 72 61 6e 63 68 20 65 71 20 24 73 65 6c 66 7d 20 ranch eq $self}
0bb0: 62 72 65 61 6b 0a 09 20 20 20 20 24 6d 79 73 79 break.. $mysy
0bc0: 6d 62 6f 6c 20 70 6f 73 73 69 62 6c 65 70 61 72 mbol possiblepar
0bd0: 65 6e 74 20 5b 24 62 72 61 6e 63 68 20 73 79 6d ent [$branch sym
0be0: 62 6f 6c 5d 0a 09 7d 0a 09 72 65 74 75 72 6e 0a bol]..}..return.
0bf0: 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f }.. metho
0c00: 64 20 54 61 67 50 61 72 65 6e 74 73 20 7b 7d 20 d TagParents {}
0c10: 7b 0a 09 23 20 54 68 65 20 22 6f 62 76 69 6f 75 {..# The "obviou
0c20: 73 22 20 70 61 72 65 6e 74 20 6f 66 20 61 20 74 s" parent of a t
0c30: 61 67 20 69 73 20 74 68 65 20 62 72 61 6e 63 68 ag is the branch
0c40: 20 68 6f 6c 64 69 6e 67 20 74 68 65 0a 09 23 20 holding the..#
0c50: 72 65 76 69 73 69 6f 6e 20 73 70 61 77 6e 69 6e revision spawnin
0c60: 67 20 74 68 65 20 74 61 67 2e 20 42 72 61 6e 63 g the tag. Branc
0c70: 68 65 73 20 74 68 61 74 20 61 72 65 20 73 70 61 hes that are spa
0c80: 77 6e 65 64 20 62 79 20 74 68 65 0a 09 23 20 73 wned by the..# s
0c90: 61 6d 65 20 72 65 76 69 73 69 6f 6e 20 61 72 65 ame revision are
0ca0: 20 61 6c 73 6f 20 70 6f 73 73 69 62 6c 65 20 70 also possible p
0cb0: 61 72 65 6e 74 73 2e 0a 0a 09 24 6d 79 73 79 6d arents....$mysym
0cc0: 62 6f 6c 20 70 6f 73 73 69 62 6c 65 70 61 72 65 bol possiblepare
0cd0: 6e 74 20 5b 5b 24 6d 79 74 61 67 72 65 76 20 6c nt [[$mytagrev l
0ce0: 6f 64 5d 20 73 79 6d 62 6f 6c 5d 0a 0a 09 66 6f od] symbol]...fo
0cf0: 72 65 61 63 68 20 62 72 61 6e 63 68 20 5b 24 6d reach branch [$m
0d00: 79 74 61 67 72 65 76 20 62 72 61 6e 63 68 65 73 ytagrev branches
0d10: 5d 20 7b 0a 09 20 20 20 20 24 6d 79 73 79 6d 62 ] {.. $mysymb
0d20: 6f 6c 20 70 6f 73 73 69 62 6c 65 70 61 72 65 6e ol possibleparen
0d30: 74 20 5b 24 62 72 61 6e 63 68 20 73 79 6d 62 6f t [$branch symbo
0d40: 6c 5d 0a 09 7d 0a 09 72 65 74 75 72 6e 0a 20 20 l]..}..return.
0d50: 20 20 7d 0a 0a 20 20 20 20 23 0a 0a 20 20 20 20 }.. #..
0d60: 6d 65 74 68 6f 64 20 69 73 74 72 75 6e 6b 20 7b method istrunk {
0d70: 7d 20 7b 20 72 65 74 75 72 6e 20 30 20 7d 0a 0a } { return 0 }..
0d80: 20 20 20 20 23 20 42 72 61 6e 63 68 20 61 63 65 # Branch ace
0d90: 73 73 6f 72 20 6d 65 74 68 6f 64 73 2e 0a 0a 20 ssor methods...
0da0: 20 20 20 6d 65 74 68 6f 64 20 73 65 74 63 68 69 method setchi
0db0: 6c 64 72 65 76 6e 72 20 20 7b 72 65 76 6e 72 7d ldrevnr {revnr}
0dc0: 20 7b 0a 09 69 6e 74 65 67 72 69 74 79 20 61 73 {..integrity as
0dd0: 73 65 72 74 20 7b 24 6d 79 62 72 61 6e 63 68 63 sert {$mybranchc
0de0: 68 69 6c 64 72 65 76 6e 72 20 65 71 20 22 22 7d hildrevnr eq ""}
0df0: 20 7b 43 68 69 6c 64 20 61 6c 72 65 61 64 79 20 {Child already
0e00: 64 65 66 69 6e 65 64 7d 0a 09 73 65 74 20 6d 79 defined}..set my
0e10: 62 72 61 6e 63 68 63 68 69 6c 64 72 65 76 6e 72 branchchildrevnr
0e20: 20 24 72 65 76 6e 72 0a 09 72 65 74 75 72 6e 0a $revnr..return.
0e30: 20 20 20 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f }.. metho
0e40: 64 20 73 65 74 70 6f 73 69 74 69 6f 6e 20 20 7b d setposition {
0e50: 6e 7d 20 20 20 7b 20 73 65 74 20 6d 79 62 72 61 n} { set mybra
0e60: 6e 63 68 70 6f 73 69 74 69 6f 6e 20 24 6e 20 3b nchposition $n ;
0e70: 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 20 6d 65 return }. me
0e80: 74 68 6f 64 20 73 65 74 70 61 72 65 6e 74 20 20 thod setparent
0e90: 20 20 7b 72 65 76 7d 20 7b 20 73 65 74 20 6d 79 {rev} { set my
0ea0: 62 72 61 6e 63 68 70 61 72 65 6e 74 20 24 72 65 branchparent $re
0eb0: 76 20 3b 20 72 65 74 75 72 6e 20 7d 0a 20 20 20 v ; return }.
0ec0: 20 6d 65 74 68 6f 64 20 73 65 74 63 68 69 6c 64 method setchild
0ed0: 20 20 20 20 20 7b 72 65 76 7d 20 7b 20 73 65 74 {rev} { set
0ee0: 20 6d 79 62 72 61 6e 63 68 63 68 69 6c 64 20 20 mybranchchild
0ef0: 24 72 65 76 20 3b 20 72 65 74 75 72 6e 20 7d 0a $rev ; return }.
0f00: 20 20 20 20 6d 65 74 68 6f 64 20 63 75 74 63 68 method cutch
0f10: 69 6c 64 20 20 20 20 20 7b 7d 20 20 20 20 7b 20 ild {} {
0f20: 73 65 74 20 6d 79 62 72 61 6e 63 68 63 68 69 6c set mybranchchil
0f30: 64 20 20 22 22 20 20 20 3b 20 72 65 74 75 72 6e d "" ; return
0f40: 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 63 75 }. method cu
0f50: 74 62 72 61 6e 63 68 70 61 72 65 6e 74 20 7b 7d tbranchparent {}
0f60: 20 7b 20 73 65 74 20 6d 79 62 72 61 6e 63 68 70 { set mybranchp
0f70: 61 72 65 6e 74 20 22 22 20 20 20 3b 20 72 65 74 arent "" ; ret
0f80: 75 72 6e 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f urn }.. metho
0f90: 64 20 62 72 61 6e 63 68 6e 72 20 20 20 20 7b 7d d branchnr {}
0fa0: 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 6e 72 20 { return $mynr
0fb0: 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 70 61 72 }. method par
0fc0: 65 6e 74 72 65 76 6e 72 20 7b 7d 20 7b 20 72 65 entrevnr {} { re
0fd0: 74 75 72 6e 20 24 6d 79 62 72 61 6e 63 68 70 61 turn $mybranchpa
0fe0: 72 65 6e 74 72 65 76 6e 72 20 7d 0a 20 20 20 20 rentrevnr }.
0ff0: 6d 65 74 68 6f 64 20 63 68 69 6c 64 72 65 76 6e method childrevn
1000: 72 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 r {} { return $
1010: 6d 79 62 72 61 6e 63 68 63 68 69 6c 64 72 65 76 mybranchchildrev
1020: 6e 72 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 nr }. method
1030: 68 61 73 63 68 69 6c 64 72 65 76 20 7b 7d 20 7b haschildrev {} {
1040: 20 72 65 74 75 72 6e 20 5b 65 78 70 72 20 7b 24 return [expr {$
1050: 6d 79 62 72 61 6e 63 68 63 68 69 6c 64 72 65 76 mybranchchildrev
1060: 6e 72 20 6e 65 20 22 22 7d 5d 20 7d 0a 20 20 20 nr ne ""}] }.
1070: 20 6d 65 74 68 6f 64 20 68 61 73 63 68 69 6c 64 method haschild
1080: 20 20 20 20 7b 7d 20 7b 20 72 65 74 75 72 6e 20 {} { return
1090: 5b 65 78 70 72 20 7b 24 6d 79 62 72 61 6e 63 68 [expr {$mybranch
10a0: 63 68 69 6c 64 20 6e 65 20 22 22 7d 5d 20 7d 0a child ne ""}] }.
10b0: 20 20 20 20 6d 65 74 68 6f 64 20 70 61 72 65 6e method paren
10c0: 74 20 20 20 20 20 20 7b 7d 20 7b 20 72 65 74 75 t {} { retu
10d0: 72 6e 20 24 6d 79 62 72 61 6e 63 68 70 61 72 65 rn $mybranchpare
10e0: 6e 74 20 7d 0a 20 20 20 20 6d 65 74 68 6f 64 20 nt }. method
10f0: 63 68 69 6c 64 20 20 20 20 20 20 20 7b 7d 20 7b child {} {
1100: 20 72 65 74 75 72 6e 20 24 6d 79 62 72 61 6e 63 return $mybranc
1110: 68 63 68 69 6c 64 20 7d 0a 20 20 20 20 6d 65 74 hchild }. met
1120: 68 6f 64 20 70 6f 73 69 74 69 6f 6e 20 20 20 20 hod position
1130: 7b 7d 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 62 {} { return $myb
1140: 72 61 6e 63 68 70 6f 73 69 74 69 6f 6e 20 7d 0a ranchposition }.
1150: 0a 20 20 20 20 23 20 54 61 67 20 61 63 65 73 73 . # Tag acess
1160: 6f 72 20 6d 65 74 68 6f 64 73 2e 0a 0a 20 20 20 or methods...
1170: 20 6d 65 74 68 6f 64 20 74 61 67 72 65 76 6e 72 method tagrevnr
1180: 20 20 7b 7d 20 20 20 20 7b 20 72 65 74 75 72 6e {} { return
1190: 20 24 6d 79 6e 72 20 7d 0a 20 20 20 20 6d 65 74 $mynr }. met
11a0: 68 6f 64 20 73 65 74 74 61 67 72 65 76 20 7b 72 hod settagrev {r
11b0: 65 76 7d 20 7b 20 73 65 74 20 6d 79 74 61 67 72 ev} { set mytagr
11c0: 65 76 20 24 72 65 76 20 3b 20 72 65 74 75 72 6e ev $rev ; return
11d0: 20 7d 0a 0a 20 20 20 20 23 20 44 65 72 69 76 65 }.. # Derive
11e0: 64 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 0a 0a 20 d information..
11f0: 20 20 20 6d 65 74 68 6f 64 20 6c 6f 64 20 7b 7d method lod {}
1200: 20 7b 20 72 65 74 75 72 6e 20 24 6d 79 6c 6f 64 { return $mylod
1210: 20 7d 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 73 }.. method s
1220: 65 74 6c 6f 64 20 7b 6c 6f 64 7d 20 7b 0a 09 73 etlod {lod} {..s
1230: 65 74 20 6d 79 6c 6f 64 20 24 6c 6f 64 0a 09 24 et mylod $lod..$
1240: 73 65 6c 66 20 63 68 65 63 6b 6c 6f 64 0a 09 72 self checklod..r
1250: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }..
1260: 20 6d 65 74 68 6f 64 20 63 68 65 63 6b 6c 6f 64 method checklod
1270: 20 7b 7d 20 7b 0a 09 23 20 43 6f 6e 73 69 73 74 {} {..# Consist
1280: 65 6e 63 79 20 63 68 65 63 6b 2e 20 54 68 65 20 ency check. The
1290: 73 79 6d 62 6f 6c 27 73 20 6c 69 6e 65 2d 6f 66 symbol's line-of
12a0: 2d 64 65 76 65 6c 6f 70 6d 65 6e 74 20 68 61 73 -development has
12b0: 20 74 6f 0a 09 23 20 62 65 20 73 61 6d 65 20 61 to..# be same a
12c0: 73 20 74 68 65 20 6c 69 6e 65 2d 6f 66 2d 64 65 s the line-of-de
12d0: 76 65 6c 6f 70 6d 65 6e 74 20 6f 66 20 69 74 73 velopment of its
12e0: 20 73 6f 75 72 63 65 20 28 70 61 72 65 6e 74 0a source (parent.
12f0: 09 23 20 72 65 76 69 73 69 6f 6e 20 6f 66 20 61 .# revision of a
1300: 20 62 72 61 6e 63 68 2c 20 72 65 76 69 73 69 6f branch, revisio
1310: 6e 20 6f 66 20 61 20 74 61 67 20 69 74 73 65 6c n of a tag itsel
1320: 66 29 2e 0a 0a 09 73 77 69 74 63 68 20 2d 65 78 f)....switch -ex
1330: 61 63 74 20 2d 2d 20 24 6d 79 74 79 70 65 20 7b act -- $mytype {
1340: 0a 09 20 20 20 20 62 72 61 6e 63 68 20 20 7b 0a .. branch {.
1350: 09 09 23 20 48 6f 77 65 76 65 72 2c 20 69 67 6e ..# However, ign
1360: 6f 72 65 20 74 68 69 73 20 69 66 20 74 68 65 20 ore this if the
1370: 62 72 61 6e 63 68 20 73 79 6d 62 6f 6c 20 69 73 branch symbol is
1380: 0a 09 09 23 20 64 65 74 61 63 68 65 64 2e 0a 09 ...# detached...
1390: 09 69 66 20 7b 24 6d 79 62 72 61 6e 63 68 70 61 .if {$mybranchpa
13a0: 72 65 6e 74 20 65 71 20 22 22 7d 20 72 65 74 75 rent eq ""} retu
13b0: 72 6e 0a 0a 09 09 73 65 74 20 73 6c 6f 64 20 5b rn....set slod [
13c0: 24 6d 79 62 72 61 6e 63 68 70 61 72 65 6e 74 20 $mybranchparent
13d0: 6c 6f 64 5d 0a 09 20 20 20 20 7d 0a 09 20 20 20 lod].. }..
13e0: 20 74 61 67 20 20 20 20 20 7b 20 73 65 74 20 73 tag { set s
13f0: 6c 6f 64 20 5b 24 6d 79 74 61 67 72 65 76 20 20 lod [$mytagrev
1400: 20 20 20 20 20 6c 6f 64 5d 20 7d 0a 09 7d 0a 0a lod] }..}..
1410: 09 69 66 20 7b 24 6d 79 6c 6f 64 20 6e 65 20 24 .if {$mylod ne $
1420: 73 6c 6f 64 7d 20 7b 0a 09 20 20 20 20 74 72 6f slod} {.. tro
1430: 75 62 6c 65 20 66 61 74 61 6c 20 22 46 6f 72 20 uble fatal "For
1440: 24 6d 79 74 79 70 65 20 5b 24 6d 79 73 79 6d 62 $mytype [$mysymb
1450: 6f 6c 20 6e 61 6d 65 5d 3a 20 4c 4f 44 20 63 6f ol name]: LOD co
1460: 6e 66 6c 69 63 74 20 77 69 74 68 20 73 6f 75 72 nflict with sour
1470: 63 65 2c 20 27 5b 24 6d 79 6c 6f 64 20 6e 61 6d ce, '[$mylod nam
1480: 65 5d 27 20 76 73 2e 20 27 5b 24 73 6c 6f 64 20 e]' vs. '[$slod
1490: 6e 61 6d 65 5d 27 22 0a 09 20 20 20 20 72 65 74 name]'".. ret
14a0: 75 72 6e 0a 09 7d 0a 09 72 65 74 75 72 6e 0a 20 urn..}..return.
14b0: 20 20 20 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 }.. # # ##
14c0: 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 ### ##### #####
14d0: 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 ### ############
14e0: 23 0a 0a 20 20 20 20 6d 65 74 68 6f 64 20 70 65 #.. method pe
14f0: 72 73 69 73 74 20 7b 7d 20 7b 0a 09 23 20 53 61 rsist {} {..# Sa
1500: 76 65 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69 ve the informati
1510: 6f 6e 20 77 65 20 6e 65 65 64 20 61 66 74 65 72 on we need after
1520: 20 74 68 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 the collection
1530: 70 61 73 73 2e 0a 0a 09 73 65 74 20 66 69 64 20 pass....set fid
1540: 5b 24 6d 79 66 69 6c 65 20 20 20 69 64 5d 0a 09 [$myfile id]..
1550: 73 65 74 20 73 69 64 20 5b 24 6d 79 73 79 6d 62 set sid [$mysymb
1560: 6f 6c 20 69 64 5d 0a 09 73 65 74 20 6c 6f 64 20 ol id]..set lod
1570: 5b 24 6d 79 6c 6f 64 20 20 20 20 69 64 5d 0a 0a [$mylod id]..
1580: 09 73 77 69 74 63 68 20 2d 65 78 61 63 74 20 2d .switch -exact -
1590: 2d 20 24 6d 79 74 79 70 65 20 7b 0a 09 20 20 20 - $mytype {..
15a0: 20 74 61 67 20 7b 0a 09 09 73 65 74 20 72 69 64 tag {...set rid
15b0: 20 5b 24 6d 79 74 61 67 72 65 76 20 69 64 5d 0a [$mytagrev id].
15c0: 09 09 73 74 61 74 65 20 74 72 61 6e 73 61 63 74 ..state transact
15d0: 69 6f 6e 20 7b 0a 09 09 20 20 20 20 73 74 61 74 ion {... stat
15e0: 65 20 72 75 6e 20 7b 0a 09 09 09 49 4e 53 45 52 e run {....INSER
15f0: 54 20 49 4e 54 4f 20 74 61 67 20 28 20 74 69 64 T INTO tag ( tid
1600: 2c 20 20 20 66 69 64 2c 20 20 6c 6f 64 2c 20 20 , fid, lod,
1610: 73 69 64 2c 20 20 72 65 76 29 0a 09 09 09 56 41 sid, rev)....VA
1620: 4c 55 45 53 20 20 20 20 20 20 20 20 20 20 28 24 LUES ($
1630: 6d 79 69 64 2c 20 24 66 69 64 2c 20 24 6c 6f 64 myid, $fid, $lod
1640: 2c 20 24 73 69 64 2c 20 24 72 69 64 29 3b 0a 09 , $sid, $rid);..
1650: 09 20 20 20 20 7d 0a 09 09 7d 0a 09 20 20 20 20 . }...}..
1660: 7d 0a 09 20 20 20 20 62 72 61 6e 63 68 20 7b 0a }.. branch {.
1670: 09 09 6c 61 70 70 65 6e 64 20 6d 61 70 20 40 46 ..lappend map @F
1680: 40 20 5b 65 78 70 72 20 7b 20 28 24 6d 79 62 72 @ [expr { ($mybr
1690: 61 6e 63 68 63 68 69 6c 64 20 20 65 71 20 22 22 anchchild eq ""
16a0: 29 20 3f 20 22 4e 55 4c 4c 22 20 3a 20 5b 24 6d ) ? "NULL" : [$m
16b0: 79 62 72 61 6e 63 68 63 68 69 6c 64 20 20 69 64 ybranchchild id
16c0: 5d 20 7d 5d 0a 09 09 6c 61 70 70 65 6e 64 20 6d ] }]...lappend m
16d0: 61 70 20 40 50 40 20 5b 65 78 70 72 20 7b 20 28 ap @P@ [expr { (
16e0: 24 6d 79 62 72 61 6e 63 68 70 61 72 65 6e 74 20 $mybranchparent
16f0: 65 71 20 22 22 29 20 3f 20 22 4e 55 4c 4c 22 20 eq "") ? "NULL"
1700: 3a 20 5b 24 6d 79 62 72 61 6e 63 68 70 61 72 65 : [$mybranchpare
1710: 6e 74 20 69 64 5d 20 7d 5d 0a 0a 09 09 73 65 74 nt id] }]....set
1720: 20 63 6d 64 20 7b 0a 09 09 20 20 20 20 49 4e 53 cmd {... INS
1730: 45 52 54 20 49 4e 54 4f 20 62 72 61 6e 63 68 20 ERT INTO branch
1740: 28 20 62 69 64 2c 20 20 20 66 69 64 2c 20 20 6c ( bid, fid, l
1750: 6f 64 2c 20 20 73 69 64 2c 20 20 72 6f 6f 74 2c od, sid, root,
1760: 20 66 69 72 73 74 2c 20 62 72 61 2c 20 20 70 6f first, bra, po
1770: 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 s )
1780: 0a 09 09 20 20 20 20 56 41 4c 55 45 53 20 20 20 ... VALUES
1790: 20 20 20 20 20 20 20 20 20 20 28 24 6d 79 69 64 ($myid
17a0: 2c 20 24 66 69 64 2c 20 24 6c 6f 64 2c 20 24 73 , $fid, $lod, $s
17b0: 69 64 2c 20 20 40 50 40 2c 20 20 40 46 40 2c 20 id, @P@, @F@,
17c0: 20 24 6d 79 6e 72 2c 20 24 6d 79 62 72 61 6e 63 $mynr, $mybranc
17d0: 68 70 6f 73 69 74 69 6f 6e 29 3b 0a 09 09 7d 0a hposition);...}.
17e0: 09 09 73 74 61 74 65 20 74 72 61 6e 73 61 63 74 ..state transact
17f0: 69 6f 6e 20 7b 0a 09 09 20 20 20 20 73 74 61 74 ion {... stat
1800: 65 20 72 75 6e 20 5b 73 74 72 69 6e 67 20 6d 61 e run [string ma
1810: 70 20 24 6d 61 70 20 24 63 6d 64 5d 0a 09 09 7d p $map $cmd]...}
1820: 0a 09 20 20 20 20 7d 0a 09 7d 0a 0a 09 72 65 74 .. }..}...ret
1830: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 6d urn. }.. m
1840: 65 74 68 6f 64 20 44 55 4d 50 20 7b 6c 61 62 65 ethod DUMP {labe
1850: 6c 7d 20 7b 0a 09 70 75 74 73 20 22 24 6c 61 62 l} {..puts "$lab
1860: 65 6c 20 3d 20 24 73 65 6c 66 20 24 6d 79 74 79 el = $self $myty
1870: 70 65 20 5b 24 73 65 6c 66 20 6e 61 6d 65 5d 20 pe [$self name]
1880: 5c 7b 22 0a 09 73 77 69 74 63 68 20 2d 65 78 61 \{"..switch -exa
1890: 63 74 20 2d 2d 20 24 6d 79 74 79 70 65 20 7b 0a ct -- $mytype {.
18a0: 09 20 20 20 20 74 61 67 20 7b 0a 09 09 70 75 74 . tag {...put
18b0: 73 20 22 5c 74 52 5c 74 24 6d 79 74 61 67 72 65 s "\tR\t$mytagre
18c0: 76 22 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 62 v".. }.. b
18d0: 72 61 6e 63 68 20 7b 0a 09 09 70 75 74 73 20 22 ranch {...puts "
18e0: 5c 74 50 5c 74 24 6d 79 62 72 61 6e 63 68 70 61 \tP\t$mybranchpa
18f0: 72 65 6e 74 22 0a 09 09 70 75 74 73 20 22 5c 74 rent"...puts "\t
1900: 43 5c 74 24 6d 79 62 72 61 6e 63 68 63 68 69 6c C\t$mybranchchil
1910: 64 22 0a 09 09 70 75 74 73 20 22 5c 74 5c 74 3c d"...puts "\t\t<
1920: 24 6d 79 6e 72 3e 22 0a 09 20 20 20 20 7d 0a 09 $mynr>".. }..
1930: 7d 0a 09 70 75 74 73 20 22 5c 7d 22 0a 09 72 65 }..puts "\}"..re
1940: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 turn. }..
1950: 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 # # ## ### #####
1960: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######## ######
1970: 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 53 #######. ## S
1980: 74 61 74 65 0a 0a 20 20 20 20 23 20 50 65 72 73 tate.. # Pers
1990: 69 73 74 65 6e 74 3a 0a 20 20 20 20 23 20 20 20 istent:. #
19a0: 20 20 20 20 20 54 61 67 3a 20 6d 79 69 64 20 20 Tag: myid
19b0: 20 20 20 20 20 20 20 20 20 2d 20 74 61 67 2e 74 - tag.t
19c0: 69 64 0a 20 20 20 20 23 20 20 20 20 20 20 20 20 id. #
19d0: 20 20 20 20 20 6d 79 66 69 6c 65 20 20 20 20 20 myfile
19e0: 20 20 20 20 2d 20 74 61 67 2e 66 69 64 0a 20 20 - tag.fid.
19f0: 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 #
1a00: 6d 79 6c 6f 64 20 20 20 20 20 20 20 20 20 20 2d mylod -
1a10: 20 74 61 67 2e 6c 6f 64 0a 20 20 20 20 23 20 20 tag.lod. #
1a20: 20 20 20 20 20 20 20 20 20 20 20 6d 79 73 79 6d mysym
1a30: 62 6f 6c 20 20 20 20 20 20 20 2d 20 74 61 67 2e bol - tag.
1a40: 73 69 64 0a 20 20 20 20 23 20 20 20 20 20 20 20 sid. #
1a50: 20 20 20 20 20 20 6d 79 74 61 67 72 65 76 20 20 mytagrev
1a60: 20 20 20 20 20 2d 20 74 61 67 2e 72 65 76 0a 20 - tag.rev.
1a70: 20 20 20 23 0a 20 20 20 20 23 20 20 20 20 20 42 #. # B
1a80: 72 61 6e 63 68 3a 20 6d 79 69 64 20 20 20 20 20 ranch: myid
1a90: 20 20 20 20 20 20 2d 20 62 72 61 6e 63 68 2e 62 - branch.b
1aa0: 69 64 0a 20 20 20 20 23 09 09 20 20 6d 79 66 69 id. #.. myfi
1ab0: 6c 65 20 20 20 20 20 20 20 20 20 2d 20 62 72 61 le - bra
1ac0: 6e 63 68 2e 66 69 64 0a 20 20 20 20 23 09 09 20 nch.fid. #..
1ad0: 20 6d 79 6c 6f 64 20 20 20 20 20 20 20 20 20 20 mylod
1ae0: 2d 20 62 72 61 6e 63 68 2e 6c 6f 64 0a 20 20 20 - branch.lod.
1af0: 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 6d # m
1b00: 79 73 79 6d 62 6f 6c 20 20 20 20 20 20 20 2d 20 ysymbol -
1b10: 62 72 61 6e 63 68 2e 73 69 64 0a 20 20 20 20 23 branch.sid. #
1b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 79 62 myb
1b30: 72 61 6e 63 68 70 61 72 65 6e 74 20 2d 20 62 72 ranchparent - br
1b40: 61 6e 63 68 2e 72 6f 6f 74 0a 20 20 20 20 23 20 anch.root. #
1b50: 20 20 20 20 20 20 20 20 20 20 20 20 6d 79 62 72 mybr
1b60: 61 6e 63 68 63 68 69 6c 64 20 20 2d 20 62 72 61 anchchild - bra
1b70: 6e 63 68 2e 66 69 72 73 74 0a 20 20 20 20 23 20 nch.first. #
1b80: 20 20 20 20 20 20 20 20 20 20 20 20 6d 79 6e 72 mynr
1b90: 20 20 20 20 20 20 20 20 20 20 20 2d 20 62 72 61 - bra
1ba0: 6e 63 68 2e 62 72 61 0a 0a 20 20 20 20 74 79 70 nch.bra.. typ
1bb0: 65 76 61 72 69 61 62 6c 65 20 6d 79 69 64 63 6f evariable myidco
1bc0: 75 6e 74 65 72 20 30 20 3b 20 23 20 43 6f 75 6e unter 0 ; # Coun
1bd0: 74 65 72 20 66 6f 72 20 73 79 6d 62 6f 6c 20 69 ter for symbol i
1be0: 64 73 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 ds.. variable
1bf0: 20 6d 79 69 64 20 20 20 20 20 20 20 20 20 20 20 myid
1c00: 7b 7d 20 3b 20 23 20 53 79 6d 62 6f 6c 20 69 64 {} ; # Symbol id
1c10: 2e 0a 0a 20 20 20 20 23 23 20 42 61 73 69 63 2c ... ## Basic,
1c20: 20 61 6c 6c 20 73 79 6d 62 6f 6c 73 20 5f 5f 5f all symbols ___
1c30: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a ______________..
1c40: 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 66 variable myf
1c50: 69 6c 65 20 20 20 7b 7d 20 3b 20 23 20 52 65 66 ile {} ; # Ref
1c60: 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 66 69 erence to the fi
1c70: 6c 65 20 74 68 65 20 73 79 6d 62 6f 6c 20 69 73 le the symbol is
1c80: 20 69 6e 2e 0a 20 20 20 20 76 61 72 69 61 62 6c in.. variabl
1c90: 65 20 6d 79 74 79 70 65 20 20 20 7b 7d 20 3b 20 e mytype {} ;
1ca0: 23 20 53 79 6d 62 6f 6c 20 74 79 70 65 2c 20 27 # Symbol type, '
1cb0: 74 61 67 27 2c 20 6f 72 20 27 62 72 61 6e 63 68 tag', or 'branch
1cc0: 27 2e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 '.. variable
1cd0: 6d 79 6e 72 20 20 20 20 20 7b 7d 20 3b 20 23 20 mynr {} ; #
1ce0: 52 65 76 69 73 69 6f 6e 20 6e 75 6d 62 65 72 20 Revision number
1cf0: 6f 66 20 61 20 27 74 61 67 27 2c 20 62 72 61 6e of a 'tag', bran
1d00: 63 68 20 6e 75 6d 62 65 72 0a 09 09 09 20 20 20 ch number....
1d10: 23 20 6f 66 20 61 20 27 62 72 61 6e 63 68 27 2e # of a 'branch'.
1d20: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 . variable my
1d30: 73 79 6d 62 6f 6c 20 7b 7d 20 3b 20 23 20 52 65 symbol {} ; # Re
1d40: 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 73 ference to the s
1d50: 79 6d 62 6f 6c 20 6f 62 6a 65 63 74 20 6f 66 20 ymbol object of
1d60: 74 68 69 73 0a 09 09 09 20 20 20 23 20 73 79 6d this.... # sym
1d70: 62 6f 6c 20 61 74 20 74 68 65 20 70 72 6f 6a 65 bol at the proje
1d80: 63 74 20 6c 65 76 65 6c 2e 0a 20 20 20 20 76 61 ct level.. va
1d90: 72 69 61 62 6c 65 20 6d 79 6c 6f 64 20 20 20 20 riable mylod
1da0: 7b 7d 20 3b 20 23 20 52 65 66 65 72 65 6e 63 65 {} ; # Reference
1db0: 20 74 6f 20 74 68 65 20 6c 69 6e 65 2d 6f 66 2d to the line-of-
1dc0: 64 65 76 65 6c 6f 70 6d 65 6e 74 0a 09 09 09 20 development....
1dd0: 20 20 23 20 6f 62 6a 65 63 74 20 74 68 65 20 73 # object the s
1de0: 79 6d 62 6f 6c 20 62 65 6c 6f 6e 67 73 20 74 6f ymbol belongs to
1df0: 2e 20 41 6e 0a 09 09 09 20 20 20 23 20 61 6c 74 . An.... # alt
1e00: 65 72 6e 61 74 69 76 65 20 69 64 69 6f 6d 20 77 ernative idiom w
1e10: 6f 75 6c 64 20 62 65 20 74 6f 20 63 61 6c 6c 20 ould be to call
1e20: 69 74 20 74 68 65 0a 09 09 09 20 20 20 23 20 62 it the.... # b
1e30: 72 61 6e 63 68 20 74 68 65 20 73 79 6d 62 6f 6c ranch the symbol
1e40: 20 69 73 20 6f 6e 2e 20 54 68 69 73 20 72 65 66 is on. This ref
1e50: 65 72 65 6e 63 65 0a 09 09 09 20 20 20 23 20 69 erence.... # i
1e60: 73 20 74 6f 20 61 20 70 72 6f 6a 65 63 74 2d 6c s to a project-l
1e70: 65 76 65 6c 20 6f 62 6a 65 63 74 20 28 73 79 6d evel object (sym
1e80: 62 6f 6c 20 6f 72 0a 09 09 09 20 20 20 23 20 74 bol or.... # t
1e90: 72 75 6e 6b 29 2e 0a 0a 20 20 20 20 23 23 20 42 runk)... ## B
1ea0: 72 61 6e 63 68 20 73 79 6d 62 6f 6c 73 20 5f 5f ranch symbols __
1eb0: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f ________________
1ec0: 5f 5f 5f 0a 0a 20 20 20 20 76 61 72 69 61 62 6c ___.. variabl
1ed0: 65 20 6d 79 62 72 61 6e 63 68 70 61 72 65 6e 74 e mybranchparent
1ee0: 72 65 76 6e 72 20 7b 7d 20 3b 20 23 20 54 68 65 revnr {} ; # The
1ef0: 20 6e 75 6d 62 65 72 20 6f 66 20 74 68 65 20 70 number of the p
1f00: 61 72 65 6e 74 0a 09 09 09 09 20 20 20 20 20 20 arent.....
1f10: 23 20 72 65 76 69 73 69 6f 6e 2c 20 64 65 72 69 # revision, deri
1f20: 76 65 64 20 66 72 6f 6d 20 6f 75 72 0a 09 09 09 ved from our....
1f30: 09 20 20 20 20 20 20 23 20 62 72 61 6e 63 68 20 . # branch
1f40: 6e 75 6d 62 65 72 20 28 6d 79 6e 72 29 2e 0a 20 number (mynr)..
1f50: 20 20 20 76 61 72 69 61 62 6c 65 20 6d 79 62 72 variable mybr
1f60: 61 6e 63 68 70 61 72 65 6e 74 20 20 20 20 20 20 anchparent
1f70: 7b 7d 20 3b 20 23 20 52 65 66 65 72 65 6e 63 65 {} ; # Reference
1f80: 20 74 6f 20 74 68 65 20 72 65 76 69 73 69 6f 6e to the revision
1f90: 0a 09 09 09 09 20 20 20 20 20 20 23 20 28 6f 62 ..... # (ob
1fa0: 6a 65 63 74 29 20 77 68 69 63 68 20 73 70 61 77 ject) which spaw
1fb0: 6e 73 20 74 68 65 0a 09 09 09 09 20 20 20 20 20 ns the.....
1fc0: 20 23 20 62 72 61 6e 63 68 2e 0a 20 20 20 20 76 # branch.. v
1fd0: 61 72 69 61 62 6c 65 20 6d 79 62 72 61 6e 63 68 ariable mybranch
1fe0: 63 68 69 6c 64 72 65 76 6e 72 20 20 7b 7d 20 3b childrevnr {} ;
1ff0: 20 23 20 4e 75 6d 62 65 72 20 6f 66 20 74 68 65 # Number of the
2000: 20 66 69 72 73 74 20 72 65 76 69 73 69 6f 6e 0a first revision.
2010: 09 09 09 09 20 20 20 20 20 20 23 20 63 6f 6d 6d .... # comm
2020: 69 74 74 65 64 20 6f 6e 20 74 68 69 73 20 62 72 itted on this br
2030: 61 6e 63 68 2e 0a 20 20 20 20 76 61 72 69 61 62 anch.. variab
2040: 6c 65 20 6d 79 62 72 61 6e 63 68 63 68 69 6c 64 le mybranchchild
2050: 20 20 20 20 20 20 20 7b 7d 20 3b 20 23 20 52 65 {} ; # Re
2060: 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 72 ference to the r
2070: 65 76 69 73 69 6f 6e 0a 09 09 09 09 20 20 20 20 evision.....
2080: 20 20 23 20 28 6f 62 6a 65 63 74 29 20 66 69 72 # (object) fir
2090: 73 74 20 63 6f 6d 6d 69 74 74 65 64 20 6f 6e 0a st committed on.
20a0: 09 09 09 09 20 20 20 20 20 20 23 20 74 68 69 73 .... # this
20b0: 20 62 72 61 6e 63 68 2e 0a 20 20 20 20 76 61 72 branch.. var
20c0: 69 61 62 6c 65 20 6d 79 62 72 61 6e 63 68 70 6f iable mybranchpo
20d0: 73 69 74 69 6f 6e 20 20 20 20 7b 7d 20 3b 20 23 sition {} ; #
20e0: 20 52 65 6c 61 74 69 76 65 20 69 64 20 6f 66 20 Relative id of
20f0: 74 68 65 20 62 72 61 6e 63 68 20 69 6e 0a 09 09 the branch in...
2100: 09 09 20 20 20 20 20 20 23 20 74 68 65 20 66 69 .. # the fi
2110: 6c 65 2c 20 74 6f 20 73 6f 72 74 20 69 6e 74 6f le, to sort into
2120: 0a 09 09 09 09 20 20 20 20 20 20 23 20 63 72 65 ..... # cre
2130: 61 74 69 6f 6e 20 6f 72 64 65 72 2e 0a 0a 20 20 ation order...
2140: 20 20 23 23 20 54 61 67 20 73 79 6d 62 6f 6c 73 ## Tag symbols
2150: 20 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f _______________
2160: 5f 5f 5f 5f 5f 5f 5f 5f 5f 0a 0a 20 20 20 20 76 _________.. v
2170: 61 72 69 61 62 6c 65 20 6d 79 74 61 67 72 65 76 ariable mytagrev
2180: 20 7b 7d 20 3b 20 23 20 52 65 66 65 72 65 6e 63 {} ; # Referenc
2190: 65 20 74 6f 20 74 68 65 20 72 65 76 69 73 69 6f e to the revisio
21a0: 6e 20 6f 62 6a 65 63 74 20 74 68 65 20 74 61 67 n object the tag
21b0: 0a 09 09 09 20 20 20 23 20 69 73 20 6f 6e 2c 20 .... # is on,
21c0: 69 64 65 6e 74 69 66 69 65 64 20 62 79 20 27 6d identified by 'm
21d0: 79 6e 72 27 2e 0a 0a 20 20 20 20 23 20 2e 2e 2e ynr'... # ...
21e0: 20 6e 6f 74 68 69 6e 67 20 73 70 65 63 69 61 6c nothing special
21f0: 20 2e 2e 2e 20 28 6f 6e 6c 79 20 6d 79 6e 72 2c ... (only mynr,
2200: 20 73 65 65 20 62 61 73 69 63 29 0a 0a 20 20 20 see basic)..
2210: 20 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 # # ## ### ####
2220: 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 # ######## #####
2230: 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 ########. ##
2240: 49 6e 74 65 72 6e 61 6c 20 6d 65 74 68 6f 64 73 Internal methods
2250: 0a 0a 20 20 20 20 70 72 6f 63 20 53 65 74 75 70 .. proc Setup
2260: 42 72 61 6e 63 68 20 7b 7d 20 7b 0a 09 75 70 76 Branch {} {..upv
2270: 61 72 20 31 20 6d 79 62 72 61 6e 63 68 70 61 72 ar 1 mybranchpar
2280: 65 6e 74 72 65 76 6e 72 20 6d 79 62 72 61 6e 63 entrevnr mybranc
2290: 68 70 61 72 65 6e 74 72 65 76 6e 72 20 6d 79 6e hparentrevnr myn
22a0: 72 20 6d 79 6e 72 0a 09 73 65 74 20 6d 79 62 72 r mynr..set mybr
22b0: 61 6e 63 68 70 61 72 65 6e 74 72 65 76 6e 72 20 anchparentrevnr
22c0: 5b 72 65 76 20 32 62 72 61 6e 63 68 70 61 72 65 [rev 2branchpare
22d0: 6e 74 72 65 76 6e 72 20 20 24 6d 79 6e 72 5d 0a ntrevnr $mynr].
22e0: 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 .return. }..
22f0: 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23 23 # # ## ### ##
2300: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 ### ######## ###
2310: 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 ##########. #
2320: 23 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a # Configuration.
2330: 0a 20 20 20 20 70 72 61 67 6d 61 20 2d 68 61 73 . pragma -has
2340: 74 79 70 65 69 6e 66 6f 20 20 20 20 6e 6f 20 20 typeinfo no
2350: 3b 20 23 20 6e 6f 20 74 79 70 65 20 69 6e 74 72 ; # no type intr
2360: 6f 73 70 65 63 74 69 6f 6e 0a 20 20 20 20 70 72 ospection. pr
2370: 61 67 6d 61 20 2d 68 61 73 69 6e 66 6f 20 20 20 agma -hasinfo
2380: 20 20 20 20 20 6e 6f 20 20 3b 20 23 20 6e 6f 20 no ; # no
2390: 6f 62 6a 65 63 74 20 69 6e 74 72 6f 73 70 65 63 object introspec
23a0: 74 69 6f 6e 0a 20 20 20 20 70 72 61 67 6d 61 20 tion. pragma
23b0: 2d 68 61 73 74 79 70 65 6d 65 74 68 6f 64 73 20 -hastypemethods
23c0: 6e 6f 20 20 3b 20 23 20 74 79 70 65 20 69 73 20 no ; # type is
23d0: 6e 6f 74 20 72 65 6c 65 76 61 6e 74 2e 0a 0a 20 not relevant...
23e0: 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23 23 # # ## ### ##
23f0: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 ### ######## ###
2400: 23 23 23 23 23 23 23 23 23 23 0a 7d 0a 0a 6e 61 ##########.}..na
2410: 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 76 mespace eval ::v
2420: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor
2430: 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 20 7b 0a 20 t::cvs::file {.
2440: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 78 70 namespace exp
2450: 6f 72 74 20 73 79 6d 0a 20 20 20 20 6e 61 6d 65 ort sym. name
2460: 73 70 61 63 65 20 65 76 61 6c 20 73 79 6d 20 7b space eval sym {
2470: 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f ..namespace impo
2480: 72 74 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a rt ::vc::fossil:
2490: 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 66 69 :import::cvs::fi
24a0: 6c 65 3a 3a 72 65 76 0a 09 6e 61 6d 65 73 70 61 le::rev..namespa
24b0: 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a ce import ::vc::
24c0: 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a fossil::import::
24d0: 63 76 73 3a 3a 73 74 61 74 65 0a 09 6e 61 6d 65 cvs::state..name
24e0: 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 space import ::v
24f0: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor
2500: 74 3a 3a 63 76 73 3a 3a 69 6e 74 65 67 72 69 74 t::cvs::integrit
2510: 79 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 y..namespace imp
2520: 6f 72 74 20 3a 3a 76 63 3a 3a 74 6f 6f 6c 73 3a ort ::vc::tools:
2530: 3a 74 72 6f 75 62 6c 65 0a 20 20 20 20 7d 0a 7d :trouble. }.}
2540: 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 23 ..# # ## ### ###
2550: 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 ## ######## ####
2560: 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######### ######
2570: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a ###############.
2580: 23 23 20 52 65 61 64 79 0a 0a 70 61 63 6b 61 67 ## Ready..packag
2590: 65 20 70 72 6f 76 69 64 65 20 76 63 3a 3a 66 6f e provide vc::fo
25a0: 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 ssil::import::cv
25b0: 73 3a 3a 66 69 6c 65 3a 3a 73 79 6d 20 31 2e 30 s::file::sym 1.0
25c0: 0a 72 65 74 75 72 6e 0a .return.