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 56 2e 20 54 68 69 73 20 70 61 73 73 20 63 s V. This pass c
0210: 72 65 61 74 65 73 20 74 68 65 20 69 6e 69 74 69 reates the initi
0220: 61 6c 20 73 65 74 20 6f 66 20 70 72 6f 6a 65 63 al set of projec
0230: 74 20 6c 65 76 65 6c 0a 23 23 20 72 65 76 69 73 t level.## revis
0240: 69 6f 6e 73 2c 20 61 6b 61 20 63 68 61 6e 67 65 ions, aka change
0250: 73 65 74 73 2e 20 4c 61 74 65 72 20 70 61 73 73 sets. Later pass
0260: 65 73 20 77 69 6c 6c 20 72 65 66 69 6e 65 20 74 es will refine t
0270: 68 65 6d 2c 20 70 75 74 73 20 74 68 65 6d 0a 23 hem, puts them.#
0280: 23 20 69 6e 74 6f 20 70 72 6f 70 65 72 20 6f 72 # into proper or
0290: 64 65 72 2c 20 73 65 74 20 74 68 65 69 72 20 64 der, set their d
02a0: 65 70 65 6e 64 65 6e 63 69 65 73 2c 20 65 74 63 ependencies, etc
02b0: 2e 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 ...# # ## ### ##
02c0: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 ### ######## ###
02d0: 23 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23 ########## #####
02e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
02f0: 0a 23 23 20 52 65 71 75 69 72 65 6d 65 6e 74 73 .## Requirements
0300: 0a 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 ..package requir
0310: 65 20 54 63 6c 20 38 2e 34 20 20 20 20 20 20 20 e Tcl 8.4
0320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0330: 20 20 20 20 20 20 20 20 3b 20 23 20 52 65 71 75 ; # Requ
0340: 69 72 65 64 20 72 75 6e 74 69 6d 65 2e 0a 70 61 ired runtime..pa
0350: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 73 6e ckage require sn
0360: 69 74 20 20 20 20 20 20 20 20 20 20 20 20 20 20 it
0370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0380: 20 20 20 20 3b 20 23 20 4f 4f 20 73 79 73 74 65 ; # OO syste
0390: 6d 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 m..package requi
03a0: 72 65 20 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6d 69 re vc::tools::mi
03b0: 73 63 20 20 20 20 20 20 20 20 20 20 20 20 20 20 sc
03c0: 20 20 20 20 20 20 20 20 20 3b 20 23 20 54 65 78 ; # Tex
03d0: 74 20 66 6f 72 6d 61 74 74 69 6e 67 2e 0a 70 61 t formatting..pa
03e0: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 76 63 ckage require vc
03f0: 3a 3a 74 6f 6f 6c 73 3a 3a 6c 6f 67 20 20 20 20 ::tools::log
0400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0410: 20 20 20 20 3b 20 23 20 55 73 65 72 20 66 65 65 ; # User fee
0420: 64 62 61 63 6b 2e 0a 70 61 63 6b 61 67 65 20 72 dback..package r
0430: 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 73 69 equire vc::fossi
0440: 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a l::import::cvs::
0450: 72 65 70 6f 73 69 74 6f 72 79 20 20 20 3b 20 23 repository ; #
0460: 20 52 65 70 6f 73 69 74 6f 72 79 20 6d 61 6e 61 Repository mana
0470: 67 65 6d 65 6e 74 2e 0a 70 61 63 6b 61 67 65 20 gement..package
0480: 72 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 73 require vc::foss
0490: 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a il::import::cvs:
04a0: 3a 73 74 61 74 65 20 20 20 20 20 20 20 20 3b 20 :state ;
04b0: 23 20 53 74 61 74 65 20 73 74 6f 72 61 67 65 2e # State storage.
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 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 .package require
0520: 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 vc::fossil::imp
0530: 6f 72 74 3a 3a 63 76 73 3a 3a 70 72 6f 6a 65 63 ort::cvs::projec
0540: 74 3a 3a 72 65 76 20 3b 20 23 20 50 72 6f 6a 65 t::rev ; # Proje
0550: 63 74 20 6c 65 76 65 6c 20 63 68 61 6e 67 65 73 ct level changes
0560: 65 74 73 0a 0a 23 20 23 20 23 23 20 23 23 23 20 ets..# # ## ###
0570: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 ##### ######## #
0580: 23 23 23 23 23 23 23 23 23 23 23 23 20 23 23 23 ############ ###
0590: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
05a0: 23 23 0a 23 23 20 52 65 67 69 73 74 65 72 20 74 ##.## Register t
05b0: 68 65 20 70 61 73 73 20 77 69 74 68 20 74 68 65 he pass with the
05c0: 20 6d 61 6e 61 67 65 6d 65 6e 74 0a 0a 76 63 3a management..vc:
05d0: 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a :fossil::import:
05e0: 3a 63 76 73 3a 3a 70 61 73 73 20 64 65 66 69 6e :cvs::pass defin
05f0: 65 20 5c 0a 20 20 20 20 49 6e 69 74 43 73 65 74 e \. InitCset
0600: 73 20 5c 0a 20 20 20 20 7b 49 6e 69 74 69 61 6c s \. {Initial
0610: 69 7a 65 20 43 68 61 6e 67 65 53 65 74 73 7d 20 ize ChangeSets}
0620: 5c 0a 20 20 20 20 3a 3a 76 63 3a 3a 66 6f 73 73 \. ::vc::foss
0630: 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a il::import::cvs:
0640: 3a 70 61 73 73 3a 3a 69 6e 69 74 63 73 65 74 73 :pass::initcsets
0650: 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 23 ..# # ## ### ###
0660: 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 ## ######## ####
0670: 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######### ######
0680: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a ###############.
0690: 23 23 20 0a 0a 73 6e 69 74 3a 3a 74 79 70 65 20 ## ..snit::type
06a0: 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d ::vc::fossil::im
06b0: 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 61 73 73 3a port::cvs::pass:
06c0: 3a 69 6e 69 74 63 73 65 74 73 20 7b 0a 20 20 20 :initcsets {.
06d0: 20 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 # # ## ### ####
06e0: 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 # ######## #####
06f0: 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 ########. ##
0700: 50 75 62 6c 69 63 20 41 50 49 0a 0a 20 20 20 20 Public API..
0710: 74 79 70 65 6d 65 74 68 6f 64 20 73 65 74 75 70 typemethod setup
0720: 20 7b 7d 20 7b 0a 09 23 20 44 65 66 69 6e 65 20 {} {..# Define
0730: 74 68 65 20 6e 61 6d 65 73 20 61 6e 64 20 73 74 the names and st
0740: 72 75 63 74 75 72 65 20 6f 66 20 74 68 65 20 70 ructure of the p
0750: 65 72 73 69 73 74 65 6e 74 20 73 74 61 74 65 20 ersistent state
0760: 6f 66 0a 09 23 20 74 68 69 73 20 70 61 73 73 2e of..# this pass.
0770: 0a 0a 09 73 74 61 74 65 20 72 65 61 64 69 6e 67 ...state reading
0780: 20 6d 65 74 61 0a 09 73 74 61 74 65 20 72 65 61 meta..state rea
0790: 64 69 6e 67 20 72 65 76 69 73 69 6f 6e 0a 09 73 ding revision..s
07a0: 74 61 74 65 20 72 65 61 64 69 6e 67 20 62 72 61 tate reading bra
07b0: 6e 63 68 0a 09 73 74 61 74 65 20 72 65 61 64 69 nch..state readi
07c0: 6e 67 20 74 61 67 0a 09 73 74 61 74 65 20 72 65 ng tag..state re
07d0: 61 64 69 6e 67 20 73 79 6d 62 6f 6c 0a 0a 09 23 ading symbol...#
07e0: 20 44 61 74 61 20 70 65 72 20 63 68 61 6e 67 65 Data per change
07f0: 73 65 74 2c 20 6e 61 6d 65 6c 79 20 74 68 65 20 set, namely the
0800: 70 72 6f 6a 65 63 74 20 69 74 20 62 65 6c 6f 6e project it belon
0810: 67 73 20 74 6f 2c 20 68 6f 77 20 69 74 0a 09 23 gs to, how it..#
0820: 20 77 61 73 20 69 6e 64 75 63 65 64 20 28 72 65 was induced (re
0830: 76 69 73 69 6f 6e 20 6f 72 20 73 79 6d 62 6f 6c vision or symbol
0840: 29 2c 20 70 6c 75 73 20 72 65 66 65 72 65 6e 63 ), plus referenc
0850: 65 20 74 6f 20 74 68 65 0a 09 23 20 70 72 69 6d e to the..# prim
0860: 61 72 79 20 65 6e 74 72 79 20 63 61 75 73 69 6e ary entry causin
0870: 67 20 69 74 20 28 6d 65 74 61 20 65 6e 74 72 79 g it (meta entry
0880: 20 6f 72 20 73 79 6d 62 6f 6c 29 2e 20 41 6e 20 or symbol). An
0890: 61 64 6a 75 6e 63 74 0a 09 23 20 74 61 62 6c 65 adjunct..# table
08a0: 20 74 72 61 6e 73 6c 61 74 65 73 20 74 68 65 20 translates the
08b0: 74 79 70 65 20 69 64 27 73 20 69 6e 74 6f 20 68 type id's into h
08c0: 75 6d 61 6e 20 72 65 61 64 61 62 6c 65 20 6c 61 uman readable la
08d0: 62 65 6c 73 2e 0a 0a 09 73 74 61 74 65 20 77 72 bels....state wr
08e0: 69 74 69 6e 67 20 63 68 61 6e 67 65 73 65 74 20 iting changeset
08f0: 7b 0a 09 20 20 20 20 63 69 64 20 20 20 49 4e 54 {.. cid INT
0900: 45 47 45 52 20 20 4e 4f 54 20 4e 55 4c 4c 20 20 EGER NOT NULL
0910: 50 52 49 4d 41 52 59 20 4b 45 59 20 20 41 55 54 PRIMARY KEY AUT
0920: 4f 49 4e 43 52 45 4d 45 4e 54 2c 0a 09 20 20 20 OINCREMENT,..
0930: 20 70 69 64 20 20 20 49 4e 54 45 47 45 52 20 20 pid INTEGER
0940: 4e 4f 54 20 4e 55 4c 4c 20 20 52 45 46 45 52 45 NOT NULL REFERE
0950: 4e 43 45 53 20 70 72 6f 6a 65 63 74 2c 0a 09 20 NCES project,..
0960: 20 20 20 74 79 70 65 20 20 49 4e 54 45 47 45 52 type INTEGER
0970: 20 20 4e 4f 54 20 4e 55 4c 4c 20 20 52 45 46 45 NOT NULL REFE
0980: 52 45 4e 43 45 53 20 63 73 74 79 70 65 2c 0a 09 RENCES cstype,..
0990: 20 20 20 20 73 72 63 20 20 20 49 4e 54 45 47 45 src INTEGE
09a0: 52 20 20 4e 4f 54 20 4e 55 4c 4c 20 2d 2d 20 52 R NOT NULL -- R
09b0: 45 46 45 52 45 4e 43 45 53 20 6d 65 74 61 7c 73 EFERENCES meta|s
09c0: 79 6d 62 6f 6c 20 28 74 79 70 65 20 64 65 70 65 ymbol (type depe
09d0: 6e 64 65 6e 74 29 0a 09 7d 0a 09 73 74 61 74 65 ndent)..}..state
09e0: 20 77 72 69 74 69 6e 67 20 63 73 74 79 70 65 20 writing cstype
09f0: 7b 0a 09 20 20 20 20 74 69 64 20 20 20 49 4e 54 {.. tid INT
0a00: 45 47 45 52 20 20 4e 4f 54 20 4e 55 4c 4c 20 20 EGER NOT NULL
0a10: 50 52 49 4d 41 52 59 20 4b 45 59 20 20 41 55 54 PRIMARY KEY AUT
0a20: 4f 49 4e 43 52 45 4d 45 4e 54 2c 0a 09 20 20 20 OINCREMENT,..
0a30: 20 6e 61 6d 65 20 20 54 45 58 54 20 20 20 20 20 name TEXT
0a40: 4e 4f 54 20 4e 55 4c 4c 2c 0a 09 20 20 20 20 55 NOT NULL,.. U
0a50: 4e 49 51 55 45 20 28 6e 61 6d 65 29 0a 09 7d 0a NIQUE (name)..}.
0a60: 09 73 74 61 74 65 20 72 75 6e 20 7b 0a 09 20 20 .state run {..
0a70: 20 20 49 4e 53 45 52 54 20 49 4e 54 4f 20 63 73 INSERT INTO cs
0a80: 74 79 70 65 20 56 41 4c 55 45 53 20 28 30 2c 27 type VALUES (0,'
0a90: 72 65 76 27 29 3b 0a 09 20 20 20 20 49 4e 53 45 rev');.. INSE
0aa0: 52 54 20 49 4e 54 4f 20 63 73 74 79 70 65 20 56 RT INTO cstype V
0ab0: 41 4c 55 45 53 20 28 31 2c 27 73 79 6d 27 29 3b ALUES (1,'sym');
0ac0: 0a 09 7d 0a 0a 09 23 20 4d 61 70 20 66 72 6f 6d ..}...# Map from
0ad0: 20 63 68 61 6e 67 65 73 65 74 73 20 74 6f 20 74 changesets to t
0ae0: 68 65 20 28 66 69 6c 65 20 6c 65 76 65 6c 29 20 he (file level)
0af0: 72 65 76 69 73 69 6f 6e 73 20 74 68 65 79 0a 09 revisions they..
0b00: 23 20 63 6f 6e 74 61 69 6e 2e 20 54 68 65 20 70 # contain. The p
0b10: 6f 73 27 69 74 69 6f 6e 20 70 72 6f 76 69 64 65 os'ition provide
0b20: 73 20 61 6e 20 6f 72 64 65 72 20 6f 66 20 74 68 s an order of th
0b30: 65 20 72 65 76 69 73 69 6f 6e 73 0a 09 23 20 77 e revisions..# w
0b40: 69 74 68 69 6e 20 61 20 63 68 61 6e 67 65 73 65 ithin a changese
0b50: 74 2e 20 54 68 65 79 20 61 72 65 20 75 6e 69 71 t. They are uniq
0b60: 75 65 20 77 69 74 68 69 6e 20 74 68 65 20 63 68 ue within the ch
0b70: 61 6e 67 65 73 65 74 2e 0a 09 23 20 54 68 65 20 angeset...# The
0b80: 72 65 76 69 73 69 6f 6e 73 20 61 72 65 20 69 6e revisions are in
0b90: 20 70 72 69 6e 63 69 70 6c 65 20 75 6e 69 71 75 principle uniqu
0ba0: 65 2c 20 69 66 20 77 65 20 77 65 72 65 20 6c 6f e, if we were lo
0bb0: 6f 6b 69 6e 67 0a 09 23 20 6f 6e 6c 79 20 61 74 oking..# only at
0bc0: 20 72 65 76 69 73 69 6f 6e 20 63 68 61 6e 67 65 revision change
0bd0: 73 65 74 73 2e 20 48 6f 77 65 76 65 72 20 61 20 sets. However a
0be0: 72 65 76 69 73 69 6f 6e 20 63 61 6e 20 61 70 70 revision can app
0bf0: 65 61 72 0a 09 23 20 69 6e 20 62 6f 74 68 20 72 ear..# in both r
0c00: 65 76 69 73 69 6f 6e 20 61 6e 64 20 73 79 6d 62 evision and symb
0c10: 6f 6c 20 63 68 61 6e 67 65 73 65 74 73 2c 20 61 ol changesets, a
0c20: 6e 64 20 69 6e 20 6d 75 6c 74 69 70 6c 65 0a 09 nd in multiple..
0c30: 23 20 73 79 6d 62 6f 6c 20 63 68 61 6e 67 65 73 # symbol changes
0c40: 65 74 73 20 61 73 20 77 65 6c 6c 2e 20 53 6f 20 ets as well. So
0c50: 77 65 20 63 61 6e 20 6f 6e 6c 79 20 73 61 79 20 we can only say
0c60: 74 68 61 74 20 69 74 20 69 73 0a 09 23 20 75 6e that it is..# un
0c70: 69 71 75 65 20 77 69 74 68 69 6e 20 74 68 65 20 ique within the
0c80: 63 68 61 6e 67 65 73 65 74 2e 20 0a 09 23 0a 09 changeset. ..#..
0c90: 23 20 54 4f 44 4f 3a 20 43 68 65 63 6b 20 69 66 # TODO: Check if
0ca0: 20 69 6e 74 65 67 72 69 74 79 20 63 68 65 63 6b integrity check
0cb0: 73 20 61 72 65 20 70 6f 73 73 69 62 6c 65 2e 0a s are possible..
0cc0: 0a 09 73 74 61 74 65 20 77 72 69 74 69 6e 67 20 ..state writing
0cd0: 63 73 72 65 76 69 73 69 6f 6e 20 7b 0a 09 20 20 csrevision {..
0ce0: 20 20 63 69 64 20 20 49 4e 54 45 47 45 52 20 20 cid INTEGER
0cf0: 4e 4f 54 20 4e 55 4c 4c 20 20 52 45 46 45 52 45 NOT NULL REFERE
0d00: 4e 43 45 53 20 63 68 61 6e 67 65 73 65 74 2c 0a NCES changeset,.
0d10: 09 20 20 20 20 70 6f 73 20 20 49 4e 54 45 47 45 . pos INTEGE
0d20: 52 20 20 4e 4f 54 20 4e 55 4c 4c 2c 0a 09 20 20 R NOT NULL,..
0d30: 20 20 72 69 64 20 20 49 4e 54 45 47 45 52 20 20 rid INTEGER
0d40: 4e 4f 54 20 4e 55 4c 4c 20 20 52 45 46 45 52 45 NOT NULL REFERE
0d50: 4e 43 45 53 20 72 65 76 69 73 69 6f 6e 2c 0a 09 NCES revision,..
0d60: 20 20 20 20 55 4e 49 51 55 45 20 28 63 69 64 2c UNIQUE (cid,
0d70: 20 70 6f 73 29 2c 0a 09 20 20 20 20 55 4e 49 51 pos),.. UNIQ
0d80: 55 45 20 28 63 69 64 2c 20 72 69 64 29 0a 09 7d UE (cid, rid)..}
0d90: 0a 0a 09 70 72 6f 6a 65 63 74 3a 3a 72 65 76 20 ...project::rev
0da0: 67 65 74 63 73 74 79 70 65 73 0a 09 72 65 74 75 getcstypes..retu
0db0: 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 74 79 rn. }.. ty
0dc0: 70 65 6d 65 74 68 6f 64 20 6c 6f 61 64 20 7b 7d pemethod load {}
0dd0: 20 7b 0a 09 23 20 50 61 73 73 20 6d 61 6e 61 67 {..# Pass manag
0de0: 65 72 20 69 6e 74 65 72 66 61 63 65 2e 20 45 78 er interface. Ex
0df0: 65 63 75 74 65 64 20 74 6f 20 6c 6f 61 64 20 64 ecuted to load d
0e00: 61 74 61 20 63 6f 6d 70 75 74 65 64 20 62 79 0a ata computed by.
0e10: 09 23 20 74 68 69 73 20 70 61 73 73 20 69 6e 74 .# this pass int
0e20: 6f 20 6d 65 6d 6f 72 79 20 77 68 65 6e 20 74 68 o memory when th
0e30: 69 73 20 70 61 73 73 20 69 73 20 73 6b 69 70 70 is pass is skipp
0e40: 65 64 20 69 6e 73 74 65 61 64 20 6f 66 0a 09 23 ed instead of..#
0e50: 20 65 78 65 63 75 74 65 64 2e 0a 09 23 20 2f 54 executed...# /T
0e60: 4f 44 4f 2f 6c 6f 61 64 20 63 68 61 6e 67 65 73 ODO/load changes
0e70: 65 74 73 0a 0a 09 70 72 6f 6a 65 63 74 3a 3a 72 ets...project::r
0e80: 65 76 20 67 65 74 63 73 74 79 70 65 73 0a 09 72 ev getcstypes..r
0e90: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }..
0ea0: 20 74 79 70 65 6d 65 74 68 6f 64 20 72 75 6e 20 typemethod run
0eb0: 7b 7d 20 7b 0a 09 23 20 50 61 73 73 20 6d 61 6e {} {..# Pass man
0ec0: 61 67 65 72 20 69 6e 74 65 72 66 61 63 65 2e 20 ager interface.
0ed0: 45 78 65 63 75 74 65 64 20 74 6f 20 70 65 72 66 Executed to perf
0ee0: 6f 72 6d 20 74 68 65 0a 09 23 20 66 75 6e 63 74 orm the..# funct
0ef0: 69 6f 6e 61 6c 69 74 79 20 6f 66 20 74 68 65 20 ionality of the
0f00: 70 61 73 73 2e 0a 0a 09 73 65 74 20 63 73 65 74 pass....set cset
0f10: 73 20 7b 7d 0a 09 73 74 61 74 65 20 74 72 61 6e s {}..state tran
0f20: 73 61 63 74 69 6f 6e 20 7b 0a 09 20 20 20 20 43 saction {.. C
0f30: 72 65 61 74 65 52 65 76 69 73 69 6f 6e 43 68 61 reateRevisionCha
0f40: 6e 67 65 73 65 74 73 20 63 73 65 74 73 20 3b 20 ngesets csets ;
0f50: 23 20 47 72 6f 75 70 20 66 69 6c 65 20 72 65 76 # Group file rev
0f60: 69 73 69 6f 6e 73 20 69 6e 74 6f 20 63 73 65 74 isions into cset
0f70: 73 2e 0a 09 20 20 20 20 43 72 65 61 74 65 53 79 s... CreateSy
0f80: 6d 62 6f 6c 43 68 61 6e 67 65 73 65 74 73 20 20 mbolChangesets
0f90: 20 63 73 65 74 73 20 3b 20 23 20 43 72 65 61 74 csets ; # Creat
0fa0: 65 20 63 73 65 74 73 20 66 6f 72 20 74 61 67 73 e csets for tags
0fb0: 20 61 6e 64 20 62 72 61 6e 63 68 65 73 2e 0a 09 and branches...
0fc0: 20 20 20 20 50 65 72 73 69 73 74 54 68 65 43 68 PersistTheCh
0fd0: 61 6e 67 65 73 65 74 73 20 20 20 20 24 63 73 65 angesets $cse
0fe0: 74 73 0a 09 7d 0a 09 72 65 74 75 72 6e 0a 20 20 ts..}..return.
0ff0: 20 20 7d 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 }.. typemet
1000: 68 6f 64 20 64 69 73 63 61 72 64 20 7b 7d 20 7b hod discard {} {
1010: 0a 09 23 20 50 61 73 73 20 6d 61 6e 61 67 65 72 ..# Pass manager
1020: 20 69 6e 74 65 72 66 61 63 65 2e 20 45 78 65 63 interface. Exec
1030: 75 74 65 64 20 66 6f 72 20 61 6c 6c 20 70 61 73 uted for all pas
1040: 73 65 73 20 61 66 74 65 72 20 74 68 65 0a 09 23 ses after the..#
1050: 20 72 75 6e 20 70 61 73 73 65 73 2c 20 74 6f 20 run passes, to
1060: 72 65 6d 6f 76 65 20 61 6c 6c 20 64 61 74 61 20 remove all data
1070: 6f 66 20 74 68 69 73 20 70 61 73 73 20 66 72 6f of this pass fro
1080: 6d 20 74 68 65 20 73 74 61 74 65 2c 0a 09 23 20 m the state,..#
1090: 61 73 20 62 65 69 6e 67 20 6f 75 74 20 6f 66 20 as being out of
10a0: 64 61 74 65 2e 0a 0a 09 73 74 61 74 65 20 64 69 date....state di
10b0: 73 63 61 72 64 20 63 68 61 6e 67 65 73 65 74 0a scard changeset.
10c0: 09 73 74 61 74 65 20 64 69 73 63 61 72 64 20 63 .state discard c
10d0: 73 74 79 70 65 0a 09 73 74 61 74 65 20 64 69 73 stype..state dis
10e0: 63 61 72 64 20 63 73 72 65 76 69 73 69 6f 6e 0a card csrevision.
10f0: 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 .return. }..
1100: 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23 23 # # ## ### ##
1110: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 ### ######## ###
1120: 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 ##########. #
1130: 23 20 49 6e 74 65 72 6e 61 6c 20 6d 65 74 68 6f # Internal metho
1140: 64 73 0a 0a 20 20 20 20 70 72 6f 63 20 43 72 65 ds.. proc Cre
1150: 61 74 65 52 65 76 69 73 69 6f 6e 43 68 61 6e 67 ateRevisionChang
1160: 65 73 65 74 73 20 7b 63 76 7d 20 7b 0a 09 75 70 esets {cv} {..up
1170: 76 61 72 20 31 20 24 63 76 20 63 73 65 74 73 0a var 1 $cv csets.
1180: 0a 09 6c 6f 67 20 77 72 69 74 65 20 33 20 69 6e ..log write 3 in
1190: 69 74 63 73 65 74 73 20 7b 43 72 65 61 74 65 20 itcsets {Create
11a0: 63 68 61 6e 67 65 73 65 74 73 20 62 61 73 65 64 changesets based
11b0: 20 6f 6e 20 72 65 76 69 73 69 6f 6e 73 7d 0a 0a on revisions}..
11c0: 09 23 20 54 6f 20 67 65 74 20 74 68 65 20 69 6e .# To get the in
11d0: 69 74 69 61 6c 20 6f 66 20 63 68 61 6e 67 65 73 itial of changes
11e0: 65 74 73 20 77 65 20 66 69 72 73 74 20 67 72 6f ets we first gro
11f0: 75 70 20 61 6c 6c 20 66 69 6c 65 0a 09 23 20 6c up all file..# l
1200: 65 76 65 6c 20 72 65 76 69 73 69 6f 6e 73 20 75 evel revisions u
1210: 73 69 6e 67 20 74 68 65 20 73 61 6d 65 20 6d 65 sing the same me
1220: 74 61 20 64 61 74 61 20 65 6e 74 72 79 20 74 6f ta data entry to
1230: 67 65 74 68 65 72 2e 20 41 73 0a 09 23 20 74 68 gether. As..# th
1240: 65 20 6d 65 74 61 20 64 61 74 61 20 65 6e 63 6f e meta data enco
1250: 64 65 73 20 6e 6f 74 20 6f 6e 6c 79 20 61 75 74 des not only aut
1260: 68 6f 72 20 61 6e 64 20 6c 6f 67 20 6d 65 73 73 hor and log mess
1270: 61 67 65 2c 20 62 75 74 0a 09 23 20 61 6c 73 6f age, but..# also
1280: 20 6c 69 6e 65 20 6f 66 20 64 65 76 65 6c 6f 70 line of develop
1290: 6d 65 6e 74 20 61 6e 64 20 70 72 6f 6a 65 63 74 ment and project
12a0: 20 77 65 20 63 61 6e 20 62 65 20 73 75 72 65 20 we can be sure
12b0: 74 68 61 74 0a 09 23 20 72 65 76 69 73 69 6f 6e that..# revision
12c0: 73 20 69 6e 20 64 69 66 66 65 72 65 6e 74 20 70 s in different p
12d0: 72 6f 6a 65 63 74 20 61 6e 64 20 6c 69 6e 65 73 roject and lines
12e0: 20 6f 66 20 64 65 76 65 6c 6f 70 6d 65 6e 74 20 of development
12f0: 61 72 65 0a 09 23 20 6e 6f 74 20 67 72 6f 75 70 are..# not group
1300: 65 64 20 74 6f 67 65 74 68 65 72 2e 20 49 6e 20 ed together. In
1310: 63 6f 6e 74 72 61 73 74 20 74 6f 20 63 76 73 32 contrast to cvs2
1320: 73 76 6e 20 77 65 20 64 6f 20 5f 5f 6e 6f 74 5f svn we do __not_
1330: 5f 0a 09 23 20 75 73 65 20 64 69 73 74 61 6e 63 _..# use distanc
1340: 65 20 69 6e 20 74 69 6d 65 20 62 65 74 77 65 65 e in time betwee
1350: 6e 20 72 65 76 69 73 69 6f 6e 73 20 74 6f 20 62 n revisions to b
1360: 72 65 61 6b 20 74 68 65 6d 0a 09 23 20 61 70 61 reak them..# apa
1370: 72 74 2e 20 57 65 20 68 61 76 65 20 73 65 65 6e rt. We have seen
1380: 20 43 56 53 20 72 65 70 6f 73 69 74 6f 72 69 65 CVS repositorie
1390: 73 20 28 66 72 6f 6d 20 53 46 29 20 77 68 65 72 s (from SF) wher
13a0: 65 20 61 0a 09 23 20 73 69 6e 67 6c 65 20 63 6f e a..# single co
13b0: 6d 6d 69 74 20 63 6f 6e 74 61 69 6e 65 64 20 72 mmit contained r
13c0: 65 76 69 73 69 6f 6e 73 20 73 65 76 65 72 61 6c evisions several
13d0: 20 68 6f 75 72 73 20 61 70 61 72 74 2c 0a 09 23 hours apart,..#
13e0: 20 6c 69 6b 65 6c 79 20 64 75 65 20 74 6f 20 74 likely due to t
13f0: 72 6f 75 62 6c 65 20 6f 6e 20 74 68 65 20 73 65 rouble on the se
1400: 72 76 65 72 20 68 6f 73 74 69 6e 67 20 74 68 65 rver hosting the
1410: 20 72 65 70 6f 73 69 74 6f 72 79 2e 0a 0a 09 23 repository....#
1420: 20 57 65 20 6f 72 64 65 72 20 74 68 65 20 72 65 We order the re
1430: 76 69 73 69 6f 6e 73 20 68 65 72 65 20 62 79 20 visions here by
1440: 74 69 6d 65 2c 20 74 68 69 73 20 77 69 6c 6c 20 time, this will
1450: 68 65 6c 70 20 74 68 65 0a 09 23 20 6c 61 74 65 help the..# late
1460: 72 20 70 61 73 73 65 73 20 28 61 76 6f 69 64 73 r passes (avoids
1470: 20 6a 6f 69 6e 73 20 6c 61 74 65 72 20 74 6f 20 joins later to
1480: 67 65 74 20 61 74 20 74 68 65 20 6f 72 64 65 72 get at the order
1490: 69 6e 67 0a 09 23 20 69 6e 66 6f 29 2e 0a 0a 09 ing..# info)....
14a0: 73 65 74 20 6e 20 30 0a 0a 09 73 65 74 20 6c 61 set n 0...set la
14b0: 73 74 6d 65 74 61 20 20 20 20 7b 7d 0a 09 73 65 stmeta {}..se
14c0: 74 20 6c 61 73 74 70 72 6f 6a 65 63 74 20 7b 7d t lastproject {}
14d0: 0a 09 73 65 74 20 72 65 76 69 73 69 6f 6e 73 20 ..set revisions
14e0: 20 20 7b 7d 0a 0a 09 23 20 4e 6f 74 65 3a 20 57 {}...# Note: W
14f0: 65 20 63 6f 75 6c 64 20 68 61 76 65 20 77 72 69 e could have wri
1500: 74 74 65 6e 20 74 68 69 73 20 6c 6f 6f 70 20 74 tten this loop t
1510: 6f 20 63 72 65 61 74 65 20 74 68 65 20 63 73 65 o create the cse
1520: 74 73 0a 09 23 20 20 20 20 20 20 20 65 61 72 6c ts..# earl
1530: 79 2c 20 65 78 74 65 6e 64 69 6e 67 20 74 68 65 y, extending the
1540: 6d 20 77 69 74 68 20 61 6c 6c 20 74 68 65 69 72 m with all their
1550: 20 72 65 76 69 73 69 6f 6e 73 2e 20 54 68 69 73 revisions. This
1560: 0a 09 23 20 20 20 20 20 20 20 68 6f 77 65 76 65 ..# howeve
1570: 72 20 77 6f 75 6c 64 20 6d 65 61 6e 20 6c 6f 74 r would mean lot
1580: 73 20 6f 66 20 28 73 6c 6f 77 29 20 6d 65 74 68 s of (slow) meth
1590: 6f 64 20 69 6e 76 6f 6b 61 74 69 6f 6e 73 0a 09 od invokations..
15a0: 23 20 20 20 20 20 20 20 6f 6e 20 74 68 65 20 63 # on the c
15b0: 73 65 74 73 2e 20 44 6f 69 6e 67 20 69 74 20 6c sets. Doing it l
15c0: 69 6b 65 20 74 68 69 73 2c 20 6c 61 74 65 20 63 ike this, late c
15d0: 72 65 61 74 69 6f 6e 2c 20 6d 65 61 6e 73 0a 09 reation, means..
15e0: 23 20 20 20 20 20 20 20 6c 65 73 73 20 73 75 63 # less suc
15f0: 68 20 63 61 6c 6c 73 2e 20 4e 6f 6e 65 2c 20 62 h calls. None, b
1600: 75 74 20 74 68 65 20 63 72 65 61 74 69 6f 6e 20 ut the creation
1610: 69 74 73 65 6c 66 2e 0a 0a 09 66 6f 72 65 61 63 itself....foreac
1620: 68 20 7b 6d 69 64 20 72 69 64 20 70 69 64 7d 20 h {mid rid pid}
1630: 5b 73 74 61 74 65 20 72 75 6e 20 7b 0a 09 20 20 [state run {..
1640: 20 20 53 45 4c 45 43 54 20 4d 2e 6d 69 64 2c 20 SELECT M.mid,
1650: 52 2e 72 69 64 2c 20 4d 2e 70 69 64 0a 09 20 20 R.rid, M.pid..
1660: 20 20 46 52 4f 4d 20 20 20 72 65 76 69 73 69 6f FROM revisio
1670: 6e 20 52 2c 20 6d 65 74 61 20 4d 20 20 20 2d 2d n R, meta M --
1680: 20 52 20 3d 3d 3e 20 4d 2c 20 75 73 69 6e 67 20 R ==> M, using
1690: 50 4b 20 69 6e 64 65 78 20 6f 66 20 4d 2e 0a 09 PK index of M...
16a0: 20 20 20 20 57 48 45 52 45 20 20 52 2e 6d 69 64 WHERE R.mid
16b0: 20 3d 20 4d 2e 6d 69 64 0a 09 20 20 20 20 4f 52 = M.mid.. OR
16c0: 44 45 52 20 20 42 59 20 4d 2e 6d 69 64 2c 20 52 DER BY M.mid, R
16d0: 2e 64 61 74 65 0a 09 7d 5d 20 7b 0a 09 20 20 20 .date..}] {..
16e0: 20 69 66 20 7b 24 6c 61 73 74 6d 65 74 61 20 21 if {$lastmeta !
16f0: 3d 20 24 6d 69 64 7d 20 7b 0a 09 09 69 66 20 7b = $mid} {...if {
1700: 5b 6c 6c 65 6e 67 74 68 20 24 72 65 76 69 73 69 [llength $revisi
1710: 6f 6e 73 5d 7d 20 7b 0a 09 09 20 20 20 20 69 6e ons]} {... in
1720: 63 72 20 6e 0a 09 09 20 20 20 20 73 65 74 20 20 cr n... set
1730: 70 20 5b 72 65 70 6f 73 69 74 6f 72 79 20 70 72 p [repository pr
1740: 6f 6a 65 63 74 6f 66 20 24 6c 61 73 74 70 72 6f ojectof $lastpro
1750: 6a 65 63 74 5d 0a 09 09 20 20 20 20 6c 61 70 70 ject]... lapp
1760: 65 6e 64 20 63 73 65 74 73 20 5b 70 72 6f 6a 65 end csets [proje
1770: 63 74 3a 3a 72 65 76 20 25 41 55 54 4f 25 20 24 ct::rev %AUTO% $
1780: 70 20 72 65 76 20 24 6c 61 73 74 6d 65 74 61 20 p rev $lastmeta
1790: 24 72 65 76 69 73 69 6f 6e 73 5d 0a 09 09 20 20 $revisions]...
17a0: 20 20 73 65 74 20 72 65 76 69 73 69 6f 6e 73 20 set revisions
17b0: 7b 7d 0a 09 09 7d 0a 09 09 73 65 74 20 6c 61 73 {}...}...set las
17c0: 74 6d 65 74 61 20 20 20 20 24 6d 69 64 0a 09 09 tmeta $mid...
17d0: 73 65 74 20 6c 61 73 74 70 72 6f 6a 65 63 74 20 set lastproject
17e0: 24 70 69 64 0a 09 20 20 20 20 7d 0a 09 20 20 20 $pid.. }..
17f0: 20 6c 61 70 70 65 6e 64 20 72 65 76 69 73 69 6f lappend revisio
1800: 6e 73 20 24 72 69 64 0a 09 7d 0a 0a 09 69 66 20 ns $rid..}...if
1810: 7b 5b 6c 6c 65 6e 67 74 68 20 24 72 65 76 69 73 {[llength $revis
1820: 69 6f 6e 73 5d 7d 20 7b 0a 09 20 20 20 20 69 6e ions]} {.. in
1830: 63 72 20 6e 0a 09 20 20 20 20 73 65 74 20 20 70 cr n.. set p
1840: 20 5b 72 65 70 6f 73 69 74 6f 72 79 20 70 72 6f [repository pro
1850: 6a 65 63 74 6f 66 20 24 6c 61 73 74 70 72 6f 6a jectof $lastproj
1860: 65 63 74 5d 0a 09 20 20 20 20 6c 61 70 70 65 6e ect].. lappen
1870: 64 20 63 73 65 74 73 20 5b 70 72 6f 6a 65 63 74 d csets [project
1880: 3a 3a 72 65 76 20 25 41 55 54 4f 25 20 24 70 20 ::rev %AUTO% $p
1890: 72 65 76 20 24 6c 61 73 74 6d 65 74 61 20 24 72 rev $lastmeta $r
18a0: 65 76 69 73 69 6f 6e 73 5d 0a 09 7d 0a 0a 09 6c evisions]..}...l
18b0: 6f 67 20 77 72 69 74 65 20 34 20 69 6e 69 74 63 og write 4 initc
18c0: 73 65 74 73 20 22 43 72 65 61 74 65 64 20 5b 6e sets "Created [n
18d0: 73 70 20 24 6e 20 7b 72 65 76 69 73 69 6f 6e 20 sp $n {revision
18e0: 63 68 61 6e 67 65 73 65 74 7d 5d 22 0a 09 72 65 changeset}]"..re
18f0: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 turn. }..
1900: 70 72 6f 63 20 43 72 65 61 74 65 53 79 6d 62 6f proc CreateSymbo
1910: 6c 43 68 61 6e 67 65 73 65 74 73 20 7b 63 76 7d lChangesets {cv}
1920: 20 7b 0a 09 75 70 76 61 72 20 31 20 24 63 76 20 {..upvar 1 $cv
1930: 63 73 65 74 73 0a 0a 09 6c 6f 67 20 77 72 69 74 csets...log writ
1940: 65 20 33 20 69 6e 69 74 63 73 65 74 73 20 7b 43 e 3 initcsets {C
1950: 72 65 61 74 65 20 63 68 61 6e 67 65 73 65 74 73 reate changesets
1960: 20 62 61 73 65 64 20 6f 6e 20 73 79 6d 62 6f 6c based on symbol
1970: 73 7d 0a 0a 09 23 20 54 61 67 73 20 61 6e 64 20 s}...# Tags and
1980: 62 72 61 6e 63 68 65 73 20 69 6e 64 75 63 65 20 branches induce
1990: 63 68 61 6e 67 65 73 65 74 73 20 61 73 20 77 65 changesets as we
19a0: 6c 6c 2c 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 ll, containing t
19b0: 68 65 0a 09 23 20 72 65 76 69 73 69 6f 6e 73 20 he..# revisions
19c0: 74 68 65 79 20 61 72 65 20 61 74 74 61 63 68 65 they are attache
19d0: 64 20 74 6f 20 28 74 61 67 73 29 2c 20 6f 72 20 d to (tags), or
19e0: 73 70 61 77 6e 65 64 20 66 72 6f 6d 0a 09 23 20 spawned from..#
19f0: 28 62 72 61 6e 63 68 65 73 29 2e 0a 0a 09 73 65 (branches)....se
1a00: 74 20 6e 20 30 0a 0a 09 23 20 46 69 72 73 74 20 t n 0...# First
1a10: 70 72 6f 63 65 73 73 20 74 68 65 20 74 61 67 73 process the tags
1a20: 2c 20 74 68 65 6e 20 74 68 65 20 62 72 61 6e 63 , then the branc
1a30: 68 65 73 2e 20 57 65 20 6b 6e 6f 77 20 74 68 61 hes. We know tha
1a40: 74 0a 09 23 20 74 68 65 69 72 20 69 64 73 20 64 t..# their ids d
1a50: 6f 20 6e 6f 74 20 6f 76 65 72 6c 61 70 20 77 69 o not overlap wi
1a60: 74 68 20 65 61 63 68 20 6f 74 68 65 72 2e 0a 0a th each other...
1a70: 09 73 65 74 20 6c 61 73 74 73 79 6d 62 6f 6c 20 .set lastsymbol
1a80: 20 7b 7d 0a 09 73 65 74 20 6c 61 73 74 70 72 6f {}..set lastpro
1a90: 6a 65 63 74 20 7b 7d 0a 09 73 65 74 20 72 65 76 ject {}..set rev
1aa0: 69 73 69 6f 6e 73 20 20 20 7b 7d 0a 0a 09 66 6f isions {}...fo
1ab0: 72 65 61 63 68 20 7b 73 69 64 20 72 69 64 20 70 reach {sid rid p
1ac0: 69 64 7d 20 5b 73 74 61 74 65 20 72 75 6e 20 7b id} [state run {
1ad0: 0a 09 20 20 20 20 53 45 4c 45 43 54 20 53 2e 73 .. SELECT S.s
1ae0: 69 64 2c 20 52 2e 72 69 64 2c 20 53 2e 70 69 64 id, R.rid, S.pid
1af0: 0a 09 20 20 20 20 46 52 4f 4d 20 20 74 61 67 20 .. FROM tag
1b00: 54 2c 20 72 65 76 69 73 69 6f 6e 20 52 2c 20 73 T, revision R, s
1b10: 79 6d 62 6f 6c 20 53 20 20 20 20 20 2d 2d 20 54 ymbol S -- T
1b20: 20 3d 3d 3e 20 52 2f 53 2c 20 75 73 69 6e 67 20 ==> R/S, using
1b30: 50 4b 20 69 6e 64 69 63 65 73 20 6f 66 20 52 2c PK indices of R,
1b40: 20 53 2e 0a 09 20 20 20 20 57 48 45 52 45 20 54 S... WHERE T
1b50: 2e 72 65 76 20 3d 20 52 2e 72 69 64 0a 09 20 20 .rev = R.rid..
1b60: 20 20 41 4e 44 20 20 20 54 2e 73 69 64 20 3d 20 AND T.sid =
1b70: 53 2e 73 69 64 0a 09 20 20 20 20 4f 52 44 45 52 S.sid.. ORDER
1b80: 20 42 59 20 53 2e 73 69 64 2c 20 52 2e 64 61 74 BY S.sid, R.dat
1b90: 65 0a 09 7d 5d 20 7b 0a 09 20 20 20 20 69 66 20 e..}] {.. if
1ba0: 7b 24 6c 61 73 74 73 79 6d 62 6f 6c 20 21 3d 20 {$lastsymbol !=
1bb0: 24 73 69 64 7d 20 7b 0a 09 09 69 66 20 7b 5b 6c $sid} {...if {[l
1bc0: 6c 65 6e 67 74 68 20 24 72 65 76 69 73 69 6f 6e length $revision
1bd0: 73 5d 7d 20 7b 0a 09 09 20 20 20 20 69 6e 63 72 s]} {... incr
1be0: 20 6e 0a 09 09 20 20 20 20 73 65 74 20 20 70 20 n... set p
1bf0: 5b 72 65 70 6f 73 69 74 6f 72 79 20 70 72 6f 6a [repository proj
1c00: 65 63 74 6f 66 20 24 6c 61 73 74 70 72 6f 6a 65 ectof $lastproje
1c10: 63 74 5d 0a 09 09 20 20 20 20 6c 61 70 70 65 6e ct]... lappen
1c20: 64 20 63 73 65 74 73 20 5b 70 72 6f 6a 65 63 74 d csets [project
1c30: 3a 3a 72 65 76 20 25 41 55 54 4f 25 20 24 70 20 ::rev %AUTO% $p
1c40: 73 79 6d 20 24 6c 61 73 74 73 79 6d 62 6f 6c 20 sym $lastsymbol
1c50: 24 72 65 76 69 73 69 6f 6e 73 5d 0a 09 09 20 20 $revisions]...
1c60: 20 20 73 65 74 20 72 65 76 69 73 69 6f 6e 73 20 set revisions
1c70: 7b 7d 0a 09 09 7d 0a 09 09 73 65 74 20 6c 61 73 {}...}...set las
1c80: 74 73 79 6d 62 6f 6c 20 20 24 73 69 64 0a 09 09 tsymbol $sid...
1c90: 73 65 74 20 6c 61 73 74 70 72 6f 6a 65 63 74 20 set lastproject
1ca0: 24 70 69 64 0a 09 20 20 20 20 7d 0a 09 20 20 20 $pid.. }..
1cb0: 20 6c 61 70 70 65 6e 64 20 72 65 76 69 73 69 6f lappend revisio
1cc0: 6e 73 20 24 72 69 64 0a 09 7d 0a 0a 09 69 66 20 ns $rid..}...if
1cd0: 7b 5b 6c 6c 65 6e 67 74 68 20 24 72 65 76 69 73 {[llength $revis
1ce0: 69 6f 6e 73 5d 7d 20 7b 0a 09 20 20 20 20 69 6e ions]} {.. in
1cf0: 63 72 20 6e 0a 09 20 20 20 20 73 65 74 20 20 70 cr n.. set p
1d00: 20 5b 72 65 70 6f 73 69 74 6f 72 79 20 70 72 6f [repository pro
1d10: 6a 65 63 74 6f 66 20 24 6c 61 73 74 70 72 6f 6a jectof $lastproj
1d20: 65 63 74 5d 0a 09 20 20 20 20 6c 61 70 70 65 6e ect].. lappen
1d30: 64 20 63 73 65 74 73 20 5b 70 72 6f 6a 65 63 74 d csets [project
1d40: 3a 3a 72 65 76 20 25 41 55 54 4f 25 20 24 70 20 ::rev %AUTO% $p
1d50: 73 79 6d 20 24 6c 61 73 74 73 79 6d 62 6f 6c 20 sym $lastsymbol
1d60: 24 72 65 76 69 73 69 6f 6e 73 5d 0a 09 7d 0a 0a $revisions]..}..
1d70: 09 73 65 74 20 6c 61 73 74 73 79 6d 62 6f 6c 20 .set lastsymbol
1d80: 7b 7d 0a 09 73 65 74 20 6c 61 73 70 72 6f 6a 65 {}..set lasproje
1d90: 63 74 20 7b 7d 0a 09 73 65 74 20 72 65 76 69 73 ct {}..set revis
1da0: 69 6f 6e 73 20 20 7b 7d 0a 0a 09 66 6f 72 65 61 ions {}...forea
1db0: 63 68 20 7b 73 69 64 20 72 69 64 20 70 69 64 7d ch {sid rid pid}
1dc0: 20 5b 73 74 61 74 65 20 72 75 6e 20 7b 0a 09 20 [state run {..
1dd0: 20 20 20 53 45 4c 45 43 54 20 53 2e 73 69 64 2c SELECT S.sid,
1de0: 20 52 2e 72 69 64 2c 20 53 2e 70 69 64 0a 09 20 R.rid, S.pid..
1df0: 20 20 20 46 52 4f 4d 20 20 62 72 61 6e 63 68 20 FROM branch
1e00: 42 2c 20 72 65 76 69 73 69 6f 6e 20 52 2c 20 73 B, revision R, s
1e10: 79 6d 62 6f 6c 20 53 20 20 2d 2d 20 42 20 3d 3d ymbol S -- B ==
1e20: 3e 20 52 2f 53 2c 20 75 73 69 6e 67 20 50 4b 20 > R/S, using PK
1e30: 69 6e 64 69 63 65 73 20 6f 66 20 52 2c 20 53 2e indices of R, S.
1e40: 0a 09 20 20 20 20 57 48 45 52 45 20 42 2e 72 6f .. WHERE B.ro
1e50: 6f 74 20 3d 20 52 2e 72 69 64 0a 09 20 20 20 20 ot = R.rid..
1e60: 41 4e 44 20 20 20 42 2e 73 69 64 20 20 3d 20 53 AND B.sid = S
1e70: 2e 73 69 64 0a 09 20 20 20 20 4f 52 44 45 52 20 .sid.. ORDER
1e80: 42 59 20 53 2e 73 69 64 2c 20 52 2e 64 61 74 65 BY S.sid, R.date
1e90: 0a 09 7d 5d 20 7b 0a 09 20 20 20 20 69 66 20 7b ..}] {.. if {
1ea0: 24 6c 61 73 74 73 79 6d 62 6f 6c 20 21 3d 20 24 $lastsymbol != $
1eb0: 73 69 64 7d 20 7b 0a 09 09 69 66 20 7b 5b 6c 6c sid} {...if {[ll
1ec0: 65 6e 67 74 68 20 24 72 65 76 69 73 69 6f 6e 73 ength $revisions
1ed0: 5d 7d 20 7b 0a 09 09 20 20 20 20 69 6e 63 72 20 ]} {... incr
1ee0: 6e 0a 09 09 20 20 20 20 73 65 74 20 20 70 20 5b n... set p [
1ef0: 72 65 70 6f 73 69 74 6f 72 79 20 70 72 6f 6a 65 repository proje
1f00: 63 74 6f 66 20 24 6c 61 73 74 70 72 6f 6a 65 63 ctof $lastprojec
1f10: 74 5d 0a 09 09 20 20 20 20 6c 61 70 70 65 6e 64 t]... lappend
1f20: 20 63 73 65 74 73 20 5b 70 72 6f 6a 65 63 74 3a csets [project:
1f30: 3a 72 65 76 20 25 41 55 54 4f 25 20 24 70 20 73 :rev %AUTO% $p s
1f40: 79 6d 20 24 6c 61 73 74 73 79 6d 62 6f 6c 20 24 ym $lastsymbol $
1f50: 72 65 76 69 73 69 6f 6e 73 5d 0a 09 09 20 20 20 revisions]...
1f60: 20 73 65 74 20 72 65 76 69 73 69 6f 6e 73 20 7b set revisions {
1f70: 7d 0a 09 09 7d 0a 09 09 73 65 74 20 6c 61 73 74 }...}...set last
1f80: 73 79 6d 62 6f 6c 20 20 24 73 69 64 0a 09 09 73 symbol $sid...s
1f90: 65 74 20 6c 61 73 74 70 72 6f 6a 65 63 74 20 24 et lastproject $
1fa0: 70 69 64 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 pid.. }..
1fb0: 6c 61 70 70 65 6e 64 20 72 65 76 69 73 69 6f 6e lappend revision
1fc0: 73 20 24 72 69 64 0a 09 7d 0a 0a 09 69 66 20 7b s $rid..}...if {
1fd0: 5b 6c 6c 65 6e 67 74 68 20 24 72 65 76 69 73 69 [llength $revisi
1fe0: 6f 6e 73 5d 7d 20 7b 0a 09 20 20 20 20 69 6e 63 ons]} {.. inc
1ff0: 72 20 6e 0a 09 20 20 20 20 73 65 74 20 20 70 20 r n.. set p
2000: 5b 72 65 70 6f 73 69 74 6f 72 79 20 70 72 6f 6a [repository proj
2010: 65 63 74 6f 66 20 24 6c 61 73 74 70 72 6f 6a 65 ectof $lastproje
2020: 63 74 5d 0a 09 20 20 20 20 6c 61 70 70 65 6e 64 ct].. lappend
2030: 20 63 73 65 74 73 20 5b 70 72 6f 6a 65 63 74 3a csets [project:
2040: 3a 72 65 76 20 25 41 55 54 4f 25 20 24 70 20 73 :rev %AUTO% $p s
2050: 79 6d 20 24 6c 61 73 74 73 79 6d 62 6f 6c 20 24 ym $lastsymbol $
2060: 72 65 76 69 73 69 6f 6e 73 5d 0a 09 7d 0a 0a 09 revisions]..}...
2070: 6c 6f 67 20 77 72 69 74 65 20 34 20 69 6e 69 74 log write 4 init
2080: 63 73 65 74 73 20 22 43 72 65 61 74 65 64 20 5b csets "Created [
2090: 6e 73 70 20 24 6e 20 7b 73 79 6d 62 6f 6c 20 63 nsp $n {symbol c
20a0: 68 61 6e 67 65 73 65 74 7d 5d 22 0a 09 72 65 74 hangeset}]"..ret
20b0: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70 urn. }.. p
20c0: 72 6f 63 20 50 65 72 73 69 73 74 54 68 65 43 68 roc PersistTheCh
20d0: 61 6e 67 65 73 65 74 73 20 7b 63 73 65 74 73 7d angesets {csets}
20e0: 20 7b 0a 09 6c 6f 67 20 77 72 69 74 65 20 33 20 {..log write 3
20f0: 69 6e 69 74 63 73 65 74 73 20 7b 53 61 76 69 6e initcsets {Savin
2100: 67 20 74 68 65 20 63 72 65 61 74 65 64 20 63 68 g the created ch
2110: 61 6e 67 65 73 65 74 73 20 74 6f 20 74 68 65 20 angesets to the
2120: 70 65 72 73 69 73 74 65 6e 74 20 73 74 61 74 65 persistent state
2130: 7d 0a 0a 09 66 6f 72 65 61 63 68 20 63 73 65 74 }...foreach cset
2140: 20 24 63 73 65 74 73 20 7b 0a 09 20 20 20 20 24 $csets {.. $
2150: 63 73 65 74 20 70 65 72 73 69 73 74 0a 09 7d 0a cset persist..}.
2160: 0a 09 6c 6f 67 20 77 72 69 74 65 20 34 20 69 6e ..log write 4 in
2170: 69 74 63 73 65 74 73 20 7b 4f 6b 2e 7d 0a 09 72 itcsets {Ok.}..r
2180: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }..
2190: 20 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 # # ## ### ####
21a0: 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 # ######## #####
21b0: 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 ########. ##
21c0: 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 0a 20 Configuration..
21d0: 20 20 20 70 72 61 67 6d 61 20 2d 68 61 73 69 6e pragma -hasin
21e0: 73 74 61 6e 63 65 73 20 20 20 6e 6f 20 3b 20 23 stances no ; #
21f0: 20 73 69 6e 67 6c 65 74 6f 6e 0a 20 20 20 20 70 singleton. p
2200: 72 61 67 6d 61 20 2d 68 61 73 74 79 70 65 69 6e ragma -hastypein
2210: 66 6f 20 20 20 20 6e 6f 20 3b 20 23 20 6e 6f 20 fo no ; # no
2220: 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e 0a 20 20 introspection.
2230: 20 20 70 72 61 67 6d 61 20 2d 68 61 73 74 79 70 pragma -hastyp
2240: 65 64 65 73 74 72 6f 79 20 6e 6f 20 3b 20 23 20 edestroy no ; #
2250: 69 6d 6d 6f 72 74 61 6c 0a 0a 20 20 20 20 23 20 immortal.. #
2260: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 # ## ### ##### #
2270: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
2280: 23 23 23 23 23 0a 7d 0a 0a 6e 61 6d 65 73 70 61 #####.}..namespa
2290: 63 65 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 66 6f ce eval ::vc::fo
22a0: 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 ssil::import::cv
22b0: 73 3a 3a 70 61 73 73 20 7b 0a 20 20 20 20 6e 61 s::pass {. na
22c0: 6d 65 73 70 61 63 65 20 65 78 70 6f 72 74 20 69 mespace export i
22d0: 6e 69 74 63 73 65 74 73 0a 20 20 20 20 6e 61 6d nitcsets. nam
22e0: 65 73 70 61 63 65 20 65 76 61 6c 20 69 6e 69 74 espace eval init
22f0: 63 73 65 74 73 20 7b 0a 09 6e 61 6d 65 73 70 61 csets {..namespa
2300: 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a ce import ::vc::
2310: 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a fossil::import::
2320: 63 76 73 3a 3a 72 65 70 6f 73 69 74 6f 72 79 0a cvs::repository.
2330: 09 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 .namespace impor
2340: 74 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a t ::vc::fossil::
2350: 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 73 74 61 import::cvs::sta
2360: 74 65 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 76 te..namespace ev
2370: 61 6c 20 70 72 6f 6a 65 63 74 20 7b 0a 09 20 20 al project {..
2380: 20 20 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f namespace impo
2390: 72 74 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a rt ::vc::fossil:
23a0: 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 72 :import::cvs::pr
23b0: 6f 6a 65 63 74 3a 3a 72 65 76 0a 09 7d 0a 09 6e oject::rev..}..n
23c0: 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 amespace import
23d0: 3a 3a 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6d 69 73 ::vc::tools::mis
23e0: 63 3a 3a 2a 0a 09 6e 61 6d 65 73 70 61 63 65 20 c::*..namespace
23f0: 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 74 6f 6f import ::vc::too
2400: 6c 73 3a 3a 6c 6f 67 0a 09 6c 6f 67 20 72 65 67 ls::log..log reg
2410: 69 73 74 65 72 20 69 6e 69 74 63 73 65 74 73 0a ister initcsets.
2420: 20 20 20 20 7d 0a 7d 0a 0a 23 20 23 20 23 23 20 }.}..# # ##
2430: 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 ### ##### ######
2440: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 ## #############
2450: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ###############
2460: 23 23 23 23 23 23 0a 23 23 20 52 65 61 64 79 0a ######.## Ready.
2470: 0a 70 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65 .package provide
2480: 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 vc::fossil::imp
2490: 6f 72 74 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a ort::cvs::pass::
24a0: 69 6e 69 74 63 73 65 74 73 20 31 2e 30 0a 72 65 initcsets 1.0.re
24b0: 74 75 72 6e 0a turn.