Artifact 2af84157bc2477fa2c993c3fb31beffc473c1633:
File
tools/cvs2fossil/lib/c2f_pcollar.tcl
part of check-in
[ae19c0fcb4]
- Extended pass manager to handle the skipped and defered passes coming before and after the actually executed passes. Extended passes I and II to have the required methods. Implemented loading (for skipped passes) as skeletons, implemented discarding (for defered passes) completely. Extended state manager with ability to discard state.
by
aku on
2007-10-13 23:29:17.
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 2e 20 54 68 69 73 20 70 61 73 73 20 73 s I. This pass s
0210: 63 61 6e 73 20 74 68 65 20 72 65 70 6f 73 69 74 cans the reposit
0220: 6f 72 79 20 74 6f 20 69 6d 70 6f 72 74 20 66 6f ory to import fo
0230: 72 20 52 43 53 20 61 72 63 68 69 76 65 73 2c 0a r RCS archives,.
0240: 23 23 20 61 6e 64 20 73 6f 72 74 73 20 61 6e 64 ## and sorts and
0250: 20 66 69 6c 74 65 72 73 20 74 68 65 6d 20 69 6e filters them in
0260: 74 6f 20 74 68 65 20 64 65 63 6c 61 72 65 64 20 to the declared
0270: 70 72 6f 6a 65 63 74 73 2c 20 69 66 20 61 6e 79 projects, if any
0280: 0a 23 23 20 57 69 74 68 6f 75 74 20 64 65 63 6c .## Without decl
0290: 61 72 65 64 20 70 72 6f 6a 65 63 74 73 20 74 68 ared projects th
02a0: 65 20 77 68 6f 6c 65 20 72 65 70 6f 73 69 74 6f e whole reposito
02b0: 72 79 20 69 73 20 74 72 65 61 74 65 64 20 61 73 ry is treated as
02c0: 20 61 0a 23 23 20 73 69 6e 67 6c 65 20 70 72 6f a.## single pro
02d0: 6a 65 63 74 2e 0a 0a 23 20 23 20 23 23 20 23 23 ject...# # ## ##
02e0: 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 # ##### ########
02f0: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 20 23 ############# #
0300: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0310: 23 23 23 23 0a 23 23 20 52 65 71 75 69 72 65 6d ####.## Requirem
0320: 65 6e 74 73 0a 0a 70 61 63 6b 61 67 65 20 72 65 ents..package re
0330: 71 75 69 72 65 20 54 63 6c 20 38 2e 34 20 20 20 quire Tcl 8.4
0340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0350: 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 52 65 ; # Re
0360: 71 75 69 72 65 64 20 72 75 6e 74 69 6d 65 2e 0a quired runtime..
0370: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 package require
0380: 73 6e 69 74 20 20 20 20 20 20 20 20 20 20 20 20 snit
0390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
03a0: 20 20 20 20 3b 20 23 20 4f 4f 20 73 79 73 74 65 ; # OO syste
03b0: 6d 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 m..package requi
03c0: 72 65 20 66 69 6c 65 75 74 69 6c 3a 3a 74 72 61 re fileutil::tra
03d0: 76 65 72 73 65 20 20 20 20 20 20 20 20 20 20 20 verse
03e0: 20 20 20 20 20 20 20 3b 20 23 20 44 69 72 65 63 ; # Direc
03f0: 74 6f 72 79 20 74 72 61 76 65 72 73 61 6c 2e 0a tory traversal..
0400: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 package require
0410: 66 69 6c 65 75 74 69 6c 20 20 20 20 20 20 20 20 fileutil
0420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0430: 20 20 20 20 3b 20 23 20 46 69 6c 65 20 26 20 70 ; # File & p
0440: 61 74 68 20 75 74 69 6c 69 74 69 65 73 2e 0a 70 ath utilities..p
0450: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 76 ackage require v
0460: 63 3a 3a 74 6f 6f 6c 73 3a 3a 74 72 6f 75 62 6c c::tools::troubl
0470: 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 e
0480: 20 20 20 3b 20 23 20 45 72 72 6f 72 20 72 65 70 ; # Error rep
0490: 6f 72 74 69 6e 67 2e 0a 70 61 63 6b 61 67 65 20 orting..package
04a0: 72 65 71 75 69 72 65 20 76 63 3a 3a 74 6f 6f 6c require vc::tool
04b0: 73 3a 3a 6c 6f 67 20 20 20 20 20 20 20 20 20 20 s::log
04c0: 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 ; #
04d0: 55 73 65 72 20 66 65 65 64 62 61 63 6b 2e 0a 70 User feedback..p
04e0: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 76 ackage require v
04f0: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor
0500: 74 3a 3a 63 76 73 3a 3a 70 61 73 73 20 20 20 20 t::cvs::pass
0510: 20 20 20 3b 20 23 20 50 61 73 73 20 6d 61 6e 61 ; # Pass mana
0520: 67 65 6d 65 6e 74 2e 0a 70 61 63 6b 61 67 65 20 gement..package
0530: 72 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 73 require vc::foss
0540: 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a il::import::cvs:
0550: 3a 72 65 70 6f 73 69 74 6f 72 79 20 3b 20 23 20 :repository ; #
0560: 52 65 70 6f 73 69 74 6f 72 79 20 6d 61 6e 61 67 Repository manag
0570: 65 6d 65 6e 74 2e 0a 70 61 63 6b 61 67 65 20 72 ement..package r
0580: 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 73 69 equire vc::fossi
0590: 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a l::import::cvs::
05a0: 73 74 61 74 65 20 20 20 20 20 20 3b 20 23 20 53 state ; # S
05b0: 74 61 74 65 20 73 74 6f 72 61 67 65 0a 0a 23 20 tate storage..#
05c0: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 # ## ### ##### #
05d0: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
05e0: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 ##### ##########
05f0: 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 20 52 ###########.## R
0600: 65 67 69 73 74 65 72 20 74 68 65 20 70 61 73 73 egister the pass
0610: 20 77 69 74 68 20 74 68 65 20 6d 61 6e 61 67 65 with the manage
0620: 6d 65 6e 74 0a 0a 76 63 3a 3a 66 6f 73 73 69 6c ment..vc::fossil
0630: 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 ::import::cvs::p
0640: 61 73 73 20 64 65 66 69 6e 65 20 5c 0a 20 20 20 ass define \.
0650: 20 43 6f 6c 6c 65 63 74 41 72 20 5c 0a 20 20 20 CollectAr \.
0660: 20 7b 43 6f 6c 6c 65 63 74 20 61 72 63 68 69 76 {Collect archiv
0670: 65 73 20 69 6e 20 72 65 70 6f 73 69 74 6f 72 79 es in repository
0680: 7d 20 5c 0a 20 20 20 20 3a 3a 76 63 3a 3a 66 6f } \. ::vc::fo
0690: 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 ssil::import::cv
06a0: 73 3a 3a 70 61 73 73 3a 3a 63 6f 6c 6c 61 72 0a s::pass::collar.
06b0: 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 .# # ## ### ####
06c0: 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 # ######## #####
06d0: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 ######## #######
06e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 ##############.#
06f0: 23 20 0a 0a 73 6e 69 74 3a 3a 74 79 70 65 20 3a # ..snit::type :
0700: 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 :vc::fossil::imp
0710: 6f 72 74 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a ort::cvs::pass::
0720: 63 6f 6c 6c 61 72 20 7b 0a 20 20 20 20 23 20 23 collar {. # #
0730: 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 ## ### ##### ##
0740: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 ###### #########
0750: 23 23 23 23 0a 20 20 20 20 23 23 20 50 75 62 6c ####. ## Publ
0760: 69 63 20 41 50 49 0a 0a 20 20 20 20 74 79 70 65 ic API.. type
0770: 6d 65 74 68 6f 64 20 73 65 74 75 70 20 7b 7d 20 method setup {}
0780: 7b 0a 09 23 20 44 65 66 69 6e 65 20 6e 61 6d 65 {..# Define name
0790: 73 20 61 6e 64 20 73 74 72 75 63 74 75 72 65 20 s and structure
07a0: 6f 66 20 74 68 65 20 70 65 72 73 69 73 74 65 6e of the persisten
07b0: 74 20 73 74 61 74 65 20 6f 66 20 74 68 69 73 0a t state of this.
07c0: 09 23 20 70 61 73 73 2e 0a 0a 09 23 20 57 65 20 .# pass....# We
07d0: 64 65 61 6c 20 77 69 74 68 20 72 65 70 6f 73 69 deal with reposi
07e0: 74 6f 72 79 20 70 72 6f 6a 65 63 74 73 2c 20 61 tory projects, a
07f0: 6e 64 20 74 68 65 20 72 63 73 20 61 72 63 68 69 nd the rcs archi
0800: 76 65 20 66 69 6c 65 73 0a 09 23 20 69 6e 20 74 ve files..# in t
0810: 68 65 20 70 72 6f 6a 65 63 74 73 2e 0a 0a 09 23 he projects....#
0820: 20 46 6f 72 20 74 68 65 20 66 69 72 73 74 2c 20 For the first,
0830: 70 72 6f 6a 65 63 74 73 2c 20 77 65 20 6b 65 65 projects, we kee
0840: 70 20 74 68 65 69 72 20 6e 61 6d 65 73 2c 20 77 p their names, w
0850: 68 69 63 68 20 61 72 65 0a 09 23 20 74 68 65 69 hich are..# thei
0860: 72 20 70 61 74 68 73 20 72 65 6c 61 74 69 76 65 r paths relative
0870: 20 74 6f 20 74 68 65 20 62 61 73 65 20 64 69 72 to the base dir
0880: 65 63 74 6f 72 79 20 6f 66 20 74 68 65 20 77 68 ectory of the wh
0890: 6f 6c 65 0a 09 23 20 72 65 70 6f 73 69 74 6f 72 ole..# repositor
08a0: 79 2e 20 54 68 65 73 65 20 68 61 76 65 20 74 6f y. These have to
08b0: 20 62 65 20 67 6c 6f 62 61 6c 6c 79 20 75 6e 69 be globally uni
08c0: 71 75 65 2c 20 69 2e 65 2e 20 6e 6f 20 74 77 6f que, i.e. no two
08d0: 0a 09 23 20 70 72 6f 6a 65 63 74 73 20 63 61 6e ..# projects can
08e0: 20 68 61 76 65 20 74 68 65 20 73 61 6d 65 20 6e have the same n
08f0: 61 6d 65 2e 0a 0a 09 23 20 46 6f 72 20 74 68 65 ame....# For the
0900: 20 66 69 6c 65 73 20 77 65 20 6b 65 65 70 20 74 files we keep t
0910: 68 65 69 72 20 6e 61 6d 65 73 2c 20 77 68 69 63 heir names, whic
0920: 68 20 61 72 65 20 74 68 65 69 72 20 70 61 74 68 h are their path
0930: 73 0a 09 23 20 72 65 6c 61 74 69 76 65 20 74 6f s..# relative to
0940: 20 74 68 65 20 62 61 73 65 20 64 69 72 65 63 74 the base direct
0950: 6f 72 79 20 6f 66 20 74 68 65 20 77 68 6f 6c 65 ory of the whole
0960: 20 70 72 6f 6a 65 63 74 21 20 54 68 65 73 65 0a project! These.
0970: 09 23 20 68 61 76 65 20 74 6f 20 62 65 20 75 6e .# have to be un
0980: 69 71 75 65 20 77 69 74 68 69 6e 20 61 20 70 72 ique within a pr
0990: 6f 6a 65 63 74 2c 20 68 6f 77 65 76 65 72 20 67 oject, however g
09a0: 6c 6f 62 61 6c 6c 79 20 74 68 69 73 0a 09 23 20 lobally this..#
09b0: 64 6f 65 73 20 6e 6f 74 20 68 6f 6c 64 2c 20 61 does not hold, a
09c0: 20 6e 61 6d 65 20 6d 61 79 20 6f 63 63 75 72 20 name may occur
09d0: 73 65 76 65 72 61 6c 20 74 69 6d 65 73 2c 20 69 several times, i
09e0: 6e 20 64 69 66 66 65 72 65 6e 74 0a 09 23 20 70 n different..# p
09f0: 72 6f 6a 65 63 74 73 2e 20 57 65 20 66 75 72 74 rojects. We furt
0a00: 68 65 72 20 73 74 6f 72 65 20 74 68 65 20 75 73 her store the us
0a10: 65 72 20 76 69 73 69 62 6c 65 20 66 69 6c 65 20 er visible file
0a20: 6e 61 6d 65 0a 09 23 20 61 73 73 6f 63 69 61 74 name..# associat
0a30: 65 64 20 77 69 74 68 20 74 68 65 20 72 63 73 20 ed with the rcs
0a40: 61 72 63 68 69 76 65 2e 0a 0a 09 23 20 42 6f 74 archive....# Bot
0a50: 68 20 70 72 6f 6a 65 63 74 73 20 61 6e 64 20 66 h projects and f
0a60: 69 6c 65 73 20 61 72 65 20 69 64 65 6e 74 69 66 iles are identif
0a70: 69 65 64 20 62 79 20 67 6c 6f 62 61 6c 6c 79 20 ied by globally
0a80: 75 6e 69 71 75 65 0a 09 23 20 69 6e 74 65 67 65 unique..# intege
0a90: 72 20 69 64 73 2c 20 61 75 74 6f 6d 61 74 69 63 r ids, automatic
0aa0: 61 6c 6c 79 20 61 73 73 69 67 6e 65 64 20 62 79 ally assigned by
0ab0: 20 74 68 65 20 64 61 74 61 62 61 73 65 2e 0a 0a the database...
0ac0: 09 73 74 61 74 65 20 77 72 69 74 69 6e 67 20 70 .state writing p
0ad0: 72 6f 6a 65 63 74 20 7b 0a 09 20 20 20 20 70 69 roject {.. pi
0ae0: 64 20 20 49 4e 54 45 47 45 52 20 20 4e 4f 54 20 d INTEGER NOT
0af0: 4e 55 4c 4c 20 20 50 52 49 4d 41 52 59 20 4b 45 NULL PRIMARY KE
0b00: 59 20 41 55 54 4f 49 4e 43 52 45 4d 45 4e 54 2c Y AUTOINCREMENT,
0b10: 0a 09 20 20 20 20 6e 61 6d 65 20 54 45 58 54 20 .. name TEXT
0b20: 20 20 20 20 4e 4f 54 20 4e 55 4c 4c 20 20 55 4e NOT NULL UN
0b30: 49 51 55 45 0a 09 7d 0a 09 73 74 61 74 65 20 77 IQUE..}..state w
0b40: 72 69 74 69 6e 67 20 66 69 6c 65 20 7b 0a 09 20 riting file {..
0b50: 20 20 20 66 69 64 20 20 20 20 20 49 4e 54 45 47 fid INTEG
0b60: 45 52 20 20 4e 4f 54 20 4e 55 4c 4c 20 20 50 52 ER NOT NULL PR
0b70: 49 4d 41 52 59 20 4b 45 59 20 41 55 54 4f 49 4e IMARY KEY AUTOIN
0b80: 43 52 45 4d 45 4e 54 2c 0a 09 20 20 20 20 70 69 CREMENT,.. pi
0b90: 64 20 20 20 20 20 49 4e 54 45 47 45 52 20 20 4e d INTEGER N
0ba0: 4f 54 20 4e 55 4c 4c 20 20 52 45 46 45 52 45 4e OT NULL REFEREN
0bb0: 43 45 53 20 70 72 6f 6a 65 63 74 2c 20 20 20 20 CES project,
0bc0: 20 20 20 2d 2d 20 70 72 6f 6a 65 63 74 20 74 68 -- project th
0bd0: 65 20 66 69 6c 65 20 62 65 6c 6f 6e 67 73 20 74 e file belongs t
0be0: 6f 0a 09 20 20 20 20 6e 61 6d 65 20 20 20 20 54 o.. name T
0bf0: 45 58 54 20 20 20 20 20 4e 4f 54 20 4e 55 4c 4c EXT NOT NULL
0c00: 2c 0a 09 20 20 20 20 76 69 73 69 62 6c 65 20 54 ,.. visible T
0c10: 45 58 54 20 20 20 20 20 4e 4f 54 20 4e 55 4c 4c EXT NOT NULL
0c20: 2c 0a 09 20 20 20 20 65 78 65 63 20 20 20 20 49 ,.. exec I
0c30: 4e 54 45 47 45 52 20 20 4e 4f 54 20 4e 55 4c 4c NTEGER NOT NULL
0c40: 2c 20 2d 2d 20 62 6f 6f 6c 65 61 6e 2c 20 27 66 , -- boolean, 'f
0c50: 69 6c 65 20 65 78 65 63 75 74 61 62 6c 65 27 2e ile executable'.
0c60: 0a 09 20 20 20 20 55 4e 49 51 55 45 20 28 70 69 .. UNIQUE (pi
0c70: 64 2c 20 6e 61 6d 65 29 20 20 20 20 20 20 20 20 d, name)
0c80: 20 2d 2d 20 66 69 6c 65 20 6e 61 6d 65 73 20 61 -- file names a
0c90: 72 65 20 75 6e 69 71 75 65 20 77 69 74 68 69 6e re unique within
0ca0: 20 61 20 70 72 6f 6a 65 63 74 0a 09 7d 0a 09 72 a project..}..r
0cb0: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }..
0cc0: 20 74 79 70 65 6d 65 74 68 6f 64 20 6c 6f 61 64 typemethod load
0cd0: 20 7b 7d 20 7b 09 0a 09 23 20 50 61 73 73 20 6d {} {...# Pass m
0ce0: 61 6e 61 67 65 72 20 69 6e 74 65 72 66 61 63 65 anager interface
0cf0: 2e 20 45 78 65 63 75 74 65 64 20 66 6f 72 20 61 . Executed for a
0d00: 6c 6c 20 70 61 73 73 65 73 20 62 65 66 6f 72 65 ll passes before
0d10: 20 74 68 65 0a 09 23 20 72 75 6e 20 70 61 73 73 the..# run pass
0d20: 65 73 2c 20 74 6f 20 6c 6f 61 64 20 61 6c 6c 20 es, to load all
0d30: 64 61 74 61 20 6f 66 20 74 68 65 69 72 20 70 61 data of their pa
0d40: 73 73 20 66 72 6f 6d 20 74 68 65 20 73 74 61 74 ss from the stat
0d50: 65 2c 0a 09 23 20 61 73 20 69 66 20 69 74 20 68 e,..# as if it h
0d60: 61 64 20 62 65 65 6e 20 63 6f 6d 70 75 74 65 64 ad been computed
0d70: 20 62 79 20 74 68 65 20 70 61 73 73 20 69 74 73 by the pass its
0d80: 65 6c 66 2e 0a 0a 09 73 74 61 74 65 20 72 65 61 elf....state rea
0d90: 64 69 6e 67 20 70 72 6f 6a 65 63 74 0a 09 73 74 ding project..st
0da0: 61 74 65 20 72 65 61 64 69 6e 67 20 66 69 6c 65 ate reading file
0db0: 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a ..return. }..
0dc0: 20 20 20 20 74 79 70 65 6d 65 74 68 6f 64 20 72 typemethod r
0dd0: 75 6e 20 7b 7d 20 7b 0a 09 23 20 50 61 73 73 20 un {} {..# Pass
0de0: 6d 61 6e 61 67 65 72 20 69 6e 74 65 72 66 61 63 manager interfac
0df0: 65 2e 20 45 78 65 63 75 74 65 64 20 74 6f 20 70 e. Executed to p
0e00: 65 72 66 6f 72 6d 20 74 68 65 0a 09 23 20 66 75 erform the..# fu
0e10: 6e 63 74 69 6f 6e 61 6c 69 74 79 20 6f 66 20 74 nctionality of t
0e20: 68 65 20 70 61 73 73 2e 0a 0a 09 73 65 74 20 72 he pass....set r
0e30: 62 61 73 65 20 5b 72 65 70 6f 73 69 74 6f 72 79 base [repository
0e40: 20 62 61 73 65 3f 5d 0a 09 66 6f 72 65 61 63 68 base?]..foreach
0e50: 20 70 72 6f 6a 65 63 74 20 5b 72 65 70 6f 73 69 project [reposi
0e60: 74 6f 72 79 20 70 72 6f 6a 65 63 74 73 5d 20 7b tory projects] {
0e70: 0a 09 20 20 20 20 73 65 74 20 62 61 73 65 20 5b .. set base [
0e80: 66 69 6c 65 20 6a 6f 69 6e 20 24 72 62 61 73 65 file join $rbase
0e90: 20 5b 24 70 72 6f 6a 65 63 74 20 62 61 73 65 5d [$project base]
0ea0: 5d 0a 09 20 20 20 20 6c 6f 67 20 77 72 69 74 65 ].. log write
0eb0: 20 31 20 63 6f 6c 6c 61 72 20 22 53 63 61 6e 20 1 collar "Scan
0ec0: 24 62 61 73 65 22 0a 0a 09 20 20 20 20 73 65 74 $base"... set
0ed0: 20 74 72 61 76 65 72 73 65 20 5b 66 69 6c 65 75 traverse [fileu
0ee0: 74 69 6c 3a 3a 74 72 61 76 65 72 73 65 20 25 41 til::traverse %A
0ef0: 55 54 4f 25 20 24 62 61 73 65 20 5c 0a 09 09 09 UTO% $base \....
0f00: 20 20 20 20 20 20 2d 70 72 65 66 69 6c 74 65 72 -prefilter
0f10: 20 5b 6d 79 70 72 6f 63 20 46 69 6c 74 65 72 41 [myproc FilterA
0f20: 74 74 69 63 53 75 62 64 69 72 20 24 62 61 73 65 tticSubdir $base
0f30: 5d 5d 0a 09 20 20 20 20 73 65 74 20 6e 20 30 0a ]].. set n 0.
0f40: 09 20 20 20 20 73 65 74 20 72 20 7b 7d 0a 0a 09 . set r {}...
0f50: 20 20 20 20 24 74 72 61 76 65 72 73 65 20 66 6f $traverse fo
0f60: 72 65 61 63 68 20 70 61 74 68 20 7b 0a 09 09 73 reach path {...s
0f70: 65 74 20 72 63 73 20 5b 66 69 6c 65 75 74 69 6c et rcs [fileutil
0f80: 3a 3a 73 74 72 69 70 50 61 74 68 20 24 62 61 73 ::stripPath $bas
0f90: 65 20 24 70 61 74 68 5d 0a 09 09 69 66 20 7b 5b e $path]...if {[
0fa0: 49 73 43 56 53 41 64 6d 69 6e 20 20 20 20 24 72 IsCVSAdmin $r
0fb0: 63 73 5d 7d 20 20 63 6f 6e 74 69 6e 75 65 0a 09 cs]} continue..
0fc0: 09 69 66 20 7b 21 5b 49 73 52 43 53 41 72 63 68 .if {![IsRCSArch
0fd0: 69 76 65 20 24 70 61 74 68 5d 7d 20 63 6f 6e 74 ive $path]} cont
0fe0: 69 6e 75 65 0a 0a 09 09 73 65 74 20 75 73 72 20 inue....set usr
0ff0: 5b 55 73 65 72 50 61 74 68 20 24 72 63 73 20 69 [UserPath $rcs i
1000: 73 61 74 74 69 63 5d 0a 09 09 69 66 20 7b 5b 49 sattic]...if {[I
1010: 73 53 75 70 65 72 63 65 64 65 64 20 24 62 61 73 sSuperceded $bas
1020: 65 20 24 72 63 73 20 24 75 73 72 20 24 69 73 61 e $rcs $usr $isa
1030: 74 74 69 63 5d 7d 20 63 6f 6e 74 69 6e 75 65 0a ttic]} continue.
1040: 0a 09 09 69 66 20 7b 0a 09 09 20 20 20 20 5b 66 ...if {... [f
1050: 69 6c 65 20 65 78 69 73 74 73 20 20 20 20 20 20 ile exists
1060: 24 62 61 73 65 2f 24 75 73 72 5d 20 26 26 0a 09 $base/$usr] &&..
1070: 09 20 20 20 20 5b 66 69 6c 65 20 69 73 64 69 72 . [file isdir
1080: 65 63 74 6f 72 79 20 24 62 61 73 65 2f 24 75 73 ectory $base/$us
1090: 72 5d 0a 09 09 7d 20 7b 0a 09 09 20 20 20 20 74 r]...} {... t
10a0: 72 6f 75 62 6c 65 20 66 61 74 61 6c 20 22 44 69 rouble fatal "Di
10b0: 72 65 63 74 6f 72 79 20 6e 61 6d 65 20 63 6f 6e rectory name con
10c0: 66 6c 69 63 74 73 20 77 69 74 68 20 66 69 6c 65 flicts with file
10d0: 6e 61 6d 65 2e 22 0a 09 09 20 20 20 20 74 72 6f name."... tro
10e0: 75 62 6c 65 20 66 61 74 61 6c 20 22 50 6c 65 61 uble fatal "Plea
10f0: 73 65 20 72 65 6d 6f 76 65 20 6f 72 20 72 65 6e se remove or ren
1100: 61 6d 65 20 6f 6e 65 20 6f 66 20 74 68 65 20 66 ame one of the f
1110: 6f 6c 6c 6f 77 69 6e 67 3a 22 0a 09 09 20 20 20 ollowing:"...
1120: 20 74 72 6f 75 62 6c 65 20 66 61 74 61 6c 20 22 trouble fatal "
1130: 20 20 20 20 24 62 61 73 65 2f 24 75 73 72 22 0a $base/$usr".
1140: 09 09 20 20 20 20 74 72 6f 75 62 6c 65 20 66 61 .. trouble fa
1150: 74 61 6c 20 22 20 20 20 20 24 62 61 73 65 2f 24 tal " $base/$
1160: 72 63 73 22 0a 09 09 20 20 20 20 63 6f 6e 74 69 rcs"... conti
1170: 6e 75 65 0a 09 09 7d 0a 0a 09 09 6c 6f 67 20 77 nue...}....log w
1180: 72 69 74 65 20 34 20 63 6f 6c 6c 61 72 20 22 46 rite 4 collar "F
1190: 6f 75 6e 64 20 20 20 24 72 63 73 22 0a 09 09 24 ound $rcs"...$
11a0: 70 72 6f 6a 65 63 74 20 61 64 64 66 69 6c 65 20 project addfile
11b0: 24 72 63 73 20 24 75 73 72 20 5b 66 69 6c 65 20 $rcs $usr [file
11c0: 65 78 65 63 75 74 61 62 6c 65 20 24 72 63 73 5d executable $rcs]
11d0: 0a 0a 09 09 69 6e 63 72 20 6e 0a 09 09 69 66 20 ....incr n...if
11e0: 7b 5b 6c 6f 67 20 76 65 72 62 6f 73 69 74 79 3f {[log verbosity?
11f0: 5d 20 3c 20 34 7d 20 7b 0a 09 09 20 20 20 20 6c ] < 4} {... l
1200: 6f 67 20 70 72 6f 67 72 65 73 73 20 30 20 63 6f og progress 0 co
1210: 6c 6c 61 72 20 24 6e 20 7b 7d 0a 09 09 7d 0a 09 llar $n {}...}..
1220: 20 20 20 20 7d 0a 0a 09 20 20 20 20 24 74 72 61 }... $tra
1230: 76 65 72 73 65 20 64 65 73 74 72 6f 79 0a 09 7d verse destroy..}
1240: 0a 0a 09 72 65 70 6f 73 69 74 6f 72 79 20 70 72 ...repository pr
1250: 69 6e 74 73 74 61 74 69 73 74 69 63 73 0a 09 72 intstatistics..r
1260: 65 70 6f 73 69 74 6f 72 79 20 70 65 72 73 69 73 epository persis
1270: 74 0a 0a 09 6c 6f 67 20 77 72 69 74 65 20 31 20 t...log write 1
1280: 63 6f 6c 6c 61 72 20 22 53 63 61 6e 20 63 6f 6d collar "Scan com
1290: 70 6c 65 74 65 64 22 0a 09 72 65 74 75 72 6e 0a pleted"..return.
12a0: 20 20 20 20 7d 0a 0a 20 20 20 20 74 79 70 65 6d }.. typem
12b0: 65 74 68 6f 64 20 64 69 73 63 61 72 64 20 7b 7d ethod discard {}
12c0: 20 7b 0a 09 23 20 50 61 73 73 20 6d 61 6e 61 67 {..# Pass manag
12d0: 65 72 20 69 6e 74 65 72 66 61 63 65 2e 20 45 78 er interface. Ex
12e0: 65 63 75 74 65 64 20 66 6f 72 20 61 6c 6c 20 70 ecuted for all p
12f0: 61 73 73 65 73 20 61 66 74 65 72 20 74 68 65 0a asses after the.
1300: 09 23 20 72 75 6e 20 70 61 73 73 65 73 2c 20 74 .# run passes, t
1310: 6f 20 72 65 6d 6f 76 65 20 61 6c 6c 20 64 61 74 o remove all dat
1320: 61 20 6f 66 20 74 68 69 73 20 70 61 73 73 20 66 a of this pass f
1330: 72 6f 6d 20 74 68 65 20 73 74 61 74 65 2c 0a 09 rom the state,..
1340: 23 20 61 73 20 62 65 69 6e 67 20 6f 75 74 20 6f # as being out o
1350: 66 20 64 61 74 65 2e 0a 0a 09 73 74 61 74 65 20 f date....state
1360: 64 69 73 63 61 72 64 20 70 72 6f 6a 65 63 74 0a discard project.
1370: 09 73 74 61 74 65 20 64 69 73 63 61 72 64 20 66 .state discard f
1380: 69 6c 65 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 ile..return.
1390: 7d 0a 0a 20 20 20 20 74 79 70 65 6d 65 74 68 6f }.. typemetho
13a0: 64 20 69 67 6e 6f 72 65 5f 63 6f 6e 66 6c 69 63 d ignore_conflic
13b0: 74 69 6e 67 5f 61 74 74 69 63 73 20 7b 7d 20 7b ting_attics {} {
13c0: 0a 09 73 65 74 20 6d 79 69 67 6e 6f 72 65 20 31 ..set myignore 1
13d0: 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a ..return. }..
13e0: 20 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23 # # ## ### #
13f0: 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 #### ######## ##
1400: 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 ###########.
1410: 23 23 20 49 6e 74 65 72 6e 61 6c 20 6d 65 74 68 ## Internal meth
1420: 6f 64 73 0a 0a 20 20 20 20 74 79 70 65 76 61 72 ods.. typevar
1430: 69 61 62 6c 65 20 6d 79 69 67 6e 6f 72 65 20 30 iable myignore 0
1440: 0a 0a 20 20 20 20 70 72 6f 63 20 46 69 6c 74 65 .. proc Filte
1450: 72 41 74 74 69 63 53 75 62 64 69 72 20 7b 62 61 rAtticSubdir {ba
1460: 73 65 20 70 61 74 68 7d 20 7b 0a 09 23 20 54 68 se path} {..# Th
1470: 69 73 20 63 6f 6d 6d 61 6e 64 20 69 73 20 75 73 is command is us
1480: 65 64 20 62 79 20 74 68 65 20 74 72 61 76 65 72 ed by the traver
1490: 73 65 72 20 74 6f 20 70 72 65 76 65 6e 74 20 69 ser to prevent i
14a0: 74 20 66 72 6f 6d 0a 09 23 20 73 63 61 6e 6e 69 t from..# scanni
14b0: 6e 67 20 69 6e 74 6f 20 73 75 62 64 69 72 65 63 ng into subdirec
14c0: 74 6f 72 69 65 73 20 6f 66 20 61 6e 20 41 74 74 tories of an Att
14d0: 69 63 2e 20 57 65 20 67 65 74 20 61 77 61 79 20 ic. We get away
14e0: 77 69 74 68 0a 09 23 20 63 68 65 63 6b 69 6e 67 with..# checking
14f0: 20 74 68 65 20 69 6d 6d 65 64 69 61 74 65 20 70 the immediate p
1500: 61 72 65 6e 74 20 64 69 72 65 63 74 6f 72 79 20 arent directory
1510: 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 of the current p
1520: 61 74 68 0a 09 23 20 61 73 20 6f 75 72 20 72 65 ath..# as our re
1530: 6a 65 63 74 69 6f 6e 20 6d 65 61 6e 73 20 74 68 jection means th
1540: 61 74 20 64 65 65 70 65 72 20 70 61 74 68 20 64 at deeper path d
1550: 6f 20 6e 6f 74 20 6f 63 63 75 72 2e 0a 0a 09 69 o not occur....i
1560: 66 20 7b 5b 66 69 6c 65 20 74 61 69 6c 20 5b 66 f {[file tail [f
1570: 69 6c 65 20 64 69 72 6e 61 6d 65 20 24 70 61 74 ile dirname $pat
1580: 68 5d 5d 20 65 71 20 22 41 74 74 69 63 22 7d 20 h]] eq "Attic"}
1590: 7b 0a 09 20 20 20 20 73 65 74 20 61 64 20 5b 66 {.. set ad [f
15a0: 69 6c 65 75 74 69 6c 3a 3a 73 74 72 69 70 50 61 ileutil::stripPa
15b0: 74 68 20 24 62 61 73 65 20 24 70 61 74 68 5d 0a th $base $path].
15c0: 09 20 20 20 20 6c 6f 67 20 77 72 69 74 65 20 31 . log write 1
15d0: 20 63 6f 6c 6c 61 72 20 22 44 69 72 65 63 74 6f collar "Directo
15e0: 72 79 20 24 61 64 20 66 6f 75 6e 64 20 69 6e 20 ry $ad found in
15f0: 41 74 74 69 63 2c 20 69 67 6e 6f 72 69 6e 67 2e Attic, ignoring.
1600: 22 0a 09 20 20 20 20 72 65 74 75 72 6e 20 30 0a ".. return 0.
1610: 09 7d 0a 09 72 65 74 75 72 6e 20 31 0a 20 20 20 .}..return 1.
1620: 20 7d 0a 0a 20 20 20 20 70 72 6f 63 20 49 73 52 }.. proc IsR
1630: 43 53 41 72 63 68 69 76 65 20 7b 70 61 74 68 7d CSArchive {path}
1640: 20 7b 0a 09 69 66 20 7b 21 5b 73 74 72 69 6e 67 {..if {![string
1650: 20 6d 61 74 63 68 20 2a 2c 76 20 24 70 61 74 68 match *,v $path
1660: 5d 7d 20 20 20 20 20 7b 72 65 74 75 72 6e 20 30 ]} {return 0
1670: 7d 0a 09 69 66 20 7b 5b 66 69 6c 65 75 74 69 6c }..if {[fileutil
1680: 3a 3a 74 65 73 74 20 24 70 61 74 68 20 66 72 20 ::test $path fr
1690: 6d 73 67 5d 7d 20 7b 72 65 74 75 72 6e 20 31 7d msg]} {return 1}
16a0: 0a 09 74 72 6f 75 62 6c 65 20 77 61 72 6e 20 24 ..trouble warn $
16b0: 6d 73 67 0a 09 72 65 74 75 72 6e 20 30 0a 20 20 msg..return 0.
16c0: 20 20 7d 0a 0a 20 20 20 20 70 72 6f 63 20 49 73 }.. proc Is
16d0: 43 56 53 41 64 6d 69 6e 20 7b 72 63 73 7d 20 7b CVSAdmin {rcs} {
16e0: 0a 09 69 66 20 7b 21 5b 73 74 72 69 6e 67 20 6d ..if {![string m
16f0: 61 74 63 68 20 43 56 53 52 4f 4f 54 2f 2a 20 24 atch CVSROOT/* $
1700: 72 63 73 5d 7d 20 7b 72 65 74 75 72 6e 20 30 7d rcs]} {return 0}
1710: 0a 09 6c 6f 67 20 77 72 69 74 65 20 34 20 63 6f ..log write 4 co
1720: 6c 6c 61 72 20 22 49 67 6e 6f 72 65 64 20 24 72 llar "Ignored $r
1730: 63 73 2c 20 61 64 6d 69 6e 69 73 74 72 61 74 69 cs, administrati
1740: 76 65 20 61 72 63 68 69 76 65 22 0a 09 72 65 74 ve archive"..ret
1750: 75 72 6e 20 31 0a 20 20 20 20 7d 0a 0a 20 20 20 urn 1. }..
1760: 20 70 72 6f 63 20 55 73 65 72 50 61 74 68 20 7b proc UserPath {
1770: 72 63 73 20 69 61 76 7d 20 7b 0a 09 75 70 76 61 rcs iav} {..upva
1780: 72 20 31 20 24 69 61 76 20 69 73 61 74 74 69 63 r 1 $iav isattic
1790: 0a 0a 09 23 20 44 65 72 69 76 65 20 74 68 65 20 ...# Derive the
17a0: 75 73 65 72 2d 76 69 73 69 62 6c 65 20 70 61 74 user-visible pat
17b0: 68 20 66 72 6f 6d 20 74 68 65 20 72 63 73 20 70 h from the rcs p
17c0: 61 74 68 2e 20 4d 65 61 6e 69 6e 67 3a 0a 09 23 ath. Meaning:..#
17d0: 20 43 68 6f 70 20 6f 66 66 20 74 68 65 20 22 2c Chop off the ",
17e0: 76 22 20 73 75 66 66 69 78 2c 20 61 6e 64 20 72 v" suffix, and r
17f0: 65 6d 6f 76 65 20 61 20 70 6f 73 73 69 62 6c 65 emove a possible
1800: 20 22 41 74 74 69 63 22 2e 0a 0a 09 73 65 74 20 "Attic"....set
1810: 66 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 f [string range
1820: 24 72 63 73 20 30 20 65 6e 64 2d 32 5d 0a 0a 09 $rcs 0 end-2]...
1830: 69 66 20 7b 22 41 74 74 69 63 22 20 65 71 20 5b if {"Attic" eq [
1840: 6c 69 6e 64 65 78 20 5b 66 69 6c 65 20 73 70 6c lindex [file spl
1850: 69 74 20 24 72 63 73 5d 20 65 6e 64 2d 31 5d 7d it $rcs] end-1]}
1860: 20 7b 0a 0a 09 20 20 20 20 23 20 54 68 65 20 63 {... # The c
1870: 6f 6e 73 74 72 75 63 74 69 6f 6e 20 62 65 6c 6f onstruction belo
1880: 77 20 65 6e 73 75 72 65 73 20 74 68 61 74 20 41 w ensures that A
1890: 74 74 69 63 2f 58 20 6d 61 70 73 20 74 6f 20 58 ttic/X maps to X
18a0: 0a 09 20 20 20 20 23 20 69 6e 73 74 65 61 64 20 .. # instead
18b0: 6f 66 20 2e 2f 58 2e 20 4f 74 68 65 72 77 69 73 of ./X. Otherwis
18c0: 65 2c 20 59 2f 41 74 74 69 63 2f 58 20 6d 61 70 e, Y/Attic/X map
18d0: 73 20 74 6f 20 59 2f 58 2e 0a 0a 09 20 20 20 20 s to Y/X....
18e0: 73 65 74 20 66 78 20 5b 66 69 6c 65 20 64 69 72 set fx [file dir
18f0: 6e 61 6d 65 20 5b 66 69 6c 65 20 64 69 72 6e 61 name [file dirna
1900: 6d 65 20 24 66 5d 5d 0a 09 20 20 20 20 73 65 74 me $f]].. set
1910: 20 66 20 20 5b 66 69 6c 65 20 74 61 69 6c 20 24 f [file tail $
1920: 66 5d 0a 09 20 20 20 20 69 66 20 7b 24 66 78 20 f].. if {$fx
1930: 6e 65 20 22 2e 22 7d 20 7b 20 73 65 74 20 66 20 ne "."} { set f
1940: 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 66 78 20 24 [file join $fx $
1950: 66 5d 20 7d 0a 0a 09 20 20 20 20 73 65 74 20 69 f] }... set i
1960: 73 61 74 74 69 63 20 31 0a 09 7d 20 65 6c 73 65 sattic 1..} else
1970: 20 7b 0a 09 20 20 20 20 73 65 74 20 69 73 61 74 {.. set isat
1980: 74 69 63 20 30 0a 09 7d 0a 0a 09 72 65 74 75 72 tic 0..}...retur
1990: 6e 20 24 66 0a 20 20 20 20 7d 0a 0a 20 20 20 20 n $f. }..
19a0: 70 72 6f 63 20 49 73 53 75 70 65 72 63 65 64 65 proc IsSupercede
19b0: 64 20 7b 62 61 73 65 20 72 63 73 20 75 73 72 20 d {base rcs usr
19c0: 69 73 61 74 74 69 63 7d 20 7b 0a 09 3a 3a 76 61 isattic} {..::va
19d0: 72 69 61 62 6c 65 20 6d 79 69 67 6e 6f 72 65 0a riable myignore.
19e0: 0a 09 69 66 20 7b 21 24 69 73 61 74 74 69 63 7d ..if {!$isattic}
19f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1a00: 20 20 20 7b 72 65 74 75 72 6e 20 30 7d 0a 09 69 {return 0}..i
1a10: 66 20 7b 21 5b 66 69 6c 65 20 65 78 69 73 74 73 f {![file exists
1a20: 20 24 62 61 73 65 2f 24 75 73 72 2c 76 5d 7d 20 $base/$usr,v]}
1a30: 7b 72 65 74 75 72 6e 20 30 7d 0a 0a 09 23 20 57 {return 0}...# W
1a40: 65 20 68 61 76 65 20 61 20 72 65 67 75 6c 61 72 e have a regular
1a50: 20 61 72 63 68 69 76 65 20 61 6e 64 20 61 6e 20 archive and an
1a60: 41 74 74 69 63 20 61 72 63 68 69 76 65 20 72 65 Attic archive re
1a70: 66 65 72 69 6e 67 20 74 6f 0a 09 23 20 74 68 65 fering to..# the
1a80: 20 73 61 6d 65 20 75 73 65 72 20 76 69 73 69 62 same user visib
1a90: 6c 65 20 66 69 6c 65 2e 20 49 67 6e 6f 72 65 20 le file. Ignore
1aa0: 74 68 65 20 66 69 6c 65 20 69 6e 20 74 68 65 20 the file in the
1ab0: 41 74 74 69 63 2e 0a 09 23 0a 09 23 20 42 79 20 Attic...#..# By
1ac0: 64 65 66 61 75 6c 74 20 74 68 69 73 20 69 73 20 default this is
1ad0: 61 20 70 72 6f 62 6c 65 6d 20 63 61 75 73 69 6e a problem causin
1ae0: 67 20 61 6e 20 61 62 6f 72 74 20 61 66 74 65 72 g an abort after
1af0: 20 74 68 65 20 70 61 73 73 0a 09 23 20 68 61 73 the pass..# has
1b00: 20 63 6f 6d 70 6c 65 74 65 64 2e 20 54 68 65 20 completed. The
1b10: 75 73 65 72 20 63 61 6e 20 68 6f 77 65 76 65 72 user can however
1b20: 20 66 6f 72 63 65 20 75 73 20 74 6f 20 69 67 6e force us to ign
1b30: 6f 72 65 20 69 74 2e 0a 09 23 20 49 6e 20 74 68 ore it...# In th
1b40: 61 74 20 63 61 73 65 20 74 68 65 20 77 61 72 6e at case the warn
1b50: 69 6e 67 20 69 73 20 73 74 69 6c 6c 20 70 72 69 ing is still pri
1b60: 6e 74 65 64 2c 20 62 75 74 20 77 69 6c 6c 20 6e nted, but will n
1b70: 6f 74 0a 09 23 20 69 6e 64 75 63 65 20 61 6e 20 ot..# induce an
1b80: 61 62 6f 72 74 20 61 6e 79 20 6c 6f 6e 67 65 72 abort any longer
1b90: 2e 0a 0a 09 69 66 20 7b 24 6d 79 69 67 6e 6f 72 ....if {$myignor
1ba0: 65 7d 20 7b 0a 09 20 20 20 20 6c 6f 67 20 77 72 e} {.. log wr
1bb0: 69 74 65 20 32 20 63 6f 6c 6c 61 72 20 22 49 67 ite 2 collar "Ig
1bc0: 6e 6f 72 65 64 20 24 72 63 73 2c 20 73 75 70 65 nored $rcs, supe
1bd0: 72 63 65 64 65 64 20 61 72 63 68 69 76 65 22 0a rceded archive".
1be0: 09 7d 20 65 6c 73 65 20 7b 0a 09 20 20 20 20 74 .} else {.. t
1bf0: 72 6f 75 62 6c 65 20 77 61 72 6e 20 20 20 20 20 rouble warn
1c00: 20 20 22 49 67 6e 6f 72 65 64 20 24 72 63 73 2c "Ignored $rcs,
1c10: 20 73 75 70 65 72 63 65 64 65 64 20 61 72 63 68 superceded arch
1c20: 69 76 65 22 0a 09 7d 0a 09 72 65 74 75 72 6e 20 ive"..}..return
1c30: 31 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 23 1. }.. # #
1c40: 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 ## ### ##### ##
1c50: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 ###### #########
1c60: 23 23 23 23 0a 20 20 20 20 23 23 20 43 6f 6e 66 ####. ## Conf
1c70: 69 67 75 72 61 74 69 6f 6e 0a 0a 20 20 20 20 70 iguration.. p
1c80: 72 61 67 6d 61 20 2d 68 61 73 69 6e 73 74 61 6e ragma -hasinstan
1c90: 63 65 73 20 20 20 6e 6f 20 3b 20 23 20 73 69 6e ces no ; # sin
1ca0: 67 6c 65 74 6f 6e 0a 20 20 20 20 70 72 61 67 6d gleton. pragm
1cb0: 61 20 2d 68 61 73 74 79 70 65 69 6e 66 6f 20 20 a -hastypeinfo
1cc0: 20 20 6e 6f 20 3b 20 23 20 6e 6f 20 69 6e 74 72 no ; # no intr
1cd0: 6f 73 70 65 63 74 69 6f 6e 0a 20 20 20 20 70 72 ospection. pr
1ce0: 61 67 6d 61 20 2d 68 61 73 74 79 70 65 64 65 73 agma -hastypedes
1cf0: 74 72 6f 79 20 6e 6f 20 3b 20 23 20 69 6d 6d 6f troy no ; # immo
1d00: 72 74 61 6c 0a 0a 20 20 20 20 23 20 23 20 23 23 rtal.. # # ##
1d10: 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 ### ##### #####
1d20: 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 ### ############
1d30: 23 0a 7d 0a 0a 6e 61 6d 65 73 70 61 63 65 20 65 #.}..namespace e
1d40: 76 61 6c 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c val ::vc::fossil
1d50: 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 ::import::cvs::p
1d60: 61 73 73 20 7b 0a 20 20 20 20 6e 61 6d 65 73 70 ass {. namesp
1d70: 61 63 65 20 65 78 70 6f 72 74 20 63 6f 6c 6c 61 ace export colla
1d80: 72 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 r. namespace
1d90: 65 76 61 6c 20 63 6f 6c 6c 61 72 20 7b 0a 09 6e eval collar {..n
1da0: 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 amespace import
1db0: 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d ::vc::fossil::im
1dc0: 70 6f 72 74 3a 3a 63 76 73 3a 3a 72 65 70 6f 73 port::cvs::repos
1dd0: 69 74 6f 72 79 0a 09 6e 61 6d 65 73 70 61 63 65 itory..namespace
1de0: 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 66 6f import ::vc::fo
1df0: 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 ssil::import::cv
1e00: 73 3a 3a 73 74 61 74 65 0a 09 6e 61 6d 65 73 70 s::state..namesp
1e10: 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a ace import ::vc:
1e20: 3a 74 6f 6f 6c 73 3a 3a 74 72 6f 75 62 6c 65 0a :tools::trouble.
1e30: 09 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 .namespace impor
1e40: 74 20 3a 3a 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6c t ::vc::tools::l
1e50: 6f 67 0a 09 6c 6f 67 20 72 65 67 69 73 74 65 72 og..log register
1e60: 20 63 6f 6c 6c 61 72 0a 20 20 20 20 7d 0a 7d 0a collar. }.}.
1e70: 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 .# # ## ### ####
1e80: 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 # ######## #####
1e90: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 ######## #######
1ea0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 ##############.#
1eb0: 23 20 52 65 61 64 79 0a 0a 70 61 63 6b 61 67 65 # Ready..package
1ec0: 20 70 72 6f 76 69 64 65 20 76 63 3a 3a 66 6f 73 provide vc::fos
1ed0: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 sil::import::cvs
1ee0: 3a 3a 70 61 73 73 3a 3a 63 6f 6c 6c 61 72 20 31 ::pass::collar 1
1ef0: 2e 30 0a 72 65 74 75 72 6e 0a .0.return.