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 50 61 73 ########..## Pas
0200: 73 20 49 56 2e 20 43 6f 6d 69 6e 67 20 61 66 74 s IV. Coming aft
0210: 65 72 20 74 68 65 20 73 79 6d 62 6f 6c 20 63 6f er the symbol co
0220: 6c 6c 61 74 69 6f 6e 20 70 61 73 73 20 74 68 69 llation pass thi
0230: 73 20 70 61 73 73 20 6e 6f 77 0a 23 23 20 72 65 s pass now.## re
0240: 6d 6f 76 65 73 20 61 6c 6c 20 72 65 76 69 73 69 moves all revisi
0250: 6f 6e 73 20 61 6e 64 20 73 79 6d 62 6f 6c 73 20 ons and symbols
0260: 72 65 66 65 72 65 6e 63 69 6e 67 20 61 6e 79 20 referencing any
0270: 6f 66 20 74 68 65 20 65 78 63 6c 75 64 65 64 0a of the excluded.
0280: 23 23 20 73 79 6d 62 6f 6c 73 20 66 72 6f 6d 20 ## symbols from
0290: 74 68 65 20 70 65 72 73 69 73 74 65 6e 74 20 64 the persistent d
02a0: 61 74 61 62 61 73 65 2e 0a 0a 23 20 23 20 23 23 atabase...# # ##
02b0: 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 ### ##### #####
02c0: 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 ### ############
02d0: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 # ##############
02e0: 23 23 23 23 23 23 23 0a 23 23 20 52 65 71 75 69 #######.## Requi
02f0: 72 65 6d 65 6e 74 73 0a 0a 70 61 63 6b 61 67 65 rements..package
0300: 20 72 65 71 75 69 72 65 20 54 63 6c 20 38 2e 34 require Tcl 8.4
0310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b ;
0330: 20 23 20 52 65 71 75 69 72 65 64 20 72 75 6e 74 # Required runt
0340: 69 6d 65 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 ime..package req
0350: 75 69 72 65 20 73 6e 69 74 20 20 20 20 20 20 20 uire snit
0360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0370: 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 4f ; # O
0380: 4f 20 73 79 73 74 65 6d 2e 0a 70 61 63 6b 61 67 O system..packag
0390: 65 20 72 65 71 75 69 72 65 20 76 63 3a 3a 74 6f e require vc::to
03a0: 6f 6c 73 3a 3a 6d 69 73 63 20 20 20 20 20 20 20 ols::misc
03b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
03c0: 3b 20 23 20 54 65 78 74 20 66 6f 72 6d 61 74 74 ; # Text formatt
03d0: 69 6e 67 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 ing..package req
03e0: 75 69 72 65 20 76 63 3a 3a 74 6f 6f 6c 73 3a 3a uire vc::tools::
03f0: 6c 6f 67 20 20 20 20 20 20 20 20 20 20 20 20 20 log
0400: 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 55 ; # U
0410: 73 65 72 20 66 65 65 64 62 61 63 6b 2e 0a 70 61 ser feedback..pa
0420: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 76 63 ckage require vc
0430: 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 ::fossil::import
0440: 3a 3a 63 76 73 3a 3a 73 74 61 74 65 20 20 20 20 ::cvs::state
0450: 20 20 20 20 3b 20 23 20 53 74 61 74 65 20 73 74 ; # State st
0460: 6f 72 61 67 65 2e 0a 70 61 63 6b 61 67 65 20 72 orage..package r
0470: 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 73 69 equire vc::fossi
0480: 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a l::import::cvs::
0490: 69 6e 74 65 67 72 69 74 79 20 20 20 20 3b 20 23 integrity ; #
04a0: 20 53 74 61 74 65 20 73 74 6f 72 61 67 65 20 69 State storage i
04b0: 6e 74 65 67 72 69 74 79 20 63 68 65 63 6b 73 2e ntegrity checks.
04c0: 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 .package require
04d0: 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 vc::fossil::imp
04e0: 6f 72 74 3a 3a 63 76 73 3a 3a 70 72 6f 6a 65 63 ort::cvs::projec
04f0: 74 3a 3a 73 79 6d 20 3b 20 23 20 50 72 6f 6a 65 t::sym ; # Proje
0500: 63 74 20 6c 65 76 65 6c 20 73 79 6d 62 6f 6c 73 ct level symbols
0510: 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 23 ..# # ## ### ###
0520: 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 ## ######## ####
0530: 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######### ######
0540: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a ###############.
0550: 23 23 20 52 65 67 69 73 74 65 72 20 74 68 65 20 ## Register the
0560: 70 61 73 73 20 77 69 74 68 20 74 68 65 20 6d 61 pass with the ma
0570: 6e 61 67 65 6d 65 6e 74 0a 0a 76 63 3a 3a 66 6f nagement..vc::fo
0580: 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 ssil::import::cv
0590: 73 3a 3a 70 61 73 73 20 64 65 66 69 6e 65 20 5c s::pass define \
05a0: 0a 20 20 20 20 46 69 6c 74 65 72 53 79 6d 62 6f . FilterSymbo
05b0: 6c 73 20 5c 0a 20 20 20 20 7b 46 69 6c 74 65 72 ls \. {Filter
05c0: 20 73 79 6d 62 6f 6c 73 2c 20 72 65 6d 6f 76 65 symbols, remove
05d0: 20 61 6c 6c 20 65 78 63 6c 75 64 65 64 20 70 69 all excluded pi
05e0: 65 63 65 73 7d 20 5c 0a 20 20 20 20 3a 3a 76 63 eces} \. ::vc
05f0: 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 ::fossil::import
0600: 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a 66 69 6c ::cvs::pass::fil
0610: 74 65 72 73 79 6d 0a 0a 23 20 23 20 23 23 20 23 tersym..# # ## #
0620: 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 ## ##### #######
0630: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 20 # #############
0640: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0650: 23 23 23 23 23 0a 23 23 20 0a 0a 73 6e 69 74 3a #####.## ..snit:
0660: 3a 74 79 70 65 20 3a 3a 76 63 3a 3a 66 6f 73 73 :type ::vc::foss
0670: 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a il::import::cvs:
0680: 3a 70 61 73 73 3a 3a 66 69 6c 74 65 72 73 79 6d :pass::filtersym
0690: 20 7b 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 {. # # ## ##
06a0: 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 # ##### ########
06b0: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 #############.
06c0: 20 20 20 23 23 20 50 75 62 6c 69 63 20 41 50 49 ## Public API
06d0: 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 68 6f 64 .. typemethod
06e0: 20 73 65 74 75 70 20 7b 7d 20 7b 0a 09 23 20 44 setup {} {..# D
06f0: 65 66 69 6e 65 20 6e 61 6d 65 73 20 61 6e 64 20 efine names and
0700: 73 74 72 75 63 74 75 72 65 20 6f 66 20 74 68 65 structure of the
0710: 20 70 65 72 73 69 73 74 65 6e 74 20 73 74 61 74 persistent stat
0720: 65 20 6f 66 20 74 68 69 73 0a 09 23 20 70 61 73 e of this..# pas
0730: 73 2e 0a 0a 09 73 74 61 74 65 20 72 65 61 64 69 s....state readi
0740: 6e 67 20 73 79 6d 62 6f 6c 0a 09 73 74 61 74 65 ng symbol..state
0750: 20 72 65 61 64 69 6e 67 20 62 6c 6f 63 6b 65 72 reading blocker
0760: 0a 09 73 74 61 74 65 20 72 65 61 64 69 6e 67 20 ..state reading
0770: 70 61 72 65 6e 74 0a 09 73 74 61 74 65 20 72 65 parent..state re
0780: 61 64 69 6e 67 20 70 72 65 66 65 72 65 64 70 61 ading preferedpa
0790: 72 65 6e 74 0a 09 73 74 61 74 65 20 72 65 61 64 rent..state read
07a0: 69 6e 67 20 72 65 76 69 73 69 6f 6e 0a 09 73 74 ing revision..st
07b0: 61 74 65 20 72 65 61 64 69 6e 67 20 72 65 76 69 ate reading revi
07c0: 73 69 6f 6e 62 72 61 6e 63 68 63 68 69 6c 64 72 sionbranchchildr
07d0: 65 6e 0a 09 73 74 61 74 65 20 72 65 61 64 69 6e en..state readin
07e0: 67 20 62 72 61 6e 63 68 0a 09 73 74 61 74 65 20 g branch..state
07f0: 72 65 61 64 69 6e 67 20 74 61 67 0a 0a 09 73 74 reading tag...st
0800: 61 74 65 20 77 72 69 74 69 6e 67 20 6e 6f 6f 70 ate writing noop
0810: 20 7b 0a 09 20 20 20 20 69 64 20 20 20 20 49 4e {.. id IN
0820: 54 45 47 45 52 20 4e 4f 54 20 4e 55 4c 4c 20 20 TEGER NOT NULL
0830: 50 52 49 4d 41 52 59 20 4b 45 59 2c 20 2d 2d 20 PRIMARY KEY, --
0840: 74 61 67 2f 62 72 61 6e 63 68 20 72 65 66 65 72 tag/branch refer
0850: 65 6e 63 65 0a 09 20 20 20 20 6e 6f 6f 70 20 20 ence.. noop
0860: 49 4e 54 45 47 45 52 20 4e 4f 54 20 4e 55 4c 4c INTEGER NOT NULL
0870: 0a 09 7d 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 ..}..return.
0880: 7d 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 68 6f }.. typemetho
0890: 64 20 6c 6f 61 64 20 7b 7d 20 7b 0a 09 23 20 50 d load {} {..# P
08a0: 61 73 73 20 6d 61 6e 61 67 65 72 20 69 6e 74 65 ass manager inte
08b0: 72 66 61 63 65 2e 20 45 78 65 63 75 74 65 64 20 rface. Executed
08c0: 74 6f 20 6c 6f 61 64 20 64 61 74 61 20 63 6f 6d to load data com
08d0: 70 75 74 65 64 20 62 79 0a 09 23 20 74 68 69 73 puted by..# this
08e0: 20 70 61 73 73 20 69 6e 74 6f 20 6d 65 6d 6f 72 pass into memor
08f0: 79 20 77 68 65 6e 20 74 68 69 73 20 70 61 73 73 y when this pass
0900: 20 69 73 20 73 6b 69 70 70 65 64 20 69 6e 73 74 is skipped inst
0910: 65 61 64 20 6f 66 0a 09 23 20 65 78 65 63 75 74 ead of..# execut
0920: 65 64 2e 0a 0a 09 23 20 54 68 65 20 72 65 73 75 ed....# The resu
0930: 6c 74 73 20 6f 66 20 74 68 69 73 20 70 61 73 73 lts of this pass
0940: 20 61 72 65 20 66 75 6c 6c 79 20 69 6e 20 74 68 are fully in th
0950: 65 20 70 65 72 73 69 73 74 65 6e 74 20 73 74 61 e persistent sta
0960: 74 65 2c 0a 09 23 20 74 68 65 72 65 20 69 73 20 te,..# there is
0970: 6e 6f 74 68 69 6e 67 20 74 6f 20 6c 6f 61 64 20 nothing to load
0980: 66 6f 72 20 74 68 65 20 6e 65 78 74 20 6f 6e 65 for the next one
0990: 2e 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a ...return. }.
09a0: 0a 20 20 20 20 74 79 70 65 6d 65 74 68 6f 64 20 . typemethod
09b0: 72 75 6e 20 7b 7d 20 7b 0a 09 23 20 50 61 73 73 run {} {..# Pass
09c0: 20 6d 61 6e 61 67 65 72 20 69 6e 74 65 72 66 61 manager interfa
09d0: 63 65 2e 20 45 78 65 63 75 74 65 64 20 74 6f 20 ce. Executed to
09e0: 70 65 72 66 6f 72 6d 20 74 68 65 0a 09 23 20 66 perform the..# f
09f0: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 6f 66 20 unctionality of
0a00: 74 68 65 20 70 61 73 73 2e 0a 0a 09 23 20 54 68 the pass....# Th
0a10: 65 20 72 65 6d 6f 76 61 6c 20 6f 66 20 65 78 63 e removal of exc
0a20: 6c 75 64 65 64 20 73 79 6d 62 6f 6c 73 20 61 6e luded symbols an
0a30: 64 20 65 76 65 72 79 74 68 69 6e 67 20 72 65 66 d everything ref
0a40: 65 72 65 6e 63 69 6e 67 0a 09 23 20 74 6f 20 74 erencing..# to t
0a50: 68 65 6d 20 69 73 20 64 6f 6e 65 20 63 6f 6d 70 hem is done comp
0a60: 6c 65 74 65 6c 79 20 69 6e 20 74 68 65 20 64 61 letely in the da
0a70: 74 61 62 61 73 65 2e 0a 0a 09 73 74 61 74 65 20 tabase....state
0a80: 74 72 61 6e 73 61 63 74 69 6f 6e 20 7b 0a 09 20 transaction {..
0a90: 20 20 20 46 69 6c 74 65 72 45 78 63 6c 75 64 65 FilterExclude
0aa0: 64 53 79 6d 62 6f 6c 73 0a 09 20 20 20 20 4d 75 dSymbols.. Mu
0ab0: 74 61 74 65 53 79 6d 62 6f 6c 73 0a 09 20 20 20 tateSymbols..
0ac0: 20 41 64 6a 75 73 74 50 61 72 65 6e 74 73 0a 09 AdjustParents..
0ad0: 20 20 20 20 52 65 66 69 6e 65 53 79 6d 62 6f 6c RefineSymbol
0ae0: 73 0a 0a 09 20 20 20 20 23 20 53 74 72 69 63 74 s... # Strict
0af0: 20 69 6e 74 65 67 72 69 74 79 20 65 6e 66 6f 72 integrity enfor
0b00: 63 65 73 20 74 68 61 74 20 61 6c 6c 20 6d 65 74 ces that all met
0b10: 61 20 65 6e 74 72 69 65 73 20 61 72 65 20 69 6e a entries are in
0b20: 0a 09 20 20 20 20 23 20 74 68 65 20 73 61 6d 65 .. # the same
0b30: 20 4c 4f 44 20 61 73 20 74 68 65 20 72 65 76 69 LOD as the revi
0b40: 73 69 6f 6e 20 75 73 69 6e 67 20 74 68 65 6d 2e sion using them.
0b50: 20 41 74 20 74 68 69 73 20 70 6f 69 6e 74 0a 09 At this point..
0b60: 20 20 20 20 23 20 74 68 69 73 20 6d 61 79 20 6e # this may n
0b70: 6f 74 20 62 65 20 74 72 75 65 20 61 6e 79 20 6c ot be true any l
0b80: 6f 6e 67 65 72 2e 20 49 66 20 61 20 4e 54 44 42 onger. If a NTDB
0b90: 20 77 61 73 20 65 78 63 6c 75 64 65 64 0a 09 20 was excluded..
0ba0: 20 20 20 23 20 74 68 65 6e 20 61 6c 6c 20 72 65 # then all re
0bb0: 76 69 73 69 6f 6e 73 20 69 74 20 73 68 61 72 65 visions it share
0bc0: 64 20 77 69 74 68 20 74 68 65 20 74 72 75 6e 6b d with the trunk
0bd0: 20 77 65 72 65 20 6d 6f 76 65 64 0a 09 20 20 20 were moved..
0be0: 20 23 20 74 6f 20 74 68 65 20 74 72 75 6e 6b 20 # to the trunk
0bf0: 4c 4f 44 2c 20 68 6f 77 65 76 65 72 20 74 68 65 LOD, however the
0c00: 69 72 20 6d 65 74 61 20 65 6e 74 72 69 65 73 20 ir meta entries
0c10: 77 69 6c 6c 20 73 74 69 6c 6c 0a 09 20 20 20 20 will still..
0c20: 23 20 72 65 66 65 72 20 74 6f 20 74 68 65 20 6e # refer to the n
0c30: 6f 77 20 67 6f 6e 65 20 4c 4f 44 20 73 79 6d 62 ow gone LOD symb
0c40: 6f 6c 2e 20 54 68 69 73 20 69 73 20 66 69 6e 65 ol. This is fine
0c50: 20 68 6f 77 65 76 65 72 2c 0a 09 20 20 20 20 23 however,.. #
0c60: 20 69 74 20 77 69 6c 6c 20 6e 6f 74 20 61 66 66 it will not aff
0c70: 65 63 74 20 6f 75 72 20 61 62 69 6c 69 74 79 20 ect our ability
0c80: 74 6f 20 75 73 65 20 74 68 65 20 6d 65 74 61 20 to use the meta
0c90: 65 6e 74 72 69 65 73 0a 09 20 20 20 20 23 20 74 entries.. # t
0ca0: 6f 20 64 69 73 74 69 6e 67 75 69 73 68 20 61 6e o distinguish an
0cb0: 64 20 67 72 6f 75 70 20 72 65 76 69 73 69 6f 6e d group revision
0cc0: 73 20 69 6e 74 6f 20 63 68 61 6e 67 65 73 65 74 s into changeset
0cd0: 73 2e 20 49 74 0a 09 20 20 20 20 23 20 73 68 6f s. It.. # sho
0ce0: 75 6c 64 20 62 65 20 6e 6f 74 65 64 20 74 68 61 uld be noted tha
0cf0: 74 20 77 65 20 63 61 6e 6e 6f 74 20 73 69 6d 70 t we cannot simp
0d00: 6c 79 20 73 77 69 74 63 68 20 74 68 65 20 6d 65 ly switch the me
0d10: 74 61 0a 09 20 20 20 20 23 20 65 6e 74 72 69 65 ta.. # entrie
0d20: 73 20 6f 76 65 72 20 74 6f 20 74 68 65 20 74 72 s over to the tr
0d30: 75 6e 6b 20 65 69 74 68 65 72 2c 20 61 73 20 74 unk either, as t
0d40: 68 61 74 20 6d 61 79 20 63 61 75 73 65 20 74 68 hat may cause th
0d50: 65 0a 09 20 20 20 20 23 20 6d 6f 64 69 66 69 65 e.. # modifie
0d60: 64 20 65 6e 74 72 69 65 73 20 74 6f 20 76 69 6f d entries to vio
0d70: 6c 61 74 65 20 74 68 65 20 75 6e 69 71 75 65 2d late the unique-
0d80: 6e 65 73 73 20 63 6f 6e 73 74 72 61 69 6e 0a 09 ness constrain..
0d90: 20 20 20 20 23 20 73 65 74 20 6f 6e 20 74 68 61 # set on tha
0da0: 74 20 74 61 62 6c 65 2e 0a 09 20 20 20 20 69 6e t table... in
0db0: 74 65 67 72 69 74 79 20 6d 65 74 61 72 65 6c 61 tegrity metarela
0dc0: 78 65 64 0a 09 7d 0a 0a 09 6c 6f 67 20 77 72 69 xed..}...log wri
0dd0: 74 65 20 31 20 66 69 6c 74 65 72 73 79 6d 20 22 te 1 filtersym "
0de0: 46 69 6c 74 65 72 69 6e 67 20 63 6f 6d 70 6c 65 Filtering comple
0df0: 74 65 64 22 0a 09 72 65 74 75 72 6e 0a 20 20 20 ted"..return.
0e00: 20 7d 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 68 }.. typemeth
0e10: 6f 64 20 64 69 73 63 61 72 64 20 7b 7d 20 7b 0a od discard {} {.
0e20: 09 23 20 50 61 73 73 20 6d 61 6e 61 67 65 72 20 .# Pass manager
0e30: 69 6e 74 65 72 66 61 63 65 2e 20 45 78 65 63 75 interface. Execu
0e40: 74 65 64 20 66 6f 72 20 61 6c 6c 20 70 61 73 73 ted for all pass
0e50: 65 73 20 61 66 74 65 72 20 74 68 65 0a 09 23 20 es after the..#
0e60: 72 75 6e 20 70 61 73 73 65 73 2c 20 74 6f 20 72 run passes, to r
0e70: 65 6d 6f 76 65 20 61 6c 6c 20 64 61 74 61 20 6f emove all data o
0e80: 66 20 74 68 69 73 20 70 61 73 73 20 66 72 6f 6d f this pass from
0e90: 20 74 68 65 20 73 74 61 74 65 2c 0a 09 23 20 61 the state,..# a
0ea0: 73 20 62 65 69 6e 67 20 6f 75 74 20 6f 66 20 64 s being out of d
0eb0: 61 74 65 2e 0a 09 72 65 74 75 72 6e 0a 20 20 20 ate...return.
0ec0: 20 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 }.. # # ## #
0ed0: 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 ## ##### #######
0ee0: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 0a # #############.
0ef0: 20 20 20 20 23 23 20 49 6e 74 65 72 6e 61 6c 20 ## Internal
0f00: 6d 65 74 68 6f 64 73 0a 0a 20 20 20 20 70 72 6f methods.. pro
0f10: 63 20 46 69 6c 74 65 72 45 78 63 6c 75 64 65 64 c FilterExcluded
0f20: 53 79 6d 62 6f 6c 73 20 7b 7d 20 7b 0a 09 6c 6f Symbols {} {..lo
0f30: 67 20 77 72 69 74 65 20 33 20 66 69 6c 74 65 72 g write 3 filter
0f40: 73 79 6d 20 22 46 69 6c 74 65 72 20 6f 75 74 20 sym "Filter out
0f50: 65 78 63 6c 75 64 65 64 20 73 79 6d 62 6f 6c 73 excluded symbols
0f60: 20 61 6e 64 20 75 73 65 72 73 22 0a 0a 09 23 20 and users"...#
0f70: 57 65 20 70 75 6c 6c 20 61 6c 6c 20 74 68 65 20 We pull all the
0f80: 65 78 63 6c 75 64 65 64 20 73 79 6d 62 6f 6c 73 excluded symbols
0f90: 20 74 6f 67 65 74 68 65 72 20 69 6e 74 6f 20 61 together into a
0fa0: 20 74 61 62 6c 65 20 66 6f 72 0a 09 23 20 65 61 table for..# ea
0fb0: 73 79 20 72 65 66 65 72 65 6e 63 65 20 62 79 20 sy reference by
0fc0: 74 68 65 20 75 70 63 6f 6d 69 6e 67 20 44 45 4c the upcoming DEL
0fd0: 45 54 45 20 61 6e 64 20 6f 74 68 65 72 20 73 74 ETE and other st
0fe0: 61 74 65 6d 65 6e 74 73 2e 0a 09 23 20 28 27 78 atements...# ('x
0ff0: 20 49 4e 20 74 61 62 6c 65 27 20 63 6c 61 75 73 IN table' claus
1000: 65 73 29 2e 0a 0a 09 73 65 74 20 65 78 63 6c 20 es)....set excl
1010: 5b 70 72 6f 6a 65 63 74 3a 3a 73 79 6d 20 65 78 [project::sym ex
1020: 63 6c 75 64 65 64 5d 0a 0a 09 73 74 61 74 65 20 cluded]...state
1030: 72 75 6e 20 7b 0a 09 20 20 20 20 43 52 45 41 54 run {.. CREAT
1040: 45 20 54 45 4d 50 4f 52 41 52 59 20 54 41 42 4c E TEMPORARY TABL
1050: 45 20 65 78 63 6c 75 64 65 64 73 79 6d 62 6f 6c E excludedsymbol
1060: 73 20 41 53 0a 09 20 20 20 20 53 45 4c 45 43 54 s AS.. SELECT
1070: 20 73 69 64 0a 09 20 20 20 20 46 52 4f 4d 20 20 sid.. FROM
1080: 20 73 79 6d 62 6f 6c 0a 09 20 20 20 20 57 48 45 symbol.. WHE
1090: 52 45 20 20 74 79 70 65 20 3d 20 24 65 78 63 6c RE type = $excl
10a0: 0a 09 7d 0a 0a 09 23 20 46 69 72 73 74 20 77 65 ..}...# First we
10b0: 20 68 61 76 65 20 74 6f 20 68 61 6e 64 6c 65 20 have to handle
10c0: 74 68 65 20 70 6f 73 73 69 62 69 6c 69 74 79 20 the possibility
10d0: 6f 66 20 61 6e 20 65 78 63 6c 75 64 65 64 0a 09 of an excluded..
10e0: 23 20 4e 54 44 42 2e 20 54 68 69 73 20 69 73 20 # NTDB. This is
10f0: 61 20 73 70 65 63 69 61 6c 20 73 70 65 63 69 61 a special specia
1100: 6c 20 63 61 73 65 20 74 68 65 72 65 20 77 65 20 l case there we
1110: 68 61 76 65 20 74 6f 0a 09 23 20 72 65 67 72 61 have to..# regra
1120: 66 74 20 74 68 65 20 72 65 76 69 73 69 6f 6e 73 ft the revisions
1130: 20 77 68 69 63 68 20 61 72 65 20 73 68 61 72 65 which are share
1140: 64 20 62 65 74 77 65 65 6e 20 74 68 65 20 4e 54 d between the NT
1150: 44 42 20 61 6e 64 0a 09 23 20 54 72 75 6e 6b 20 DB and..# Trunk
1160: 6f 6e 74 6f 20 74 68 65 20 74 72 75 6e 6b 2c 20 onto the trunk,
1170: 70 72 65 76 65 6e 74 69 6e 67 20 74 68 65 69 72 preventing their
1180: 20 64 65 6c 65 74 69 6f 6e 20 6c 61 74 65 72 2e deletion later.
1190: 20 57 65 0a 09 23 20 68 61 76 65 20 63 6f 64 65 We..# have code
11a0: 20 66 6f 72 20 74 68 61 74 20 69 6e 20 27 66 69 for that in 'fi
11b0: 6c 65 27 2c 20 68 6f 77 65 76 65 72 20 74 68 61 le', however tha
11c0: 74 20 6f 70 65 72 61 74 65 64 20 6f 6e 20 74 68 t operated on th
11d0: 65 0a 09 23 20 69 6e 2d 6d 65 6d 6f 72 79 20 72 e..# in-memory r
11e0: 65 76 69 73 69 6f 6e 20 6f 62 6a 65 63 74 73 2c evision objects,
11f0: 20 77 68 69 63 68 20 77 65 20 64 6f 20 6e 6f 74 which we do not
1200: 20 68 61 76 65 20 68 65 72 65 2e 20 57 65 20 64 have here. We d
1210: 6f 0a 09 23 20 74 68 65 20 73 61 6d 65 20 6e 6f o..# the same no
1220: 77 20 77 69 74 68 6f 75 74 20 6f 62 6a 65 63 74 w without object
1230: 2c 20 62 79 20 64 69 72 65 63 74 6c 79 20 6d 61 , by directly ma
1240: 6e 69 70 75 6c 61 74 69 6e 67 20 74 68 65 0a 09 nipulating the..
1250: 23 20 6c 69 6e 6b 73 20 69 6e 20 74 68 65 20 64 # links in the d
1260: 61 74 61 62 61 73 65 2e 0a 0a 09 61 72 72 61 79 atabase....array
1270: 20 73 65 74 20 6e 74 64 62 20 7b 7d 0a 09 61 72 set ntdb {}..ar
1280: 72 61 79 20 73 65 74 20 6c 69 6e 6b 20 7b 7d 0a ray set link {}.
1290: 0a 09 66 6f 72 65 61 63 68 20 7b 69 64 20 70 61 ..foreach {id pa
12a0: 72 65 6e 74 20 74 72 61 6e 73 66 65 72 7d 20 5b rent transfer} [
12b0: 73 74 61 74 65 20 72 75 6e 20 7b 0a 09 20 20 20 state run {..
12c0: 20 53 45 4c 45 43 54 20 52 2e 72 69 64 2c 20 52 SELECT R.rid, R
12d0: 2e 70 61 72 65 6e 74 2c 20 52 2e 64 62 63 68 69 .parent, R.dbchi
12e0: 6c 64 0a 09 20 20 20 20 46 52 4f 4d 20 20 72 65 ld.. FROM re
12f0: 76 69 73 69 6f 6e 20 52 2c 20 73 79 6d 62 6f 6c vision R, symbol
1300: 20 53 0a 09 20 20 20 20 57 48 45 52 45 20 52 2e S.. WHERE R.
1310: 6c 6f 64 20 3d 20 53 2e 73 69 64 0a 09 20 20 20 lod = S.sid..
1320: 20 41 4e 44 20 20 20 53 2e 73 69 64 20 49 4e 20 AND S.sid IN
1330: 65 78 63 6c 75 64 65 64 73 79 6d 62 6f 6c 73 0a excludedsymbols.
1340: 09 20 20 20 20 41 4e 44 20 20 20 52 2e 69 73 64 . AND R.isd
1350: 65 66 61 75 6c 74 0a 09 7d 5d 20 7b 0a 09 20 20 efault..}] {..
1360: 20 20 73 65 74 20 6e 74 64 62 28 24 69 64 29 20 set ntdb($id)
1370: 24 70 61 72 65 6e 74 0a 09 20 20 20 20 69 66 20 $parent.. if
1380: 7b 24 74 72 61 6e 73 66 65 72 20 65 71 20 22 22 {$transfer eq ""
1390: 7d 20 63 6f 6e 74 69 6e 75 65 0a 09 20 20 20 20 } continue..
13a0: 73 65 74 20 6c 69 6e 6b 28 24 69 64 29 20 24 74 set link($id) $t
13b0: 72 61 6e 73 66 65 72 0a 09 7d 0a 0a 09 66 6f 72 ransfer..}...for
13c0: 65 61 63 68 20 6a 6f 69 6e 74 20 5b 61 72 72 61 each joint [arra
13d0: 79 20 6e 61 6d 65 73 20 6c 69 6e 6b 5d 20 7b 0a y names link] {.
13e0: 09 20 20 20 20 23 20 54 68 65 20 6a 6f 69 6e 74 . # The joint
13f0: 73 20 61 72 65 20 74 68 65 20 68 69 67 68 65 73 s are the highes
1400: 74 20 4e 54 44 42 20 72 65 76 69 73 69 6f 6e 73 t NTDB revisions
1410: 20 77 68 69 63 68 20 61 72 65 0a 09 20 20 20 20 which are..
1420: 23 20 73 68 61 72 65 64 20 77 69 74 68 20 74 68 # shared with th
1430: 65 69 72 20 72 65 73 70 65 63 74 69 76 65 20 74 eir respective t
1440: 72 75 6e 6b 2e 20 57 65 20 64 69 73 63 6f 6e 6e runk. We disconn
1450: 65 63 74 20 66 72 6f 6d 0a 09 20 20 20 20 23 20 ect from.. #
1460: 74 68 65 69 72 20 4e 54 44 42 20 63 68 69 6c 64 their NTDB child
1470: 72 65 6e 2c 20 61 6e 64 20 6d 61 6b 65 20 74 68 ren, and make th
1480: 65 6d 20 70 61 72 65 6e 74 73 20 6f 66 20 74 68 em parents of th
1490: 65 69 72 0a 09 20 20 20 20 23 20 27 64 62 63 68 eir.. # 'dbch
14a0: 69 6c 64 27 2e 20 54 68 65 20 61 73 73 6f 63 69 ild'. The associ
14b0: 61 74 65 64 20 27 64 62 70 61 72 65 6e 74 27 20 ated 'dbparent'
14c0: 69 73 20 73 71 75 61 73 68 65 64 0a 09 20 20 20 is squashed..
14d0: 20 23 20 69 6e 73 74 65 61 64 2e 20 41 6c 6c 20 # instead. All
14e0: 70 61 72 65 6e 74 73 20 6f 66 20 74 68 65 20 6a parents of the j
14f0: 6f 69 6e 74 73 20 61 72 65 20 6d 6f 76 65 64 20 oints are moved
1500: 74 6f 20 74 68 65 0a 09 20 20 20 20 23 20 74 72 to the.. # tr
1510: 75 6e 6b 20 61 73 20 77 65 6c 6c 2e 0a 0a 09 20 unk as well....
1520: 20 20 20 73 65 74 20 74 6a 6f 69 6e 74 20 24 6c set tjoint $l
1530: 69 6e 6b 28 24 6a 6f 69 6e 74 29 0a 09 20 20 20 ink($joint)..
1540: 20 73 65 74 20 74 6c 6f 64 20 5b 6c 69 6e 64 65 set tlod [linde
1550: 78 20 5b 73 74 61 74 65 20 72 75 6e 20 7b 0a 09 x [state run {..
1560: 09 53 45 4c 45 43 54 20 6c 6f 64 20 46 52 4f 4d .SELECT lod FROM
1570: 20 72 65 76 69 73 69 6f 6e 20 57 48 45 52 45 20 revision WHERE
1580: 72 69 64 20 3d 20 24 74 6a 6f 69 6e 74 0a 09 20 rid = $tjoint..
1590: 20 20 20 7d 5d 20 30 5d 0a 0a 09 20 20 20 20 23 }] 0]... #
15a0: 20 43 6f 76 6e 65 72 74 20 64 62 2f 70 61 72 65 Covnert db/pare
15b0: 6e 74 2f 63 68 69 6c 64 20 69 6e 74 6f 20 72 65 nt/child into re
15c0: 67 75 6c 61 72 20 70 61 72 65 6e 74 2f 63 68 69 gular parent/chi
15d0: 6c 64 20 6c 69 6e 6b 73 2e 0a 09 20 20 20 20 73 ld links... s
15e0: 74 61 74 65 20 72 75 6e 20 7b 0a 09 09 55 50 44 tate run {...UPD
15f0: 41 54 45 20 72 65 76 69 73 69 6f 6e 20 53 45 54 ATE revision SET
1600: 20 64 62 70 61 72 65 6e 74 20 3d 20 4e 55 4c 4c dbparent = NULL
1610: 2c 20 70 61 72 65 6e 74 20 3d 20 24 6a 6f 69 6e , parent = $join
1620: 74 20 20 57 48 45 52 45 20 72 69 64 20 3d 20 24 t WHERE rid = $
1630: 74 6a 6f 69 6e 74 20 3b 0a 09 09 55 50 44 41 54 tjoint ;...UPDAT
1640: 45 20 72 65 76 69 73 69 6f 6e 20 53 45 54 20 64 E revision SET d
1650: 62 63 68 69 6c 64 20 20 3d 20 4e 55 4c 4c 2c 20 bchild = NULL,
1660: 63 68 69 6c 64 20 20 3d 20 24 74 6a 6f 69 6e 74 child = $tjoint
1670: 20 57 48 45 52 45 20 72 69 64 20 3d 20 24 6a 6f WHERE rid = $jo
1680: 69 6e 74 20 20 3b 0a 09 20 20 20 20 7d 0a 09 20 int ;.. }..
1690: 20 20 20 77 68 69 6c 65 20 7b 31 7d 20 7b 0a 09 while {1} {..
16a0: 09 23 20 4d 6f 76 65 20 74 68 65 20 4e 54 44 42 .# Move the NTDB
16b0: 20 74 72 75 6e 6b 20 72 65 76 69 73 69 6f 6e 73 trunk revisions
16c0: 20 74 6f 20 74 72 75 6e 6b 2e 0a 09 09 73 74 61 to trunk....sta
16d0: 74 65 20 72 75 6e 20 7b 0a 09 09 20 20 20 20 55 te run {... U
16e0: 50 44 41 54 45 20 72 65 76 69 73 69 6f 6e 20 53 PDATE revision S
16f0: 45 54 20 6c 6f 64 20 3d 20 24 74 6c 6f 64 2c 20 ET lod = $tlod,
1700: 69 73 64 65 66 61 75 6c 74 20 3d 20 30 20 57 48 isdefault = 0 WH
1710: 45 52 45 20 72 69 64 20 3d 20 24 6a 6f 69 6e 74 ERE rid = $joint
1720: 0a 09 09 7d 0a 09 09 73 65 74 20 6c 61 73 74 20 ...}...set last
1730: 24 6a 6f 69 6e 74 0a 09 09 73 65 74 20 6a 6f 69 $joint...set joi
1740: 6e 74 20 24 6e 74 64 62 28 24 6a 6f 69 6e 74 29 nt $ntdb($joint)
1750: 0a 09 09 69 66 20 7b 21 5b 69 6e 66 6f 20 65 78 ...if {![info ex
1760: 69 73 74 73 20 6e 74 64 62 28 24 6a 6f 69 6e 74 ists ntdb($joint
1770: 29 5d 7d 20 62 72 65 61 6b 0a 09 20 20 20 20 7d )]} break.. }
1780: 0a 0a 09 20 20 20 20 23 20 52 65 61 63 68 65 64 ... # Reached
1790: 20 74 68 65 20 4e 54 44 42 20 62 61 73 69 73 20 the NTDB basis
17a0: 69 6e 20 74 68 65 20 74 72 75 6e 6b 2e 20 46 69 in the trunk. Fi
17b0: 6e 61 6c 69 7a 65 20 74 68 65 0a 09 20 20 20 20 nalize the..
17c0: 23 20 70 61 72 65 6e 74 2f 63 68 69 6c 64 20 6c # parent/child l
17d0: 69 6e 6b 61 67 65 20 61 6e 64 20 73 71 75 61 73 inkage and squas
17e0: 68 20 74 68 65 20 62 72 61 6e 63 68 20 70 61 72 h the branch par
17f0: 65 6e 74 20 73 79 6d 62 6f 6c 0a 09 20 20 20 20 ent symbol..
1800: 23 20 72 65 66 65 72 65 6e 63 65 2e 0a 0a 09 20 # reference....
1810: 20 20 20 73 74 61 74 65 20 72 75 6e 20 7b 0a 09 state run {..
1820: 09 55 50 44 41 54 45 20 72 65 76 69 73 69 6f 6e .UPDATE revision
1830: 20 53 45 54 20 63 68 69 6c 64 20 20 20 3d 20 24 SET child = $
1840: 6c 61 73 74 20 57 48 45 52 45 20 72 69 64 20 3d last WHERE rid =
1850: 20 24 6a 6f 69 6e 74 20 3b 0a 09 09 55 50 44 41 $joint ;...UPDA
1860: 54 45 20 72 65 76 69 73 69 6f 6e 20 53 45 54 20 TE revision SET
1870: 62 70 61 72 65 6e 74 20 3d 20 4e 55 4c 4c 20 20 bparent = NULL
1880: 57 48 45 52 45 20 72 69 64 20 3d 20 24 6c 61 73 WHERE rid = $las
1890: 74 20 20 3b 0a 09 20 20 20 20 7d 0a 09 7d 0a 0a t ;.. }..}..
18a0: 09 23 20 4e 6f 77 20 74 68 61 74 20 74 68 65 20 .# Now that the
18b0: 73 70 65 63 69 61 6c 20 63 61 73 65 20 69 73 20 special case is
18c0: 64 6f 6e 65 20 77 65 20 63 61 6e 20 73 69 6d 70 done we can simp
18d0: 6c 79 20 6b 69 6c 6c 20 61 6c 6c 20 74 68 65 0a ly kill all the.
18e0: 09 23 20 72 65 76 69 73 69 6f 6e 73 2c 20 74 61 .# revisions, ta
18f0: 67 73 2c 20 61 6e 64 20 62 72 61 6e 63 68 65 73 gs, and branches
1900: 20 72 65 66 65 72 65 6e 63 69 6e 67 20 61 6e 79 referencing any
1910: 20 6f 66 20 74 68 65 0a 09 23 20 65 78 63 6c 75 of the..# exclu
1920: 64 65 64 20 73 79 6d 62 6f 6c 73 20 69 6e 20 73 ded symbols in s
1930: 6f 6d 65 20 77 61 79 2e 20 54 68 69 73 20 69 73 ome way. This is
1940: 20 65 61 73 79 20 61 73 20 77 65 20 64 6f 20 6e easy as we do n
1950: 6f 74 20 68 61 76 65 0a 09 23 20 74 6f 20 73 65 ot have..# to se
1960: 6c 65 63 74 20 74 68 65 6d 20 61 67 61 69 6e 20 lect them again
1970: 61 6e 64 20 61 67 61 69 6e 20 66 72 6f 6d 20 74 and again from t
1980: 68 65 20 62 61 73 65 20 74 61 62 6c 65 73 20 61 he base tables a
1990: 6e 79 0a 09 23 20 6c 6f 6e 67 65 72 2e 0a 0a 09 ny..# longer....
19a0: 73 74 61 74 65 20 72 75 6e 20 7b 0a 09 20 20 20 state run {..
19b0: 20 43 52 45 41 54 45 20 54 45 4d 50 4f 52 41 52 CREATE TEMPORAR
19c0: 59 20 54 41 42 4c 45 20 65 78 63 6c 75 64 65 64 Y TABLE excluded
19d0: 72 65 76 69 73 69 6f 6e 73 20 41 53 0a 09 20 20 revisions AS..
19e0: 20 20 53 45 4c 45 43 54 20 72 69 64 20 46 52 4f SELECT rid FRO
19f0: 4d 20 72 65 76 69 73 69 6f 6e 20 57 48 45 52 45 M revision WHERE
1a00: 20 6c 6f 64 20 49 4e 20 65 78 63 6c 75 64 65 64 lod IN excluded
1a10: 73 79 6d 62 6f 6c 73 3b 0a 0a 09 20 20 20 20 44 symbols;... D
1a20: 45 4c 45 54 45 20 46 52 4f 4d 20 72 65 76 69 73 ELETE FROM revis
1a30: 69 6f 6e 20 57 48 45 52 45 20 6c 6f 64 20 49 4e ion WHERE lod IN
1a40: 20 65 78 63 6c 75 64 65 64 73 79 6d 62 6f 6c 73 excludedsymbols
1a50: 3b 0a 09 20 20 20 20 44 45 4c 45 54 45 20 46 52 ;.. DELETE FR
1a60: 4f 4d 20 74 61 67 20 20 20 20 20 20 57 48 45 52 OM tag WHER
1a70: 45 20 6c 6f 64 20 49 4e 20 65 78 63 6c 75 64 65 E lod IN exclude
1a80: 64 73 79 6d 62 6f 6c 73 3b 0a 09 20 20 20 20 44 dsymbols;.. D
1a90: 45 4c 45 54 45 20 46 52 4f 4d 20 74 61 67 20 20 ELETE FROM tag
1aa0: 20 20 20 20 57 48 45 52 45 20 73 69 64 20 49 4e WHERE sid IN
1ab0: 20 65 78 63 6c 75 64 65 64 73 79 6d 62 6f 6c 73 excludedsymbols
1ac0: 3b 0a 09 20 20 20 20 44 45 4c 45 54 45 20 46 52 ;.. DELETE FR
1ad0: 4f 4d 20 62 72 61 6e 63 68 20 20 20 57 48 45 52 OM branch WHER
1ae0: 45 20 6c 6f 64 20 49 4e 20 65 78 63 6c 75 64 65 E lod IN exclude
1af0: 64 73 79 6d 62 6f 6c 73 3b 0a 09 20 20 20 20 44 dsymbols;.. D
1b00: 45 4c 45 54 45 20 46 52 4f 4d 20 62 72 61 6e 63 ELETE FROM branc
1b10: 68 20 20 20 57 48 45 52 45 20 73 69 64 20 49 4e h WHERE sid IN
1b20: 20 65 78 63 6c 75 64 65 64 73 79 6d 62 6f 6c 73 excludedsymbols
1b30: 3b 0a 0a 09 20 20 20 20 44 45 4c 45 54 45 20 46 ;... DELETE F
1b40: 52 4f 4d 20 72 65 76 69 73 69 6f 6e 62 72 61 6e ROM revisionbran
1b50: 63 68 63 68 69 6c 64 72 65 6e 20 57 48 45 52 45 chchildren WHERE
1b60: 20 72 69 64 20 20 49 4e 20 65 78 63 6c 75 64 65 rid IN exclude
1b70: 64 72 65 76 69 73 69 6f 6e 73 3b 0a 09 20 20 20 drevisions;..
1b80: 20 44 45 4c 45 54 45 20 46 52 4f 4d 20 72 65 76 DELETE FROM rev
1b90: 69 73 69 6f 6e 62 72 61 6e 63 68 63 68 69 6c 64 isionbranchchild
1ba0: 72 65 6e 20 57 48 45 52 45 20 62 72 69 64 20 49 ren WHERE brid I
1bb0: 4e 20 65 78 63 6c 75 64 65 64 72 65 76 69 73 69 N excludedrevisi
1bc0: 6f 6e 73 3b 0a 0a 09 20 20 20 20 44 52 4f 50 20 ons;... DROP
1bd0: 54 41 42 4c 45 20 65 78 63 6c 75 64 65 64 72 65 TABLE excludedre
1be0: 76 69 73 69 6f 6e 73 3b 0a 09 20 20 20 20 44 52 visions;.. DR
1bf0: 4f 50 20 54 41 42 4c 45 20 65 78 63 6c 75 64 65 OP TABLE exclude
1c00: 64 73 79 6d 62 6f 6c 73 3b 0a 09 7d 0a 09 72 65 dsymbols;..}..re
1c10: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 turn. }..
1c20: 70 72 6f 63 20 4d 75 74 61 74 65 53 79 6d 62 6f proc MutateSymbo
1c30: 6c 73 20 7b 7d 20 7b 0a 09 23 20 4e 65 78 74 2c ls {} {..# Next,
1c40: 20 6e 6f 77 20 74 68 61 74 20 77 65 20 6b 6e 6f now that we kno
1c50: 77 20 77 68 69 63 68 20 73 79 6d 62 6f 6c 73 20 w which symbols
1c60: 61 72 65 20 77 68 61 74 20 77 65 20 6c 6f 6f 6b are what we look
1c70: 20 66 6f 72 0a 09 23 20 66 69 6c 65 20 6c 65 76 for..# file lev
1c80: 65 6c 20 74 61 67 73 20 77 68 69 63 68 20 61 72 el tags which ar
1c90: 65 20 61 63 74 75 61 6c 6c 79 20 63 6f 6e 76 65 e actually conve
1ca0: 72 74 65 64 20 61 73 20 62 72 61 6e 63 68 65 73 rted as branches
1cb0: 0a 09 23 20 28 70 72 6f 6a 65 63 74 20 6c 65 76 ..# (project lev
1cc0: 65 6c 2c 20 61 6e 64 20 76 69 63 65 20 76 65 72 el, and vice ver
1cd0: 73 61 29 2c 20 61 6e 64 20 6d 6f 76 65 20 74 68 sa), and move th
1ce0: 65 6d 20 74 6f 20 74 68 65 0a 09 23 20 63 6f 72 em to the..# cor
1cf0: 72 65 63 74 20 74 61 62 6c 65 73 2e 0a 0a 09 23 rect tables....#
1d00: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 # ## ### #####
1d10: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 ######## #######
1d20: 23 23 23 23 23 23 0a 0a 09 6c 6f 67 20 77 72 69 ######...log wri
1d30: 74 65 20 33 20 66 69 6c 74 65 72 73 79 6d 20 22 te 3 filtersym "
1d40: 4d 75 74 61 74 65 20 73 79 6d 62 6f 6c 73 2c 20 Mutate symbols,
1d50: 70 72 65 70 61 72 61 74 69 6f 6e 22 0a 0a 09 73 preparation"...s
1d60: 65 74 20 62 72 61 6e 63 68 20 5b 70 72 6f 6a 65 et branch [proje
1d70: 63 74 3a 3a 73 79 6d 20 62 72 61 6e 63 68 5d 0a ct::sym branch].
1d80: 09 73 65 74 20 74 61 67 20 20 20 20 5b 70 72 6f .set tag [pro
1d90: 6a 65 63 74 3a 3a 73 79 6d 20 74 61 67 5d 0a 0a ject::sym tag]..
1da0: 09 73 65 74 20 74 61 67 73 74 6f 6d 75 74 61 74 .set tagstomutat
1db0: 65 20 5b 73 74 61 74 65 20 72 75 6e 20 7b 0a 09 e [state run {..
1dc0: 20 20 20 20 53 45 4c 45 43 54 20 54 2e 74 69 64 SELECT T.tid
1dd0: 2c 20 54 2e 66 69 64 2c 20 54 2e 6c 6f 64 2c 20 , T.fid, T.lod,
1de0: 54 2e 73 69 64 2c 20 54 2e 72 65 76 0a 09 20 20 T.sid, T.rev..
1df0: 20 20 46 52 4f 4d 20 74 61 67 20 54 2c 20 73 79 FROM tag T, sy
1e00: 6d 62 6f 6c 20 53 0a 09 20 20 20 20 57 48 45 52 mbol S.. WHER
1e10: 45 20 54 2e 73 69 64 20 3d 20 53 2e 73 69 64 0a E T.sid = S.sid.
1e20: 09 20 20 20 20 41 4e 44 20 53 2e 74 79 70 65 20 . AND S.type
1e30: 3d 20 24 62 72 61 6e 63 68 0a 09 7d 5d 0a 0a 09 = $branch..}]...
1e40: 73 65 74 20 62 72 61 6e 63 68 65 73 74 6f 6d 75 set branchestomu
1e50: 74 61 74 65 20 5b 73 74 61 74 65 20 72 75 6e 20 tate [state run
1e60: 7b 0a 09 20 20 20 20 53 45 4c 45 43 54 20 42 2e {.. SELECT B.
1e70: 62 69 64 2c 20 42 2e 66 69 64 2c 20 42 2e 6c 6f bid, B.fid, B.lo
1e80: 64 2c 20 42 2e 73 69 64 2c 20 42 2e 72 6f 6f 74 d, B.sid, B.root
1e90: 2c 20 42 2e 66 69 72 73 74 2c 20 42 2e 62 72 61 , B.first, B.bra
1ea0: 0a 09 20 20 20 20 46 52 4f 4d 20 62 72 61 6e 63 .. FROM branc
1eb0: 68 20 42 2c 20 73 79 6d 62 6f 6c 20 53 0a 09 20 h B, symbol S..
1ec0: 20 20 20 57 48 45 52 45 20 42 2e 73 69 64 20 3d WHERE B.sid =
1ed0: 20 53 2e 73 69 64 0a 09 20 20 20 20 41 4e 44 20 S.sid.. AND
1ee0: 53 2e 74 79 70 65 20 3d 20 24 74 61 67 0a 09 7d S.type = $tag..}
1ef0: 5d 0a 0a 09 6c 6f 67 20 77 72 69 74 65 20 34 20 ]...log write 4
1f00: 66 69 6c 74 65 72 73 79 6d 20 22 43 68 61 6e 67 filtersym "Chang
1f10: 69 6e 67 20 5b 6e 73 70 20 5b 65 78 70 72 20 7b ing [nsp [expr {
1f20: 5b 6c 6c 65 6e 67 74 68 20 24 74 61 67 73 74 6f [llength $tagsto
1f30: 6d 75 74 61 74 65 5d 2f 35 7d 5d 20 74 61 67 5d mutate]/5}] tag]
1f40: 20 69 6e 74 6f 20 62 72 61 6e 63 68 65 73 22 0a into branches".
1f50: 09 6c 6f 67 20 77 72 69 74 65 20 34 20 66 69 6c .log write 4 fil
1f60: 74 65 72 73 79 6d 20 22 43 68 61 6e 67 69 6e 67 tersym "Changing
1f70: 20 5b 6e 73 70 20 5b 65 78 70 72 20 7b 5b 6c 6c [nsp [expr {[ll
1f80: 65 6e 67 74 68 20 24 62 72 61 6e 63 68 65 73 74 ength $branchest
1f90: 6f 6d 75 74 61 74 65 5d 2f 37 7d 5d 20 62 72 61 omutate]/7}] bra
1fa0: 6e 63 68 20 62 72 61 6e 63 68 65 73 5d 20 69 6e nch branches] in
1fb0: 74 6f 20 74 61 67 73 22 0a 0a 09 23 20 23 20 23 to tags"...# # #
1fc0: 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 # ### ##### ####
1fd0: 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 #### ###########
1fe0: 23 23 0a 0a 09 6c 6f 67 20 77 72 69 74 65 20 33 ##...log write 3
1ff0: 20 66 69 6c 74 65 72 73 79 6d 20 22 4d 75 74 61 filtersym "Muta
2000: 74 65 20 74 61 67 73 20 74 6f 20 62 72 61 6e 63 te tags to branc
2010: 68 65 73 22 0a 0a 09 66 6f 72 65 61 63 68 20 7b hes"...foreach {
2020: 69 64 20 66 69 64 20 6c 6f 64 20 73 69 64 20 72 id fid lod sid r
2030: 65 76 7d 20 24 74 61 67 73 74 6f 6d 75 74 61 74 ev} $tagstomutat
2040: 65 20 7b 0a 09 20 20 20 20 73 74 61 74 65 20 72 e {.. state r
2050: 75 6e 20 7b 0a 09 09 44 45 4c 45 54 45 20 46 52 un {...DELETE FR
2060: 4f 4d 20 74 61 67 20 57 48 45 52 45 20 74 69 64 OM tag WHERE tid
2070: 20 3d 20 24 69 64 20 3b 0a 09 09 49 4e 53 45 52 = $id ;...INSER
2080: 54 20 49 4e 54 4f 20 62 72 61 6e 63 68 20 28 62 T INTO branch (b
2090: 69 64 2c 20 66 69 64 2c 20 20 6c 6f 64 2c 20 20 id, fid, lod,
20a0: 73 69 64 2c 20 20 72 6f 6f 74 2c 20 66 69 72 73 sid, root, firs
20b0: 74 2c 20 62 72 61 2c 20 70 6f 73 29 0a 09 09 56 t, bra, pos)...V
20c0: 41 4c 55 45 53 20 20 20 20 20 20 20 20 20 20 20 ALUES
20d0: 20 20 28 24 69 64 2c 20 24 66 69 64 2c 20 24 6c ($id, $fid, $l
20e0: 6f 64 2c 20 24 73 69 64 2c 20 24 72 65 76 2c 20 od, $sid, $rev,
20f0: 4e 55 4c 4c 2c 20 20 27 27 2c 20 20 2d 31 29 3b NULL, '', -1);
2100: 0a 09 20 20 20 20 7d 0a 09 7d 0a 0a 09 6c 6f 67 .. }..}...log
2110: 20 77 72 69 74 65 20 33 20 66 69 6c 74 65 72 73 write 3 filters
2120: 79 6d 20 22 4f 6b 2e 22 0a 0a 09 23 20 23 20 23 ym "Ok."...# # #
2130: 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 # ### ##### ####
2140: 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 #### ###########
2150: 23 23 0a 0a 09 6c 6f 67 20 77 72 69 74 65 20 33 ##...log write 3
2160: 20 66 69 6c 74 65 72 73 79 6d 20 22 4d 75 74 61 filtersym "Muta
2170: 74 65 20 62 72 61 6e 63 68 65 73 20 74 6f 20 74 te branches to t
2180: 61 67 73 22 0a 0a 09 66 6f 72 65 61 63 68 20 7b ags"...foreach {
2190: 69 64 20 66 69 64 20 6c 6f 64 20 73 69 64 20 72 id fid lod sid r
21a0: 6f 6f 74 20 66 69 72 73 74 20 62 72 61 7d 20 24 oot first bra} $
21b0: 62 72 61 6e 63 68 65 73 74 6f 6d 75 74 61 74 65 branchestomutate
21c0: 20 7b 0a 09 20 20 20 20 73 74 61 74 65 20 72 75 {.. state ru
21d0: 6e 20 7b 0a 09 09 44 45 4c 45 54 45 20 46 52 4f n {...DELETE FRO
21e0: 4d 20 62 72 61 6e 63 68 20 57 48 45 52 45 20 62 M branch WHERE b
21f0: 69 64 20 3d 20 24 69 64 20 3b 0a 09 09 49 4e 53 id = $id ;...INS
2200: 45 52 54 20 49 4e 54 4f 20 74 61 67 20 28 74 69 ERT INTO tag (ti
2210: 64 2c 20 66 69 64 2c 20 20 6c 6f 64 2c 20 20 73 d, fid, lod, s
2220: 69 64 2c 20 20 72 65 76 29 0a 09 09 56 41 4c 55 id, rev)...VALU
2230: 45 53 20 20 20 20 20 20 20 20 20 20 28 24 69 64 ES ($id
2240: 2c 20 24 66 69 64 2c 20 24 6c 6f 64 2c 20 24 73 , $fid, $lod, $s
2250: 69 64 2c 20 24 72 6f 6f 74 29 3b 0a 09 20 20 20 id, $root);..
2260: 20 7d 0a 09 7d 0a 0a 09 6c 6f 67 20 77 72 69 74 }..}...log writ
2270: 65 20 33 20 66 69 6c 74 65 72 73 79 6d 20 22 4f e 3 filtersym "O
2280: 6b 2e 22 0a 0a 09 23 20 23 20 23 23 20 23 23 23 k."...# # ## ###
2290: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 ##### ########
22a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 09 72 #############..r
22b0: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }..
22c0: 20 23 20 41 64 6a 75 73 74 20 74 68 65 20 70 61 # Adjust the pa
22d0: 72 65 6e 74 73 20 6f 66 20 73 79 6d 62 6f 6c 73 rents of symbols
22e0: 20 74 6f 20 74 68 65 69 72 20 70 72 65 66 65 72 to their prefer
22f0: 72 65 64 20 70 61 72 65 6e 74 73 2e 0a 0a 20 20 red parents...
2300: 20 20 23 20 49 66 20 61 20 66 69 6c 65 20 6c 65 # If a file le
2310: 76 65 6c 20 79 6d 62 6f 6c 20 68 61 73 20 61 20 vel ymbol has a
2320: 70 72 65 66 65 72 72 65 64 20 70 61 72 65 6e 74 preferred parent
2330: 20 74 68 61 74 20 69 73 20 64 69 66 66 65 72 65 that is differe
2340: 6e 74 0a 20 20 20 20 23 20 74 68 61 6e 20 69 74 nt. # than it
2350: 73 20 63 75 72 72 65 6e 74 20 70 61 72 65 6e 74 s current parent
2360: 2c 20 61 6e 64 20 69 66 20 74 68 65 20 70 72 65 , and if the pre
2370: 66 65 72 72 65 64 20 70 61 72 65 6e 74 20 69 73 ferred parent is
2380: 20 61 6e 0a 20 20 20 20 23 20 61 6c 6c 6f 77 65 an. # allowe
2390: 64 20 70 61 72 65 6e 74 20 6f 66 20 74 68 65 20 d parent of the
23a0: 73 79 6d 62 6f 6c 20 69 6e 20 74 68 69 73 20 66 symbol in this f
23b0: 69 6c 65 2c 20 74 68 65 6e 20 77 65 20 67 72 61 ile, then we gra
23c0: 66 74 20 74 68 65 0a 20 20 20 20 23 20 61 53 79 ft the. # aSy
23d0: 6d 62 6f 6c 20 6f 6e 74 6f 20 69 74 73 20 70 72 mbol onto its pr
23e0: 65 66 65 72 72 65 64 20 70 61 72 65 6e 74 2e 0a eferred parent..
23f0: 0a 20 20 20 20 70 72 6f 63 20 41 64 6a 75 73 74 . proc Adjust
2400: 50 61 72 65 6e 74 73 20 7b 7d 20 7b 0a 09 6c 6f Parents {} {..lo
2410: 67 20 77 72 69 74 65 20 33 20 66 69 6c 74 65 72 g write 3 filter
2420: 73 79 6d 20 22 41 64 6a 75 73 74 20 70 61 72 65 sym "Adjust pare
2430: 6e 74 73 2c 20 6c 6f 61 64 69 6e 67 20 64 61 74 nts, loading dat
2440: 61 20 69 6e 20 70 72 65 70 61 72 61 74 69 6f 6e a in preparation
2450: 22 0a 0a 09 23 20 57 65 20 70 75 6c 6c 20 69 6d "...# We pull im
2460: 70 6f 72 74 61 6e 74 20 6d 61 70 73 20 6f 6e 63 portant maps onc
2470: 65 20 69 6e 74 6f 20 6d 65 6d 6f 72 79 20 73 6f e into memory so
2480: 20 74 68 61 74 20 77 65 20 64 6f 20 71 75 69 63 that we do quic
2490: 6b 0a 09 23 20 68 61 73 68 20 6c 6f 6f 6b 75 70 k..# hash lookup
24a0: 20 6c 61 74 65 72 20 77 68 65 6e 20 70 72 6f 63 later when proc
24b0: 65 73 73 69 6e 67 20 74 68 65 20 67 72 61 66 74 essing the graft
24c0: 20 63 61 6e 64 69 64 61 74 65 73 2e 0a 0a 09 23 candidates....#
24d0: 20 54 61 67 2f 42 72 61 6e 63 68 20 6e 61 6d 65 Tag/Branch name
24e0: 73 20 2e 2e 2e 0a 09 61 72 72 61 79 20 73 65 74 s .....array set
24f0: 20 73 6e 20 5b 73 74 61 74 65 20 72 75 6e 20 7b sn [state run {
2500: 20 53 45 4c 45 43 54 20 54 2e 74 69 64 2c 20 53 SELECT T.tid, S
2510: 2e 6e 61 6d 65 20 46 52 4f 4d 20 74 61 67 20 54 .name FROM tag T
2520: 2c 20 20 20 20 73 79 6d 62 6f 6c 20 53 20 57 48 , symbol S WH
2530: 45 52 45 20 54 2e 73 69 64 20 3d 20 53 2e 73 69 ERE T.sid = S.si
2540: 64 20 7d 5d 0a 09 61 72 72 61 79 20 73 65 74 20 d }]..array set
2550: 73 6e 20 5b 73 74 61 74 65 20 72 75 6e 20 7b 20 sn [state run {
2560: 53 45 4c 45 43 54 20 42 2e 62 69 64 2c 20 53 2e SELECT B.bid, S.
2570: 6e 61 6d 65 20 46 52 4f 4d 20 62 72 61 6e 63 68 name FROM branch
2580: 20 42 2c 20 73 79 6d 62 6f 6c 20 53 20 57 48 45 B, symbol S WHE
2590: 52 45 20 42 2e 73 69 64 20 3d 20 53 2e 73 69 64 RE B.sid = S.sid
25a0: 20 7d 5d 0a 09 23 20 53 79 6d 62 6f 6c 20 6e 61 }]..# Symbol na
25b0: 6d 65 73 20 2e 2e 2e 0a 09 61 72 72 61 79 20 73 mes .....array s
25c0: 65 74 20 73 78 20 5b 73 74 61 74 65 20 72 75 6e et sx [state run
25d0: 20 7b 20 53 45 4c 45 43 54 20 4c 2e 73 69 64 2c { SELECT L.sid,
25e0: 20 4c 2e 6e 61 6d 65 20 46 52 4f 4d 20 73 79 6d L.name FROM sym
25f0: 62 6f 6c 20 4c 20 7d 5d 0a 09 23 20 46 69 6c 65 bol L }]..# File
2600: 73 20 61 6e 64 20 70 72 6f 6a 65 63 74 73 2e 0a s and projects..
2610: 09 61 72 72 61 79 20 73 65 74 20 66 70 6e 20 7b .array set fpn {
2620: 7d 0a 09 66 6f 72 65 61 63 68 20 7b 69 64 20 66 }..foreach {id f
2630: 6e 20 70 6e 7d 20 5b 73 74 61 74 65 20 72 75 6e n pn} [state run
2640: 20 7b 0a 09 09 53 45 4c 45 43 54 20 46 2e 66 69 {...SELECT F.fi
2650: 64 2c 20 46 2e 6e 61 6d 65 2c 20 50 2e 6e 61 6d d, F.name, P.nam
2660: 65 0a 09 09 46 52 4f 4d 20 20 20 66 69 6c 65 20 e...FROM file
2670: 46 2c 20 70 72 6f 6a 65 63 74 20 50 0a 09 09 57 F, project P...W
2680: 48 45 52 45 20 20 46 2e 70 69 64 20 3d 20 50 2e HERE F.pid = P.
2690: 70 69 64 0a 09 7d 5d 20 7b 20 73 65 74 20 66 70 pid..}] { set fp
26a0: 6e 28 24 69 64 29 20 5b 6c 69 73 74 20 24 66 6e n($id) [list $fn
26b0: 20 24 70 6e 5d 20 7d 0a 0a 09 73 65 74 20 74 61 $pn] }...set ta
26c0: 67 73 74 6f 61 64 6a 75 73 74 20 5b 73 74 61 74 gstoadjust [stat
26d0: 65 20 72 75 6e 20 7b 0a 09 20 20 20 20 53 45 4c e run {.. SEL
26e0: 45 43 54 20 54 2e 74 69 64 2c 20 54 2e 66 69 64 ECT T.tid, T.fid
26f0: 2c 20 54 2e 6c 6f 64 2c 20 50 2e 70 69 64 2c 20 , T.lod, P.pid,
2700: 53 2e 6e 61 6d 65 2c 20 52 2e 72 65 76 2c 20 52 S.name, R.rev, R
2710: 2e 72 69 64 0a 09 20 20 20 20 46 52 4f 4d 20 74 .rid.. FROM t
2720: 61 67 20 54 2c 20 70 72 65 66 65 72 65 64 70 61 ag T, preferedpa
2730: 72 65 6e 74 20 50 2c 20 73 79 6d 62 6f 6c 20 53 rent P, symbol S
2740: 2c 20 72 65 76 69 73 69 6f 6e 20 52 0a 09 20 20 , revision R..
2750: 20 20 57 48 45 52 45 20 54 2e 73 69 64 20 3d 20 WHERE T.sid =
2760: 50 2e 73 69 64 0a 09 20 20 20 20 41 4e 44 20 20 P.sid.. AND
2770: 20 54 2e 6c 6f 64 20 21 3d 20 50 2e 70 69 64 0a T.lod != P.pid.
2780: 09 20 20 20 20 41 4e 44 20 20 20 50 2e 70 69 64 . AND P.pid
2790: 20 3d 20 53 2e 73 69 64 0a 09 20 20 20 20 41 4e = S.sid.. AN
27a0: 44 20 20 20 53 2e 6e 61 6d 65 20 21 3d 20 27 3a D S.name != ':
27b0: 74 72 75 6e 6b 3a 27 0a 09 20 20 20 20 41 4e 44 trunk:'.. AND
27c0: 20 20 20 54 2e 72 65 76 20 3d 20 52 2e 72 69 64 T.rev = R.rid
27d0: 09 0a 09 7d 5d 0a 0a 09 73 65 74 20 62 72 61 6e ...}]...set bran
27e0: 63 68 65 73 74 6f 61 64 6a 75 73 74 20 5b 73 74 chestoadjust [st
27f0: 61 74 65 20 72 75 6e 20 7b 0a 09 20 20 20 20 53 ate run {.. S
2800: 45 4c 45 43 54 20 42 2e 62 69 64 2c 20 42 2e 66 ELECT B.bid, B.f
2810: 69 64 2c 20 42 2e 6c 6f 64 2c 20 42 2e 70 6f 73 id, B.lod, B.pos
2820: 2c 20 50 2e 70 69 64 2c 20 53 2e 6e 61 6d 65 2c , P.pid, S.name,
2830: 20 52 2e 72 65 76 2c 20 52 2e 72 69 64 0a 09 20 R.rev, R.rid..
2840: 20 20 20 46 52 4f 4d 20 62 72 61 6e 63 68 20 42 FROM branch B
2850: 2c 20 70 72 65 66 65 72 65 64 70 61 72 65 6e 74 , preferedparent
2860: 20 50 2c 20 73 79 6d 62 6f 6c 20 53 2c 20 72 65 P, symbol S, re
2870: 76 69 73 69 6f 6e 20 52 0a 09 20 20 20 20 57 48 vision R.. WH
2880: 45 52 45 20 42 2e 73 69 64 20 3d 20 50 2e 73 69 ERE B.sid = P.si
2890: 64 0a 09 20 20 20 20 41 4e 44 20 20 20 42 2e 6c d.. AND B.l
28a0: 6f 64 20 21 3d 20 50 2e 70 69 64 0a 09 20 20 20 od != P.pid..
28b0: 20 41 4e 44 20 20 20 50 2e 70 69 64 20 3d 20 53 AND P.pid = S
28c0: 2e 73 69 64 0a 09 20 20 20 20 41 4e 44 20 20 20 .sid.. AND
28d0: 53 2e 6e 61 6d 65 20 21 3d 20 27 3a 74 72 75 6e S.name != ':trun
28e0: 6b 3a 27 0a 09 20 20 20 20 41 4e 44 20 20 20 42 k:'.. AND B
28f0: 2e 72 6f 6f 74 20 3d 20 52 2e 72 69 64 09 0a 09 .root = R.rid...
2900: 7d 5d 0a 0a 09 73 65 74 20 74 6d 61 78 20 5b 65 }]...set tmax [e
2910: 78 70 72 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 74 xpr {[llength $t
2920: 61 67 73 74 6f 61 64 6a 75 73 74 5d 20 2f 20 37 agstoadjust] / 7
2930: 7d 5d 0a 09 73 65 74 20 62 6d 61 78 20 5b 65 78 }]..set bmax [ex
2940: 70 72 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 62 72 pr {[llength $br
2950: 61 6e 63 68 65 73 74 6f 61 64 6a 75 73 74 5d 20 anchestoadjust]
2960: 2f 20 38 7d 5d 0a 0a 09 6c 6f 67 20 77 72 69 74 / 8}]...log writ
2970: 65 20 34 20 66 69 6c 74 65 72 73 79 6d 20 22 52 e 4 filtersym "R
2980: 65 70 61 72 65 6e 74 69 6e 67 20 61 74 20 6d 6f eparenting at mo
2990: 73 74 20 5b 6e 73 70 20 24 74 6d 61 78 20 74 61 st [nsp $tmax ta
29a0: 67 5d 22 0a 09 6c 6f 67 20 77 72 69 74 65 20 34 g]"..log write 4
29b0: 20 66 69 6c 74 65 72 73 79 6d 20 22 52 65 70 61 filtersym "Repa
29c0: 72 65 6e 74 69 6e 67 20 61 74 20 6d 6f 73 74 20 renting at most
29d0: 5b 6e 73 70 20 24 62 6d 61 78 20 62 72 61 6e 63 [nsp $bmax branc
29e0: 68 20 62 72 61 6e 63 68 65 73 5d 22 0a 0a 09 6c h branches]"...l
29f0: 6f 67 20 77 72 69 74 65 20 33 20 66 69 6c 74 65 og write 3 filte
2a00: 72 73 79 6d 20 22 41 64 6a 75 73 74 20 74 61 67 rsym "Adjust tag
2a10: 20 70 61 72 65 6e 74 73 22 0a 0a 09 23 20 46 69 parents"...# Fi
2a20: 6e 64 20 74 68 65 20 74 61 67 73 20 77 68 6f 73 nd the tags whos
2a30: 65 20 63 75 72 72 65 6e 74 20 70 61 72 65 6e 74 e current parent
2a40: 20 28 6c 6f 64 29 20 69 73 20 6e 6f 74 20 74 68 (lod) is not th
2a50: 65 20 70 72 65 66 65 72 65 64 0a 09 23 20 70 61 e prefered..# pa
2a60: 72 65 6e 74 2c 20 74 68 65 20 70 72 65 66 65 72 rent, the prefer
2a70: 65 64 20 70 61 72 65 6e 74 20 69 73 20 6e 6f 74 ed parent is not
2a80: 20 74 68 65 20 74 72 75 6e 6b 2c 20 61 6e 64 20 the trunk, and
2a90: 74 68 65 0a 09 23 20 70 72 65 66 65 72 65 64 20 the..# prefered
2aa0: 70 61 72 65 6e 74 20 69 73 20 61 20 70 6f 73 73 parent is a poss
2ab0: 69 62 6c 65 20 70 61 72 65 6e 74 20 70 65 72 20 ible parent per
2ac0: 74 68 65 20 74 61 67 27 73 20 72 65 76 69 73 69 the tag's revisi
2ad0: 6f 6e 2e 0a 0a 09 73 65 74 20 66 6d 74 20 25 5b on....set fmt %[
2ae0: 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20 24 74 string length $t
2af0: 6d 61 78 5d 73 0a 09 73 65 74 20 6d 78 73 20 5b max]s..set mxs [
2b00: 66 6f 72 6d 61 74 20 24 66 6d 74 20 24 74 6d 61 format $fmt $tma
2b10: 78 5d 0a 0a 09 73 65 74 20 6e 20 30 0a 09 66 6f x]...set n 0..fo
2b20: 72 65 61 63 68 20 7b 69 64 20 66 69 64 20 6c 6f reach {id fid lo
2b30: 64 20 70 69 64 20 70 72 65 66 65 72 65 64 6e 61 d pid preferedna
2b40: 6d 65 20 72 65 76 6e 72 20 72 69 64 7d 20 24 74 me revnr rid} $t
2b50: 61 67 73 74 6f 61 64 6a 75 73 74 20 7b 0a 0a 09 agstoadjust {...
2b60: 20 20 20 20 23 20 42 4f 54 54 4c 45 2d 4e 45 43 # BOTTLE-NEC
2b70: 4b 20 2e 2e 2e 0a 09 20 20 20 20 23 0a 09 20 20 K ..... #..
2b80: 20 20 23 20 54 68 65 20 63 68 65 63 6b 20 69 66 # The check if
2b90: 20 74 68 65 20 63 61 6e 64 69 64 61 74 65 20 28 the candidate (
2ba0: 70 69 64 29 20 69 73 20 74 72 75 6c 79 20 76 69 pid) is truly vi
2bb0: 61 62 6c 65 20 69 73 0a 09 20 20 20 20 23 20 62 able is.. # b
2bc0: 61 73 65 64 20 66 69 6e 64 69 6e 67 20 74 68 65 ased finding the
2bd0: 20 62 72 61 6e 63 68 20 61 73 20 70 6f 73 73 69 branch as possi
2be0: 62 6c 65 20 70 61 72 65 6e 74 2c 20 61 6e 64 20 ble parent, and
2bf0: 64 6f 6e 65 0a 09 20 20 20 20 23 20 6e 6f 77 20 done.. # now
2c00: 69 6e 73 74 65 61 64 20 6f 66 20 61 73 20 70 61 instead of as pa
2c10: 72 74 20 6f 66 20 74 68 65 20 61 6c 72 65 61 64 rt of the alread
2c20: 79 20 63 6f 6d 70 6c 65 78 20 6a 6f 69 6e 2e 0a y complex join..
2c30: 09 20 20 20 20 23 0a 09 20 20 20 20 23 20 2e 2e . #.. # ..
2c40: 2e 20 41 4e 44 20 50 2e 70 69 64 20 49 4e 20 28 . AND P.pid IN (
2c50: 53 45 4c 45 43 54 20 42 2e 73 69 64 0a 09 20 20 SELECT B.sid..
2c60: 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 #
2c70: 20 20 20 20 20 20 46 52 4f 4d 20 62 72 61 6e 63 FROM branc
2c80: 68 20 42 0a 09 20 20 20 20 23 20 20 20 20 20 20 h B.. #
2c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 57 48 45 WHE
2ca0: 52 45 20 42 2e 72 6f 6f 74 20 3d 20 52 2e 72 69 RE B.root = R.ri
2cb0: 64 29 0a 0a 09 20 20 20 20 69 66 20 7b 21 5b 6c d)... if {![l
2cc0: 69 6e 64 65 78 20 5b 73 74 61 74 65 20 72 75 6e index [state run
2cd0: 20 7b 0a 09 09 53 45 4c 45 43 54 20 43 4f 55 4e {...SELECT COUN
2ce0: 54 28 2a 29 0a 09 09 46 52 4f 4d 20 62 72 61 6e T(*)...FROM bran
2cf0: 63 68 20 42 0a 09 09 57 48 45 52 45 20 20 42 2e ch B...WHERE B.
2d00: 73 69 64 20 20 3d 20 24 70 69 64 0a 09 09 41 4e sid = $pid...AN
2d10: 44 20 20 20 20 42 2e 72 6f 6f 74 20 3d 20 24 72 D B.root = $r
2d20: 69 64 0a 09 20 20 20 20 7d 5d 20 30 5d 7d 20 7b id.. }] 0]} {
2d30: 0a 09 09 69 6e 63 72 20 74 6d 61 78 20 2d 31 0a ...incr tmax -1.
2d40: 09 09 73 65 74 20 20 6d 78 73 20 5b 66 6f 72 6d ..set mxs [form
2d50: 61 74 20 24 66 6d 74 20 24 74 6d 61 78 5d 0a 09 at $fmt $tmax]..
2d60: 09 63 6f 6e 74 69 6e 75 65 0a 09 20 20 20 20 7d .continue.. }
2d70: 0a 0a 09 20 20 20 20 23 0a 09 20 20 20 20 23 20 ... #.. #
2d80: 42 4f 54 54 4c 45 2d 4e 45 43 4b 20 2e 2e 2e 0a BOTTLE-NECK ....
2d90: 0a 09 20 20 20 20 23 20 54 68 65 20 6e 61 6d 65 .. # The name
2da0: 73 20 66 6f 72 20 75 73 65 20 69 6e 20 74 68 65 s for use in the
2db0: 20 6c 6f 67 20 6f 75 74 70 75 74 20 61 72 65 20 log output are
2dc0: 72 65 74 72 69 65 76 65 64 0a 09 20 20 20 20 23 retrieved.. #
2dd0: 20 73 65 70 61 72 61 74 65 6c 79 2c 20 74 6f 20 separately, to
2de0: 6b 65 65 70 20 74 68 65 20 6a 6f 69 6e 20 73 65 keep the join se
2df0: 6c 65 63 74 69 6e 67 20 74 68 65 20 61 64 6a 75 lecting the adju
2e00: 73 74 61 62 6c 65 0a 09 20 20 20 20 23 20 74 61 stable.. # ta
2e10: 67 73 20 73 6d 61 6c 6c 2c 20 6e 6f 74 20 62 75 gs small, not bu
2e20: 72 64 65 6e 65 64 20 77 69 74 68 20 74 68 65 20 rdened with the
2e30: 64 65 72 65 66 65 72 65 6e 63 69 6e 67 20 6f 66 dereferencing of
2e40: 20 6c 69 6e 6b 73 0a 09 20 20 20 20 23 20 74 6f links.. # to
2e50: 20 6e 61 6d 65 2e 0a 0a 09 20 20 20 20 73 65 74 name.... set
2e60: 20 74 61 67 6e 61 6d 65 20 24 73 6e 28 24 69 64 tagname $sn($id
2e70: 29 0a 09 20 20 20 20 73 65 74 20 6f 6c 64 6e 61 ).. set oldna
2e80: 6d 65 20 24 73 78 28 24 6c 6f 64 29 0a 09 20 20 me $sx($lod)..
2e90: 20 20 73 74 72 75 63 74 3a 3a 6c 69 73 74 20 61 struct::list a
2ea0: 73 73 69 67 6e 20 24 66 70 6e 28 24 66 69 64 29 ssign $fpn($fid)
2eb0: 20 66 6e 61 6d 65 20 70 72 6e 61 6d 65 0a 0a 09 fname prname...
2ec0: 20 20 20 20 23 20 44 6f 20 74 68 65 20 67 72 61 # Do the gra
2ed0: 66 74 69 6e 67 2e 0a 0a 09 20 20 20 20 6c 6f 67 fting.... log
2ee0: 20 77 72 69 74 65 20 34 20 66 69 6c 74 65 72 73 write 4 filters
2ef0: 79 6d 20 22 5c 5b 5b 66 6f 72 6d 61 74 20 24 66 ym "\[[format $f
2f00: 6d 74 20 24 6e 5d 2f 24 6d 78 73 5c 5d 20 24 70 mt $n]/$mxs\] $p
2f10: 72 6e 61 6d 65 20 3a 20 47 72 61 66 74 69 6e 67 rname : Grafting
2f20: 20 74 61 67 20 27 24 74 61 67 6e 61 6d 65 27 20 tag '$tagname'
2f30: 6f 6e 20 24 66 6e 61 6d 65 2f 24 72 65 76 6e 72 on $fname/$revnr
2f40: 20 66 72 6f 6d 20 27 24 6f 6c 64 6e 61 6d 65 27 from '$oldname'
2f50: 20 6f 6e 74 6f 20 27 24 70 72 65 66 65 72 65 64 onto '$prefered
2f60: 6e 61 6d 65 27 22 0a 09 20 20 20 20 73 74 61 74 name'".. stat
2f70: 65 20 72 75 6e 20 7b 20 55 50 44 41 54 45 20 74 e run { UPDATE t
2f80: 61 67 20 53 45 54 20 6c 6f 64 20 3d 20 24 70 69 ag SET lod = $pi
2f90: 64 20 57 48 45 52 45 20 74 69 64 20 3d 20 24 69 d WHERE tid = $i
2fa0: 64 20 3b 20 7d 0a 09 20 20 20 20 69 6e 63 72 20 d ; }.. incr
2fb0: 6e 0a 09 7d 0a 0a 09 6c 6f 67 20 77 72 69 74 65 n..}...log write
2fc0: 20 33 20 66 69 6c 74 65 72 73 79 6d 20 22 52 65 3 filtersym "Re
2fd0: 70 61 72 65 6e 74 65 64 20 5b 6e 73 70 20 24 6e parented [nsp $n
2fe0: 20 74 61 67 5d 22 0a 0a 09 6c 6f 67 20 77 72 69 tag]"...log wri
2ff0: 74 65 20 33 20 66 69 6c 74 65 72 73 79 6d 20 22 te 3 filtersym "
3000: 41 64 6a 75 73 74 20 62 72 61 6e 63 68 20 70 61 Adjust branch pa
3010: 72 65 6e 74 73 22 0a 0a 09 23 20 46 69 6e 64 20 rents"...# Find
3020: 74 68 65 20 62 72 61 6e 63 68 65 73 20 77 68 6f the branches who
3030: 73 65 20 63 75 72 72 65 6e 74 20 70 61 72 65 6e se current paren
3040: 74 20 28 6c 6f 64 29 20 69 73 20 6e 6f 74 20 74 t (lod) is not t
3050: 68 65 0a 09 23 20 70 72 65 66 65 72 65 64 20 70 he..# prefered p
3060: 61 72 65 6e 74 2c 20 74 68 65 20 70 72 65 66 65 arent, the prefe
3070: 72 65 64 20 70 61 72 65 6e 74 20 69 73 20 6e 6f red parent is no
3080: 74 20 74 68 65 20 74 72 75 6e 6b 2c 20 61 6e 64 t the trunk, and
3090: 0a 09 23 20 74 68 65 20 70 72 65 66 65 72 65 64 ..# the prefered
30a0: 20 70 61 72 65 6e 74 20 69 73 20 61 20 70 6f 73 parent is a pos
30b0: 73 69 62 6c 65 20 70 61 72 65 6e 74 20 70 65 72 sible parent per
30c0: 20 74 68 65 20 62 72 61 6e 63 68 27 73 0a 09 23 the branch's..#
30d0: 20 72 65 76 69 73 69 6f 6e 2e 0a 0a 09 73 65 74 revision....set
30e0: 20 66 6d 74 20 25 5b 73 74 72 69 6e 67 20 6c 65 fmt %[string le
30f0: 6e 67 74 68 20 24 62 6d 61 78 5d 73 0a 09 73 65 ngth $bmax]s..se
3100: 74 20 6d 78 73 20 5b 66 6f 72 6d 61 74 20 24 66 t mxs [format $f
3110: 6d 74 20 24 62 6d 61 78 5d 0a 0a 09 73 65 74 20 mt $bmax]...set
3120: 6e 20 30 0a 09 66 6f 72 65 61 63 68 20 7b 69 64 n 0..foreach {id
3130: 20 66 69 64 20 6c 6f 64 20 70 6f 73 20 70 69 64 fid lod pos pid
3140: 20 70 72 65 66 65 72 65 64 6e 61 6d 65 20 72 65 preferedname re
3150: 76 6e 72 20 72 69 64 7d 20 24 62 72 61 6e 63 68 vnr rid} $branch
3160: 65 73 74 6f 61 64 6a 75 73 74 20 7b 0a 0a 09 20 estoadjust {...
3170: 20 20 20 23 20 42 4f 54 54 4c 45 2d 4e 45 43 4b # BOTTLE-NECK
3180: 20 2e 2e 2e 0a 09 20 20 20 20 23 0a 09 20 20 20 ..... #..
3190: 20 23 20 54 68 65 20 63 68 65 63 6b 20 69 66 20 # The check if
31a0: 74 68 65 20 63 61 6e 64 69 64 61 74 65 20 28 70 the candidate (p
31b0: 69 64 29 20 69 73 20 74 72 75 6c 79 20 76 69 61 id) is truly via
31c0: 62 6c 65 20 69 73 0a 09 20 20 20 20 23 20 62 61 ble is.. # ba
31d0: 73 65 64 20 6f 6e 20 74 68 65 20 62 72 61 6e 63 sed on the branc
31e0: 68 20 70 6f 73 69 74 69 6f 6e 73 20 69 6e 20 74 h positions in t
31f0: 68 65 20 73 70 61 77 6e 69 6e 67 20 72 65 76 69 he spawning revi
3200: 73 69 6f 6e 2c 0a 09 20 20 20 20 23 20 61 6e 64 sion,.. # and
3210: 20 64 6f 6e 65 20 6e 6f 77 20 69 6e 73 74 65 61 done now instea
3220: 64 20 6f 66 20 61 73 20 70 61 72 74 20 6f 66 20 d of as part of
3230: 74 68 65 20 61 6c 72 65 61 64 79 20 63 6f 6d 70 the already comp
3240: 6c 65 78 0a 09 20 20 20 20 23 20 6a 6f 69 6e 2e lex.. # join.
3250: 0a 09 20 20 20 20 23 0a 09 20 20 20 20 23 20 2e .. #.. # .
3260: 2e 2e 20 41 4e 44 20 50 2e 70 69 64 20 49 4e 20 .. AND P.pid IN
3270: 28 53 45 4c 45 43 54 20 42 58 2e 73 69 64 0a 09 (SELECT BX.sid..
3280: 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20 #
3290: 20 20 20 20 20 20 20 20 46 52 4f 4d 20 62 72 61 FROM bra
32a0: 6e 63 68 20 42 58 0a 09 20 20 20 20 23 20 20 20 nch BX.. #
32b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
32c0: 57 48 45 52 45 20 42 58 2e 72 6f 6f 74 20 3d 20 WHERE BX.root =
32d0: 52 2e 72 69 64 0a 09 20 20 20 20 23 20 20 20 20 R.rid.. #
32e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 A
32f0: 4e 44 20 20 20 42 58 2e 70 6f 73 20 3e 20 42 2e ND BX.pos > B.
3300: 70 6f 73 29 0a 0a 09 20 20 20 20 69 66 20 7b 21 pos)... if {!
3310: 5b 6c 69 6e 64 65 78 20 5b 73 74 61 74 65 20 72 [lindex [state r
3320: 75 6e 20 7b 0a 09 09 53 45 4c 45 43 54 20 43 4f un {...SELECT CO
3330: 55 4e 54 28 2a 29 0a 09 09 46 52 4f 4d 20 62 72 UNT(*)...FROM br
3340: 61 6e 63 68 20 42 0a 09 09 57 48 45 52 45 20 20 anch B...WHERE
3350: 42 2e 73 69 64 20 20 3d 20 24 70 69 64 0a 09 09 B.sid = $pid...
3360: 41 4e 44 20 20 20 20 42 2e 72 6f 6f 74 20 3d 20 AND B.root =
3370: 24 72 69 64 0a 09 09 41 4e 44 20 20 20 20 42 2e $rid...AND B.
3380: 70 6f 73 20 20 3e 20 24 70 6f 73 0a 09 20 20 20 pos > $pos..
3390: 20 7d 5d 20 30 5d 7d 20 7b 0a 09 09 69 6e 63 72 }] 0]} {...incr
33a0: 20 62 6d 61 78 20 2d 31 0a 09 09 73 65 74 20 20 bmax -1...set
33b0: 6d 78 73 20 5b 66 6f 72 6d 61 74 20 24 66 6d 74 mxs [format $fmt
33c0: 20 24 62 6d 61 78 5d 0a 09 09 63 6f 6e 74 69 6e $bmax]...contin
33d0: 75 65 0a 09 20 20 20 20 7d 0a 0a 09 20 20 20 20 ue.. }...
33e0: 23 0a 09 20 20 20 20 23 20 42 4f 54 54 4c 45 2d #.. # BOTTLE-
33f0: 4e 45 43 4b 20 2e 2e 2e 0a 0a 09 20 20 20 20 23 NECK ...... #
3400: 20 54 68 65 20 6e 61 6d 65 73 20 66 6f 72 20 75 The names for u
3410: 73 65 20 69 6e 20 74 68 65 20 6c 6f 67 20 6f 75 se in the log ou
3420: 74 70 75 74 20 61 72 65 20 72 65 74 72 69 65 76 tput are retriev
3430: 65 64 0a 09 20 20 20 20 23 20 73 65 70 61 72 61 ed.. # separa
3440: 74 65 6c 79 2c 20 74 6f 20 6b 65 65 70 20 74 68 tely, to keep th
3450: 65 20 6a 6f 69 6e 20 73 65 6c 65 63 74 69 6e 67 e join selecting
3460: 20 74 68 65 20 61 64 6a 75 73 74 61 62 6c 65 0a the adjustable.
3470: 09 20 20 20 20 23 20 74 61 67 73 20 73 6d 61 6c . # tags smal
3480: 6c 2c 20 6e 6f 74 20 62 75 72 64 65 6e 65 64 20 l, not burdened
3490: 77 69 74 68 20 74 68 65 20 64 65 72 65 66 65 72 with the derefer
34a0: 65 6e 63 69 6e 67 20 6f 66 20 6c 69 6e 6b 73 0a encing of links.
34b0: 09 20 20 20 20 23 20 74 6f 20 6e 61 6d 65 2e 0a . # to name..
34c0: 0a 09 20 20 20 20 73 65 74 20 62 72 61 6e 61 6d .. set branam
34d0: 65 20 24 73 6e 28 24 69 64 29 0a 09 20 20 20 20 e $sn($id)..
34e0: 73 65 74 20 6f 6c 64 6e 61 6d 65 20 24 73 78 28 set oldname $sx(
34f0: 24 6c 6f 64 29 0a 09 20 20 20 20 73 74 72 75 63 $lod).. struc
3500: 74 3a 3a 6c 69 73 74 20 61 73 73 69 67 6e 20 24 t::list assign $
3510: 66 70 6e 28 24 66 69 64 29 20 66 6e 61 6d 65 20 fpn($fid) fname
3520: 70 72 6e 61 6d 65 0a 0a 09 20 20 20 20 23 20 44 prname... # D
3530: 6f 20 74 68 65 20 67 72 61 66 74 69 6e 67 2e 0a o the grafting..
3540: 0a 09 20 20 20 20 6c 6f 67 20 77 72 69 74 65 20 .. log write
3550: 34 20 66 69 6c 74 65 72 73 79 6d 20 22 5c 5b 5b 4 filtersym "\[[
3560: 66 6f 72 6d 61 74 20 24 66 6d 74 20 24 6e 5d 2f format $fmt $n]/
3570: 24 6d 78 73 5c 5d 20 24 70 72 6e 61 6d 65 20 3a $mxs\] $prname :
3580: 20 47 72 61 66 74 69 6e 67 20 62 72 61 6e 63 68 Grafting branch
3590: 20 27 24 62 72 61 6e 61 6d 65 27 20 6f 6e 20 24 '$braname' on $
35a0: 66 6e 61 6d 65 2f 24 72 65 76 6e 72 20 66 72 6f fname/$revnr fro
35b0: 6d 20 27 24 6f 6c 64 6e 61 6d 65 27 20 6f 6e 74 m '$oldname' ont
35c0: 6f 20 27 24 70 72 65 66 65 72 65 64 6e 61 6d 65 o '$preferedname
35d0: 27 22 0a 09 20 20 20 20 73 74 61 74 65 20 72 75 '".. state ru
35e0: 6e 20 7b 20 55 50 44 41 54 45 20 74 61 67 20 53 n { UPDATE tag S
35f0: 45 54 20 6c 6f 64 20 3d 20 24 70 69 64 20 57 48 ET lod = $pid WH
3600: 45 52 45 20 74 69 64 20 3d 20 24 69 64 20 3b 20 ERE tid = $id ;
3610: 7d 0a 09 20 20 20 20 69 6e 63 72 20 6e 0a 09 7d }.. incr n..}
3620: 0a 0a 09 6c 6f 67 20 77 72 69 74 65 20 33 20 66 ...log write 3 f
3630: 69 6c 74 65 72 73 79 6d 20 22 52 65 70 61 72 65 iltersym "Repare
3640: 6e 74 65 64 20 5b 6e 73 70 20 24 6e 20 62 72 61 nted [nsp $n bra
3650: 6e 63 68 20 62 72 61 6e 63 68 65 73 5d 22 0a 09 nch branches]"..
3660: 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 return. }..
3670: 20 20 70 72 6f 63 20 52 65 66 69 6e 65 53 79 6d proc RefineSym
3680: 62 6f 6c 73 20 7b 7d 20 7b 0a 09 23 20 54 61 67 bols {} {..# Tag
3690: 73 20 61 6e 64 20 62 72 61 6e 63 68 65 73 20 61 s and branches a
36a0: 72 65 20 6d 61 72 6b 65 64 20 61 73 20 6e 6f 72 re marked as nor
36b0: 6d 61 6c 2f 6e 6f 6f 70 20 62 61 73 65 64 20 6f mal/noop based o
36c0: 6e 20 74 68 65 20 6f 70 0a 09 23 20 6f 66 20 74 n the op..# of t
36d0: 68 65 69 72 20 72 65 76 69 73 69 6f 6e 2e 0a 0a heir revision...
36e0: 09 6c 6f 67 20 77 72 69 74 65 20 33 20 66 69 6c .log write 3 fil
36f0: 74 65 72 73 79 6d 20 22 52 65 66 69 6e 65 20 73 tersym "Refine s
3700: 79 6d 62 6f 6c 73 20 28 6e 6f 2d 6f 70 20 6f 72 ymbols (no-op or
3710: 20 6e 6f 74 3f 29 22 0a 0a 09 6c 6f 67 20 77 72 not?)"...log wr
3720: 69 74 65 20 34 20 66 69 6c 74 65 72 73 79 6d 20 ite 4 filtersym
3730: 22 20 20 20 20 52 65 67 75 6c 61 72 20 74 61 67 " Regular tag
3740: 73 22 0a 09 73 74 61 74 65 20 72 75 6e 20 7b 0a s"..state run {.
3750: 09 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f . INSERT INTO
3760: 20 6e 6f 6f 70 0a 09 20 20 20 20 53 45 4c 45 43 noop.. SELEC
3770: 54 20 54 2e 74 69 64 2c 20 30 0a 09 20 20 20 20 T T.tid, 0..
3780: 46 52 4f 4d 20 74 61 67 20 54 2c 20 72 65 76 69 FROM tag T, revi
3790: 73 69 6f 6e 20 52 0a 09 20 20 20 20 57 48 45 52 sion R.. WHER
37a0: 45 20 54 2e 72 65 76 20 20 3d 20 52 2e 72 69 64 E T.rev = R.rid
37b0: 0a 09 20 20 20 20 41 4e 44 20 20 20 52 2e 6f 70 .. AND R.op
37c0: 20 20 21 3d 20 30 20 2d 2d 20 30 20 3d 3d 20 6e != 0 -- 0 == n
37d0: 6f 74 68 69 6e 67 0a 09 7d 0a 0a 09 6c 6f 67 20 othing..}...log
37e0: 77 72 69 74 65 20 34 20 66 69 6c 74 65 72 73 79 write 4 filtersy
37f0: 6d 20 22 20 20 20 20 4e 6f 2d 6f 70 20 74 61 67 m " No-op tag
3800: 73 22 0a 09 73 74 61 74 65 20 72 75 6e 20 7b 0a s"..state run {.
3810: 09 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 4f . INSERT INTO
3820: 20 6e 6f 6f 70 0a 09 20 20 20 20 53 45 4c 45 43 noop.. SELEC
3830: 54 20 54 2e 74 69 64 2c 20 31 0a 09 20 20 20 20 T T.tid, 1..
3840: 46 52 4f 4d 20 74 61 67 20 54 2c 20 72 65 76 69 FROM tag T, revi
3850: 73 69 6f 6e 20 52 0a 09 20 20 20 20 57 48 45 52 sion R.. WHER
3860: 45 20 54 2e 72 65 76 20 20 3d 20 52 2e 72 69 64 E T.rev = R.rid
3870: 0a 09 20 20 20 20 41 4e 44 20 20 20 52 2e 6f 70 .. AND R.op
3880: 20 20 20 3d 20 30 20 2d 2d 20 6e 6f 74 68 69 6e = 0 -- nothin
3890: 67 0a 09 7d 0a 0a 09 6c 6f 67 20 77 72 69 74 65 g..}...log write
38a0: 20 34 20 66 69 6c 74 65 72 73 79 6d 20 22 20 20 4 filtersym "
38b0: 20 20 52 65 67 75 6c 61 72 20 62 72 61 6e 63 68 Regular branch
38c0: 65 73 22 0a 09 73 74 61 74 65 20 72 75 6e 20 7b es"..state run {
38d0: 0a 09 20 20 20 20 49 4e 53 45 52 54 20 49 4e 54 .. INSERT INT
38e0: 4f 20 6e 6f 6f 70 0a 09 20 20 20 20 53 45 4c 45 O noop.. SELE
38f0: 43 54 20 42 2e 62 69 64 2c 20 30 0a 09 20 20 20 CT B.bid, 0..
3900: 20 46 52 4f 4d 20 62 72 61 6e 63 68 20 42 2c 20 FROM branch B,
3910: 72 65 76 69 73 69 6f 6e 20 52 0a 09 20 20 20 20 revision R..
3920: 57 48 45 52 45 20 42 2e 72 6f 6f 74 20 3d 20 52 WHERE B.root = R
3930: 2e 72 69 64 0a 09 20 20 20 20 41 4e 44 20 20 20 .rid.. AND
3940: 52 2e 6f 70 20 20 21 3d 20 30 20 2d 2d 20 6e 6f R.op != 0 -- no
3950: 74 68 69 6e 67 0a 09 7d 0a 0a 09 6c 6f 67 20 77 thing..}...log w
3960: 72 69 74 65 20 34 20 66 69 6c 74 65 72 73 79 6d rite 4 filtersym
3970: 20 22 20 20 20 20 4e 6f 2d 6f 70 20 62 72 61 6e " No-op bran
3980: 63 68 65 73 22 0a 09 73 74 61 74 65 20 72 75 6e ches"..state run
3990: 20 7b 0a 09 20 20 20 20 49 4e 53 45 52 54 20 49 {.. INSERT I
39a0: 4e 54 4f 20 6e 6f 6f 70 0a 09 20 20 20 20 53 45 NTO noop.. SE
39b0: 4c 45 43 54 20 42 2e 62 69 64 2c 20 31 0a 09 20 LECT B.bid, 1..
39c0: 20 20 20 46 52 4f 4d 20 62 72 61 6e 63 68 20 42 FROM branch B
39d0: 2c 20 72 65 76 69 73 69 6f 6e 20 52 0a 09 20 20 , revision R..
39e0: 20 20 57 48 45 52 45 20 42 2e 72 6f 6f 74 20 3d WHERE B.root =
39f0: 20 52 2e 72 69 64 0a 09 20 20 20 20 41 4e 44 20 R.rid.. AND
3a00: 20 20 52 2e 6f 70 20 20 20 3d 20 30 20 2d 2d 20 R.op = 0 --
3a10: 6e 6f 74 68 69 6e 67 0a 09 7d 0a 09 72 65 74 75 nothing..}..retu
3a20: 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 rn. }.. #
3a30: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 # ## ### ##### #
3a40: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
3a50: 23 23 23 23 23 0a 20 20 20 20 23 23 20 43 6f 6e #####. ## Con
3a60: 66 69 67 75 72 61 74 69 6f 6e 0a 0a 20 20 20 20 figuration..
3a70: 70 72 61 67 6d 61 20 2d 68 61 73 69 6e 73 74 61 pragma -hasinsta
3a80: 6e 63 65 73 20 20 20 6e 6f 20 3b 20 23 20 73 69 nces no ; # si
3a90: 6e 67 6c 65 74 6f 6e 0a 20 20 20 20 70 72 61 67 ngleton. prag
3aa0: 6d 61 20 2d 68 61 73 74 79 70 65 69 6e 66 6f 20 ma -hastypeinfo
3ab0: 20 20 20 6e 6f 20 3b 20 23 20 6e 6f 20 69 6e 74 no ; # no int
3ac0: 72 6f 73 70 65 63 74 69 6f 6e 0a 20 20 20 20 70 rospection. p
3ad0: 72 61 67 6d 61 20 2d 68 61 73 74 79 70 65 64 65 ragma -hastypede
3ae0: 73 74 72 6f 79 20 6e 6f 20 3b 20 23 20 69 6d 6d stroy no ; # imm
3af0: 6f 72 74 61 6c 0a 0a 20 20 20 20 23 20 23 20 23 ortal.. # # #
3b00: 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 # ### ##### ####
3b10: 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 #### ###########
3b20: 23 23 0a 7d 0a 0a 6e 61 6d 65 73 70 61 63 65 20 ##.}..namespace
3b30: 65 76 61 6c 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 eval ::vc::fossi
3b40: 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a l::import::cvs::
3b50: 70 61 73 73 20 7b 0a 20 20 20 20 6e 61 6d 65 73 pass {. names
3b60: 70 61 63 65 20 65 78 70 6f 72 74 20 66 69 6c 74 pace export filt
3b70: 65 72 73 79 6d 0a 20 20 20 20 6e 61 6d 65 73 70 ersym. namesp
3b80: 61 63 65 20 65 76 61 6c 20 66 69 6c 74 65 72 73 ace eval filters
3b90: 79 6d 20 7b 0a 09 6e 61 6d 65 73 70 61 63 65 20 ym {..namespace
3ba0: 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 66 6f 73 import ::vc::fos
3bb0: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 sil::import::cvs
3bc0: 3a 3a 73 74 61 74 65 0a 09 6e 61 6d 65 73 70 61 ::state..namespa
3bd0: 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a ce import ::vc::
3be0: 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a fossil::import::
3bf0: 63 76 73 3a 3a 69 6e 74 65 67 72 69 74 79 0a 09 cvs::integrity..
3c00: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 70 namespace eval p
3c10: 72 6f 6a 65 63 74 20 7b 0a 09 20 20 20 20 6e 61 roject {.. na
3c20: 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a mespace import :
3c30: 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 :vc::fossil::imp
3c40: 6f 72 74 3a 3a 63 76 73 3a 3a 70 72 6f 6a 65 63 ort::cvs::projec
3c50: 74 3a 3a 73 79 6d 0a 09 7d 0a 09 6e 61 6d 65 73 t::sym..}..names
3c60: 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 pace import ::vc
3c70: 3a 3a 74 6f 6f 6c 73 3a 3a 6d 69 73 63 3a 3a 6e ::tools::misc::n
3c80: 73 70 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 6d sp..namespace im
3c90: 70 6f 72 74 20 3a 3a 76 63 3a 3a 74 6f 6f 6c 73 port ::vc::tools
3ca0: 3a 3a 6c 6f 67 0a 09 6c 6f 67 20 72 65 67 69 73 ::log..log regis
3cb0: 74 65 72 20 66 69 6c 74 65 72 73 79 6d 0a 20 20 ter filtersym.
3cc0: 20 20 7d 0a 7d 0a 0a 23 20 23 20 23 23 20 23 23 }.}..# # ## ##
3cd0: 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 # ##### ########
3ce0: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 20 23 ############# #
3cf0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
3d00: 23 23 23 23 0a 23 23 20 52 65 61 64 79 0a 0a 70 ####.## Ready..p
3d10: 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65 20 76 ackage provide v
3d20: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor
3d30: 74 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a 66 69 t::cvs::pass::fi
3d40: 6c 74 65 72 73 79 6d 20 31 2e 30 0a 72 65 74 75 ltersym 1.0.retu
3d50: 72 6e 0a rn.