Artifact 55d61c3242f0de86ebe5140d5f70adaeebedc6e6:
File
tools/lib/importcvs.tcl
part of check-in
[3852590ce6]
- New feature for importer. rcs parser extended so that it can store parse results for quick loading in future runs. This feature has no real use in regular use of the importer, i.e. one-shot conversion of a CVS repository to fossil. It is however useful for debugging when the source repository is scanned many times during test runs. Especially for large files, with lots of changes (like ChangeLogs), the direct loading of a Tcl dictionary is much faster than actually parsing the archive files.
by
aku on
2007-09-26 05:02:06.
0000: 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d # --------------
0010: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0020: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0030: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0040: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a ---------------.
0050: 23 20 54 6f 6f 6c 20 70 61 63 6b 61 67 65 73 2e # Tool packages.
0060: 20 4d 61 69 6e 20 63 6f 6e 74 72 6f 6c 20 6d 6f Main control mo
0070: 64 75 6c 65 20 66 6f 72 20 69 6d 70 6f 72 74 69 dule for importi
0080: 6e 67 20 66 72 6f 6d 20 61 20 43 56 53 20 72 65 ng from a CVS re
0090: 70 6f 73 69 74 6f 72 79 2e 0a 0a 23 20 2d 2d 2d pository...# ---
00a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
00b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
00c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
00d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
00e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 52 65 71 ----------.# Req
00f0: 75 69 72 65 6d 65 6e 74 73 0a 0a 70 61 63 6b 61 uirements..packa
0100: 67 65 20 72 65 71 75 69 72 65 20 54 63 6c 20 38 ge require Tcl 8
0110: 2e 34 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 .4.package requi
0120: 72 65 20 76 63 3a 3a 63 76 73 3a 3a 77 73 20 20 re vc::cvs::ws
0130: 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 ; #
0140: 20 46 72 6f 6e 74 65 6e 64 2c 20 72 65 61 64 69 Frontend, readi
0150: 6e 67 20 66 72 6f 6d 20 73 6f 75 72 63 65 20 72 ng from source r
0160: 65 70 6f 73 69 74 6f 72 79 0a 70 61 63 6b 61 67 epository.packag
0170: 65 20 72 65 71 75 69 72 65 20 76 63 3a 3a 66 6f e require vc::fo
0180: 73 73 69 6c 3a 3a 77 73 20 20 20 20 20 20 20 20 ssil::ws
0190: 20 20 20 20 3b 20 23 20 42 61 63 6b 65 6e 64 2c ; # Backend,
01a0: 20 20 77 72 69 74 69 6e 67 20 74 6f 20 64 65 73 writing to des
01b0: 74 69 6e 61 74 69 6f 6e 20 72 65 70 6f 73 69 74 tination reposit
01c0: 6f 72 79 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 ory..package req
01d0: 75 69 72 65 20 76 63 3a 3a 74 6f 6f 6c 73 3a 3a uire vc::tools::
01e0: 6c 6f 67 20 20 20 20 20 20 20 20 20 20 20 20 3b log ;
01f0: 20 23 20 55 73 65 72 20 66 65 65 64 62 61 63 6b # User feedback
0200: 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 ..package requir
0210: 65 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d e vc::fossil::im
0220: 70 6f 72 74 3a 3a 73 74 61 74 73 20 3b 20 23 20 port::stats ; #
0230: 4d 61 6e 61 67 65 6d 65 6e 74 20 66 6f 72 20 74 Management for t
0240: 68 65 20 49 6d 70 6f 72 74 20 53 74 61 74 69 73 he Import Statis
0250: 74 69 63 73 2e 0a 70 61 63 6b 61 67 65 20 72 65 tics..package re
0260: 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 73 69 6c quire vc::fossil
0270: 3a 3a 69 6d 70 6f 72 74 3a 3a 6d 61 70 20 20 20 ::import::map
0280: 3b 20 23 20 4d 61 6e 61 67 65 6d 65 6e 74 20 6f ; # Management o
0290: 66 20 74 68 65 20 63 73 65 74 20 3c 2d 3e 20 75 f the cset <-> u
02a0: 75 69 64 20 6d 61 70 70 69 6e 67 2e 0a 70 61 63 uid mapping..pac
02b0: 6b 61 67 65 20 72 65 71 75 69 72 65 20 76 63 3a kage require vc:
02c0: 3a 72 63 73 3a 3a 70 61 72 73 65 72 20 20 20 20 :rcs::parser
02d0: 20 20 20 20 20 20 20 3b 20 23 20 50 61 72 73 65 ; # Parse
02e0: 72 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a r configuration.
02f0: 0a 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 .namespace eval
0300: 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d ::vc::fossil::im
0310: 70 6f 72 74 3a 3a 63 76 73 20 7b 0a 20 20 20 20 port::cvs {.
0320: 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6c 6f 67 3a 3a vc::tools::log::
0330: 73 79 73 74 65 6d 20 69 6d 70 6f 72 74 0a 20 20 system import.
0340: 20 20 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f namespace impo
0350: 72 74 20 3a 3a 76 63 3a 3a 74 6f 6f 6c 73 3a 3a rt ::vc::tools::
0360: 6c 6f 67 3a 3a 77 72 69 74 65 0a 20 20 20 20 6e log::write. n
0370: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 63 76 amespace eval cv
0380: 73 20 20 20 20 7b 20 6e 61 6d 65 73 70 61 63 65 s { namespace
0390: 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 63 76 import ::vc::cv
03a0: 73 3a 3a 77 73 3a 3a 2a 20 7d 0a 20 20 20 20 6e s::ws::* }. n
03b0: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 66 6f amespace eval fo
03c0: 73 73 69 6c 20 7b 20 6e 61 6d 65 73 70 61 63 65 ssil { namespace
03d0: 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 66 6f import ::vc::fo
03e0: 73 73 69 6c 3a 3a 77 73 3a 3a 2a 20 7d 0a 20 20 ssil::ws::* }.
03f0: 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c namespace eval
0400: 20 73 74 61 74 73 20 20 7b 20 6e 61 6d 65 73 70 stats { namesp
0410: 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a ace import ::vc:
0420: 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a :fossil::import:
0430: 3a 73 74 61 74 73 3a 3a 2a 20 7d 0a 20 20 20 20 :stats::* }.
0440: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 6d namespace eval m
0450: 61 70 20 20 20 20 7b 20 6e 61 6d 65 73 70 61 63 ap { namespac
0460: 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 66 e import ::vc::f
0470: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 6d ossil::import::m
0480: 61 70 3a 3a 2a 20 7d 0a 20 20 20 20 6e 61 6d 65 ap::* }. name
0490: 73 70 61 63 65 20 65 76 61 6c 20 72 63 73 20 20 space eval rcs
04a0: 20 20 7b 20 6e 61 6d 65 73 70 61 63 65 20 69 6d { namespace im
04b0: 70 6f 72 74 20 3a 3a 76 63 3a 3a 72 63 73 3a 3a port ::vc::rcs::
04c0: 70 61 72 73 65 72 3a 3a 2a 20 7d 0a 0a 20 20 20 parser::* }..
04d0: 20 66 6f 73 73 69 6c 3a 3a 63 6f 6e 66 69 67 75 fossil::configu
04e0: 72 65 20 2d 61 70 70 6e 61 6d 65 20 63 76 73 32 re -appname cvs2
04f0: 66 6f 73 73 69 6c 0a 20 20 20 20 66 6f 73 73 69 fossil. fossi
0500: 6c 3a 3a 63 6f 6e 66 69 67 75 72 65 20 2d 69 67 l::configure -ig
0510: 6e 6f 72 65 20 20 3a 3a 76 63 3a 3a 63 76 73 3a nore ::vc::cvs:
0520: 3a 77 73 3a 3a 69 73 61 64 6d 69 6e 0a 7d 0a 0a :ws::isadmin.}..
0530: 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d # --------------
0540: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0550: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0560: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0570: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a ---------------.
0580: 23 20 41 50 49 0a 0a 23 20 43 6f 6e 66 69 67 75 # API..# Configu
0590: 72 61 74 69 6f 6e 0a 23 0a 23 09 76 63 3a 3a 66 ration.#.#.vc::f
05a0: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 ossil::import::c
05b0: 76 73 3a 3a 63 6f 6e 66 69 67 75 72 65 20 6b 65 vs::configure ke
05c0: 79 20 76 61 6c 75 65 20 2d 20 53 65 74 20 63 6f y value - Set co
05d0: 6e 66 69 67 75 72 61 74 69 6f 6e 0a 23 0a 23 20 nfiguration.#.#
05e0: 20 20 20 20 20 20 4c 65 67 61 6c 20 6b 65 79 73 Legal keys
05f0: 3a 20 20 20 20 20 2d 6e 6f 73 69 67 6e 20 20 3c : -nosign <
0600: 62 6f 6f 6c 3e 2c 20 64 65 66 61 75 6c 74 20 66 bool>, default f
0610: 61 6c 73 65 0a 23 20 20 20 20 20 20 20 20 20 20 alse.#
0620: 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 62 72 -br
0630: 65 61 6b 61 74 20 3c 69 6e 74 3e 2c 20 20 64 65 eakat <int>, de
0640: 66 61 75 6c 74 20 3a 6e 6f 6e 65 3a 0a 23 20 20 fault :none:.#
0650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0660: 20 20 20 20 20 2d 73 61 76 65 74 6f 20 20 3c 70 -saveto <p
0670: 61 74 68 3e 2c 20 64 65 66 61 75 6c 74 20 3a 6e ath>, default :n
0680: 6f 6e 65 3a 0a 23 20 20 20 20 20 20 20 20 20 20 one:.#
0690: 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 6c 69 -li
06a0: 6d 69 74 20 20 20 3c 70 61 74 68 3e 2c 20 64 65 mit <path>, de
06b0: 66 61 75 6c 74 20 3a 6e 6f 6e 65 3a 0a 23 0a 23 fault :none:.#.#
06c0: 20 46 75 6e 63 74 69 6f 6e 61 6c 69 74 79 0a 23 Functionality.#
06d0: 0a 23 09 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 .#.vc::fossil::i
06e0: 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 72 75 6e 20 mport::cvs::run
06f0: 73 72 63 20 64 73 74 20 20 20 20 20 20 20 20 20 src dst
0700: 2d 20 50 65 72 66 6f 72 6d 20 61 6e 20 69 6d 70 - Perform an imp
0710: 6f 72 74 2e 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d ort...# --------
0720: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0730: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0740: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0750: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0760: 2d 2d 2d 2d 2d 0a 23 20 41 50 49 20 49 6d 70 6c -----.# API Impl
0770: 65 6d 65 6e 74 61 74 69 6f 6e 20 2d 20 46 75 6e ementation - Fun
0780: 63 74 69 6f 6e 61 6c 69 74 79 0a 0a 70 72 6f 63 ctionality..proc
0790: 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 ::vc::fossil::i
07a0: 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 63 6f 6e 66 mport::cvs::conf
07b0: 69 67 75 72 65 20 7b 6b 65 79 20 76 61 6c 75 65 igure {key value
07c0: 7d 20 7b 0a 20 20 20 20 23 20 54 68 65 20 6f 70 } {. # The op
07d0: 74 69 6f 6e 73 20 61 72 65 20 73 69 6d 70 6c 79 tions are simply
07e0: 20 70 61 73 73 65 64 20 74 68 72 6f 75 67 68 20 passed through
07f0: 74 6f 20 74 68 65 20 66 6f 73 73 69 6c 20 69 6d to the fossil im
0800: 70 6f 72 74 65 72 0a 20 20 20 20 23 20 62 61 63 porter. # bac
0810: 6b 65 6e 64 2e 0a 20 20 20 20 73 77 69 74 63 68 kend.. switch
0820: 20 2d 65 78 61 63 74 20 2d 2d 20 24 6b 65 79 20 -exact -- $key
0830: 7b 0a 09 2d 62 72 65 61 6b 61 74 20 20 20 7b 20 {..-breakat {
0840: 66 6f 73 73 69 6c 3a 3a 63 6f 6e 66 69 67 75 72 fossil::configur
0850: 65 20 2d 62 72 65 61 6b 61 74 20 24 76 61 6c 75 e -breakat $valu
0860: 65 20 7d 0a 09 2d 63 61 63 68 65 2d 72 63 73 20 e }..-cache-rcs
0870: 7b 20 72 63 73 3a 3a 63 6f 6e 66 69 67 75 72 65 { rcs::configure
0880: 20 20 20 20 2d 63 61 63 68 65 20 20 20 24 76 61 -cache $va
0890: 6c 75 65 20 7d 0a 09 2d 6e 6f 73 69 67 6e 20 20 lue }..-nosign
08a0: 20 20 7b 20 66 6f 73 73 69 6c 3a 3a 63 6f 6e 66 { fossil::conf
08b0: 69 67 75 72 65 20 2d 6e 6f 73 69 67 6e 20 20 24 igure -nosign $
08c0: 76 61 6c 75 65 20 7d 0a 09 2d 70 72 6f 6a 65 63 value }..-projec
08d0: 74 20 20 20 7b 20 63 76 73 3a 3a 63 6f 6e 66 69 t { cvs::confi
08e0: 67 75 72 65 20 20 20 20 2d 70 72 6f 6a 65 63 74 gure -project
08f0: 20 24 76 61 6c 75 65 20 7d 0a 09 2d 73 61 76 65 $value }..-save
0900: 74 6f 20 20 20 20 7b 20 66 6f 73 73 69 6c 3a 3a to { fossil::
0910: 63 6f 6e 66 69 67 75 72 65 20 2d 73 61 76 65 74 configure -savet
0920: 6f 20 20 24 76 61 6c 75 65 20 7d 0a 09 64 65 66 o $value }..def
0930: 61 75 6c 74 20 7b 0a 09 20 20 20 20 72 65 74 75 ault {.. retu
0940: 72 6e 20 2d 63 6f 64 65 20 65 72 72 6f 72 20 22 rn -code error "
0950: 55 6e 6b 6e 6f 77 6e 20 73 77 69 74 63 68 20 24 Unknown switch $
0960: 6b 65 79 2c 20 65 78 70 65 63 74 65 64 20 6f 6e key, expected on
0970: 65 20 6f 66 20 5c 0a 20 20 20 20 20 20 20 20 20 e of \.
0980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0990: 20 20 20 20 20 20 20 20 20 20 2d 62 72 65 61 6b -break
09a0: 61 74 2c 20 2d 63 61 63 68 65 2c 20 2d 6e 6f 73 at, -cache, -nos
09b0: 69 67 6e 2c 20 2d 70 72 6f 6a 65 63 74 2c 20 6f ign, -project, o
09c0: 72 20 2d 73 61 76 65 74 6f 22 0a 09 7d 0a 20 20 r -saveto"..}.
09d0: 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 0a 7d }. return.}
09e0: 0a 0a 23 20 49 6d 70 6f 72 74 20 74 68 65 20 43 ..# Import the C
09f0: 56 53 20 72 65 70 6f 73 69 74 6f 72 79 20 66 6f VS repository fo
0a00: 75 6e 64 20 61 74 20 64 69 72 65 63 74 6f 72 79 und at directory
0a10: 20 27 73 72 63 27 20 69 6e 74 6f 20 74 68 65 20 'src' into the
0a20: 6e 65 77 0a 23 20 66 6f 73 73 69 6c 20 72 65 70 new.# fossil rep
0a30: 6f 73 69 74 6f 72 79 20 61 74 20 27 64 73 74 27 ository at 'dst'
0a40: 2e 0a 0a 70 72 6f 63 20 3a 3a 76 63 3a 3a 66 6f ...proc ::vc::fo
0a50: 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 ssil::import::cv
0a60: 73 3a 3a 72 75 6e 20 7b 73 72 63 20 64 73 74 7d s::run {src dst}
0a70: 20 7b 0a 20 20 20 20 6d 61 70 3a 3a 73 65 74 20 {. map::set
0a80: 7b 7d 20 7b 7d 0a 0a 20 20 20 20 73 65 74 20 73 {} {}.. set s
0a90: 72 63 20 5b 66 69 6c 65 20 6e 6f 72 6d 61 6c 69 rc [file normali
0aa0: 7a 65 20 24 73 72 63 5d 0a 20 20 20 20 73 65 74 ze $src]. set
0ab0: 20 64 73 74 20 5b 66 69 6c 65 20 6e 6f 72 6d 61 dst [file norma
0ac0: 6c 69 7a 65 20 24 64 73 74 5d 0a 0a 20 20 20 20 lize $dst]..
0ad0: 73 65 74 20 77 73 20 5b 63 76 73 3a 3a 62 65 67 set ws [cvs::beg
0ae0: 69 6e 20 24 73 72 63 5d 0a 20 20 20 20 66 6f 73 in $src]. fos
0af0: 73 69 6c 3a 3a 62 65 67 69 6e 20 24 77 73 0a 20 sil::begin $ws.
0b00: 20 20 20 73 74 61 74 73 3a 3a 73 65 74 75 70 20 stats::setup
0b10: 5b 63 76 73 3a 3a 6e 69 6d 70 6f 72 74 61 62 6c [cvs::nimportabl
0b20: 65 5d 20 5b 63 76 73 3a 3a 6e 63 73 65 74 73 5d e] [cvs::ncsets]
0b30: 0a 0a 20 20 20 20 63 76 73 3a 3a 66 6f 72 65 61 .. cvs::forea
0b40: 63 68 20 63 73 65 74 20 7b 0a 09 49 6d 70 6f 72 ch cset {..Impor
0b50: 74 31 20 24 63 73 65 74 0a 20 20 20 20 7d 0a 0a t1 $cset. }..
0b60: 20 20 20 20 73 74 61 74 73 3a 3a 64 6f 6e 65 0a stats::done.
0b70: 20 20 20 20 66 6f 73 73 69 6c 3a 3a 64 6f 6e 65 fossil::done
0b80: 20 24 64 73 74 0a 20 20 20 20 63 76 73 3a 3a 64 $dst. cvs::d
0b90: 6f 6e 65 0a 0a 20 20 20 20 77 72 69 74 65 20 30 one.. write 0
0ba0: 20 69 6d 70 6f 72 74 20 4f 6b 2e 0a 20 20 20 20 import Ok..
0bb0: 72 65 74 75 72 6e 0a 7d 0a 0a 23 20 2d 2d 2d 2d return.}..# ----
0bc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0bd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0be0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0bf0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0c00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 49 6e 74 65 ---------.# Inte
0c10: 72 6e 61 6c 20 6f 70 65 72 61 74 69 6f 6e 73 20 rnal operations
0c20: 2d 20 49 6d 70 6f 72 74 20 61 20 73 69 6e 67 6c - Import a singl
0c30: 65 20 63 68 61 6e 67 65 73 65 74 2e 0a 0a 70 72 e changeset...pr
0c40: 6f 63 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a oc ::vc::fossil:
0c50: 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 49 6d :import::cvs::Im
0c60: 70 6f 72 74 31 20 7b 63 73 65 74 7d 20 7b 0a 20 port1 {cset} {.
0c70: 20 20 20 73 74 61 74 73 3a 3a 63 73 62 65 67 69 stats::csbegi
0c80: 6e 20 24 63 73 65 74 0a 0a 20 20 20 20 73 65 74 n $cset.. set
0c90: 20 6d 69 63 72 6f 73 65 63 6f 6e 64 73 20 5b 6c microseconds [l
0ca0: 69 6e 64 65 78 20 5b 74 69 6d 65 20 7b 49 6d 70 index [time {Imp
0cb0: 6f 72 74 43 53 20 24 63 73 65 74 7d 20 31 5d 20 ortCS $cset} 1]
0cc0: 30 5d 0a 20 20 20 20 73 65 74 20 73 65 63 6f 6e 0]. set secon
0cd0: 64 73 20 20 20 20 20 20 5b 65 78 70 72 20 7b 24 ds [expr {$
0ce0: 6d 69 63 72 6f 73 65 63 6f 6e 64 73 2f 31 65 36 microseconds/1e6
0cf0: 7d 5d 0a 0a 20 20 20 20 73 74 61 74 73 3a 3a 63 }].. stats::c
0d00: 73 65 6e 64 20 24 73 65 63 6f 6e 64 73 0a 20 20 send $seconds.
0d10: 20 20 72 65 74 75 72 6e 0a 7d 0a 0a 70 72 6f 63 return.}..proc
0d20: 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 ::vc::fossil::i
0d30: 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 49 6d 70 6f mport::cvs::Impo
0d40: 72 74 43 53 20 7b 63 73 65 74 7d 20 7b 0a 20 20 rtCS {cset} {.
0d50: 20 20 66 6f 73 73 69 6c 3a 3a 73 65 74 75 70 20 fossil::setup
0d60: 5b 6d 61 70 3a 3a 67 65 74 20 5b 63 76 73 3a 3a [map::get [cvs::
0d70: 70 61 72 65 6e 74 4f 66 20 24 63 73 65 74 5d 5d parentOf $cset]]
0d80: 0a 20 20 20 20 6c 61 73 73 69 67 6e 20 5b 63 76 . lassign [cv
0d90: 73 3a 3a 63 68 65 63 6b 6f 75 74 20 20 24 63 73 s::checkout $cs
0da0: 65 74 5d 20 75 73 65 72 20 20 74 69 6d 65 73 74 et] user timest
0db0: 61 6d 70 20 20 6d 65 73 73 61 67 65 0a 20 20 20 amp message.
0dc0: 20 6c 61 73 73 69 67 6e 20 5b 66 6f 73 73 69 6c lassign [fossil
0dd0: 3a 3a 63 6f 6d 6d 69 74 20 24 63 73 65 74 20 24 ::commit $cset $
0de0: 75 73 65 72 20 24 74 69 6d 65 73 74 61 6d 70 20 user $timestamp
0df0: 24 6d 65 73 73 61 67 65 5d 20 75 75 69 64 20 61 $message] uuid a
0e00: 64 20 72 6d 20 63 68 0a 20 20 20 20 77 72 69 74 d rm ch. writ
0e10: 65 20 32 20 69 6d 70 6f 72 74 20 22 3d 3d 20 2b e 2 import "== +
0e20: 24 7b 61 64 7d 2d 24 7b 72 6d 7d 2a 24 7b 63 68 ${ad}-${rm}*${ch
0e30: 7d 22 0a 20 20 20 20 6d 61 70 3a 3a 73 65 74 20 }". map::set
0e40: 24 63 73 65 74 20 24 75 75 69 64 0a 20 20 20 20 $cset $uuid.
0e50: 72 65 74 75 72 6e 0a 7d 0a 0a 70 72 6f 63 20 3a return.}..proc :
0e60: 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 :vc::fossil::imp
0e70: 6f 72 74 3a 3a 63 76 73 3a 3a 6c 61 73 73 69 67 ort::cvs::lassig
0e80: 6e 20 7b 6c 20 61 72 67 73 7d 20 7b 0a 20 20 20 n {l args} {.
0e90: 20 66 6f 72 65 61 63 68 20 76 20 24 61 72 67 73 foreach v $args
0ea0: 20 7b 75 70 76 61 72 20 31 20 24 76 20 24 76 7d {upvar 1 $v $v}
0eb0: 20 0a 20 20 20 20 66 6f 72 65 61 63 68 20 24 61 . foreach $a
0ec0: 72 67 73 20 24 6c 20 62 72 65 61 6b 0a 20 20 20 rgs $l break.
0ed0: 20 72 65 74 75 72 6e 0a 7d 0a 0a 23 20 2d 2d 2d return.}..# ---
0ee0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0ef0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0f00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0f10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0f20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 6e 61 6d 65 ----------..name
0f30: 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 76 63 3a space eval ::vc:
0f40: 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a :fossil::import:
0f50: 3a 63 76 73 20 7b 0a 20 20 20 20 6e 61 6d 65 73 :cvs {. names
0f60: 70 61 63 65 20 65 78 70 6f 72 74 20 72 75 6e 20 pace export run
0f70: 63 6f 6e 66 69 67 75 72 65 0a 7d 0a 0a 23 20 2d configure.}..# -
0f80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0f90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0fa0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0fb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0fc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 52 ------------.# R
0fd0: 65 61 64 79 0a 0a 70 61 63 6b 61 67 65 20 70 72 eady..package pr
0fe0: 6f 76 69 64 65 20 76 63 3a 3a 66 6f 73 73 69 6c ovide vc::fossil
0ff0: 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 20 31 2e ::import::cvs 1.
1000: 30 0a 72 65 74 75 72 6e 0a 0.return.