Artifact 6f6129caeb9ecfaa6fd1f89dd0fced1c1de6742c:
File
tools/import-cvs.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 21 2f 62 69 6e 2f 73 68 0a 23 20 2d 2a 2d 20 #!/bin/sh.# -*-
0010: 74 63 6c 20 2d 2a 2d 20 5c 0a 65 78 65 63 20 74 tcl -*- \.exec t
0020: 63 6c 73 68 20 22 24 30 22 20 24 7b 31 2b 22 24 clsh "$0" ${1+"$
0030: 40 22 7d 0a 0a 23 20 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 2d ----------------
0050: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0060: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0070: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0080: 2d 2d 2d 2d 0a 0a 23 20 49 6d 70 6f 72 74 20 74 ----..# Import t
0090: 68 65 20 74 72 75 6e 6b 20 6f 66 20 61 20 43 56 he trunk of a CV
00a0: 53 20 72 65 70 6f 73 69 74 6f 72 79 20 77 68 6f S repository who
00b0: 6c 65 73 61 6c 65 20 69 6e 74 6f 20 61 20 66 6f lesale into a fo
00c0: 73 73 69 6c 20 72 65 70 6f 73 69 74 6f 72 79 2e ssil repository.
00d0: 0a 0a 23 20 4c 69 6d 69 74 61 74 69 6f 6e 73 20 ..# Limitations
00e0: 69 6d 70 6c 69 63 69 74 6c 79 20 6d 65 6e 74 69 implicitly menti
00f0: 6f 6e 65 64 3a 0a 23 20 2d 20 4e 6f 20 69 6e 63 oned:.# - No inc
0100: 72 65 6d 65 6e 74 61 6c 20 69 6d 70 6f 72 74 2e remental import.
0110: 0a 23 20 2d 20 4e 6f 20 69 6d 70 6f 72 74 20 6f .# - No import o
0120: 66 20 62 72 61 6e 63 68 65 73 2e 0a 0a 23 20 57 f branches...# W
0130: 49 42 4e 49 20 66 65 61 74 75 72 65 73 20 28 62 IBNI features (b
0140: 65 79 6f 6e 64 20 65 6c 69 6d 69 6e 61 74 69 6e eyond eliminatin
0150: 67 20 74 68 65 20 6c 69 6d 69 74 61 74 69 6f 6e g the limitation
0160: 73 29 3a 0a 23 20 2d 20 52 65 73 74 72 69 63 74 s):.# - Restrict
0170: 20 69 6d 70 6f 72 74 20 74 6f 20 73 70 65 63 69 import to speci
0180: 66 69 63 20 64 69 72 65 63 74 6f 72 79 20 73 75 fic directory su
0190: 62 74 72 65 65 73 20 28 53 46 20 70 72 6f 6a 65 btrees (SF proje
01a0: 63 74 73 20 75 73 65 0a 23 20 20 20 6f 6e 65 20 cts use.# one
01b0: 72 65 70 6f 73 69 74 6f 72 79 20 66 6f 72 20 73 repository for s
01c0: 65 76 65 72 61 6c 20 69 6e 64 65 70 65 6e 64 65 everal independe
01d0: 6e 74 20 6d 6f 64 75 6c 65 73 2e 20 45 78 61 6d nt modules. Exam
01e0: 70 6c 65 73 3a 20 74 63 6c 6c 69 62 0a 23 20 20 ples: tcllib.#
01f0: 20 2d 3e 20 74 63 6c 6c 69 62 2c 20 74 6b 6c 69 -> tcllib, tkli
0200: 62 2c 20 74 63 6c 61 70 70 73 2c 20 65 74 63 2e b, tclapps, etc.
0210: 29 2e 20 54 68 65 20 72 65 73 74 72 69 63 74 69 ). The restricti
0220: 6f 6e 20 77 6f 75 6c 64 20 61 6c 6c 6f 77 20 69 on would allow i
0230: 6d 70 6f 72 74 0a 23 20 20 20 6f 66 20 6f 6e 6c mport.# of onl
0240: 79 20 61 20 73 70 65 63 69 66 69 63 20 6d 6f 64 y a specific mod
0250: 75 6c 65 2e 0a 23 20 2d 20 52 65 6c 61 74 65 64 ule..# - Related
0260: 20 74 6f 20 74 68 65 20 70 72 65 76 69 6f 75 73 to the previous
0270: 2c 20 73 74 72 69 70 20 65 6c 65 6d 65 6e 74 73 , strip elements
0280: 20 66 72 6f 6d 20 74 68 65 20 62 61 73 65 20 70 from the base p
0290: 61 74 68 20 74 6f 20 6b 65 65 70 0a 23 20 20 20 ath to keep.#
02a0: 69 74 20 73 68 6f 72 74 2e 0a 23 20 2d 20 45 78 it short..# - Ex
02b0: 70 6f 72 74 20 74 6f 20 43 56 53 2c 20 74 72 75 port to CVS, tru
02c0: 6e 6b 2c 20 70 6f 73 73 69 62 6c 79 20 62 72 61 nk, possibly bra
02d0: 6e 63 68 65 73 2e 20 49 2e 65 2e 20 65 78 74 65 nches. I.e. exte
02e0: 6e 64 20 74 68 65 20 73 79 73 74 65 6d 20 74 6f nd the system to
02f0: 20 62 65 0a 23 20 20 20 61 20 66 75 6c 6c 20 62 be.# a full b
0300: 72 69 64 67 65 2e 20 45 69 74 68 65 72 20 46 6f ridge. Either Fo
0310: 73 73 69 6c 20 6f 72 20 43 56 53 20 63 6f 75 6c ssil or CVS coul
0320: 64 20 62 65 20 74 68 65 20 6d 61 73 74 65 72 20 d be the master
0330: 72 65 70 6f 73 69 74 6f 72 79 2e 0a 0a 23 20 48 repository...# H
0340: 41 43 4b 53 2e 20 49 2e 65 2e 20 49 20 64 6f 20 ACKS. I.e. I do
0350: 6e 6f 74 20 6b 6e 6f 77 20 69 66 20 74 68 65 20 not know if the
0360: 27 66 69 78 65 73 27 20 49 20 75 73 65 20 61 72 'fixes' I use ar
0370: 65 20 74 68 65 20 63 6f 72 72 65 63 74 20 77 61 e the correct wa
0380: 79 0a 23 20 20 20 20 20 20 20 20 6f 66 20 68 61 y.# of ha
0390: 6e 64 6c 69 6e 67 20 74 68 65 20 65 6e 63 6f 75 ndling the encou
03a0: 6e 74 65 72 65 64 20 73 69 74 75 61 74 69 6f 6e ntered situation
03b0: 73 2e 0a 23 0a 23 20 2d 20 46 69 6c 65 20 46 20 s..#.# - File F
03c0: 68 61 73 20 61 72 63 68 69 76 65 73 20 46 2c 76 has archives F,v
03d0: 20 61 6e 64 20 41 74 74 69 63 2f 46 2c 76 2e 20 and Attic/F,v.
03e0: 43 75 72 72 65 6e 74 6c 79 20 49 20 77 69 6c 6c Currently I will
03f0: 20 69 67 6e 6f 72 65 20 74 68 65 0a 23 20 20 20 ignore the.#
0400: 66 69 6c 65 20 69 6e 20 74 68 65 20 41 74 74 69 file in the Atti
0410: 63 2e 0a 23 20 20 20 45 78 61 6d 70 6c 65 73 3a c..# Examples:
0420: 20 73 71 6c 69 74 65 2f 6f 73 5f 75 6e 69 78 2e sqlite/os_unix.
0430: 68 0a 23 0a 23 20 2d 20 41 20 73 70 65 63 69 66 h.#.# - A specif
0440: 69 63 20 72 65 76 69 73 69 6f 6e 20 6f 66 20 61 ic revision of a
0450: 20 66 69 6c 65 20 46 20 63 61 6e 6e 6f 74 20 62 file F cannot b
0460: 65 20 63 68 65 63 6b 65 64 20 6f 75 74 20 28 72 e checked out (r
0470: 65 70 6f 72 74 65 64 0a 23 20 20 20 65 72 72 6f eported.# erro
0480: 72 20 69 73 20 27 69 6e 76 61 6c 69 64 20 63 68 r is 'invalid ch
0490: 61 6e 67 65 20 74 65 78 74 27 29 2e 20 54 68 69 ange text'). Thi
04a0: 73 20 69 6e 64 69 63 61 74 65 73 20 61 20 63 6f s indicates a co
04b0: 72 72 75 70 74 20 52 43 53 0a 23 20 20 20 66 69 rrupt RCS.# fi
04c0: 6c 65 2c 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 le, one or more
04d0: 64 65 6c 74 61 20 61 72 65 20 62 61 64 2e 20 57 delta are bad. W
04e0: 65 20 72 65 70 6f 72 74 20 62 75 74 20 69 67 6e e report but ign
04f0: 6f 72 65 20 74 68 65 20 70 72 6f 62 6c 65 6d 0a ore the problem.
0500: 23 20 20 20 69 6e 20 61 20 62 65 73 74 2d 65 66 # in a best-ef
0510: 66 6f 72 74 20 61 74 74 65 6d 70 74 20 61 74 20 fort attempt at
0520: 67 65 74 74 69 6e 67 20 61 73 20 6d 75 63 68 20 getting as much
0530: 68 69 73 74 6f 72 79 20 61 73 20 70 6f 73 73 69 history as possi
0540: 62 6c 65 2e 0a 23 20 20 20 45 78 61 6d 70 6c 65 ble..# Example
0550: 73 3a 20 74 63 6c 6c 69 62 2f 74 6b 6c 69 62 2f s: tcllib/tklib/
0560: 6d 6f 64 75 6c 65 73 2f 74 6b 70 69 65 63 68 61 modules/tkpiecha
0570: 72 74 2f 70 69 65 2e 74 63 6c 0a 0a 23 20 2d 2d rt/pie.tcl..# --
0580: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0590: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
05a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
05b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
05c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 4d 61 -----------.# Ma
05d0: 6b 65 20 70 72 69 76 61 74 65 20 70 61 63 6b 61 ke private packa
05e0: 67 65 73 20 61 63 63 65 73 73 69 62 6c 65 2e 0a ges accessible..
05f0: 0a 6c 61 70 70 65 6e 64 20 61 75 74 6f 5f 70 61 .lappend auto_pa
0600: 74 68 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 5b 66 th [file join [f
0610: 69 6c 65 20 64 69 72 6e 61 6d 65 20 5b 69 6e 66 ile dirname [inf
0620: 6f 20 73 63 72 69 70 74 5d 5d 20 6c 69 62 5d 0a o script]] lib].
0630: 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d .# -------------
0640: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0650: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0660: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0670: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0680: 0a 23 20 52 65 71 75 69 72 65 6d 65 6e 74 73 0a .# Requirements.
0690: 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 .package require
06a0: 20 54 63 6c 20 38 2e 34 0a 70 61 63 6b 61 67 65 Tcl 8.4.package
06b0: 20 72 65 71 75 69 72 65 20 76 63 3a 3a 74 6f 6f require vc::too
06c0: 6c 73 3a 3a 6c 6f 67 20 20 20 20 20 20 20 20 20 ls::log
06d0: 20 3b 20 23 20 55 73 65 72 20 46 65 65 64 62 61 ; # User Feedba
06e0: 63 6b 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 ck.package requi
06f0: 72 65 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 re vc::fossil::i
0700: 6d 70 6f 72 74 3a 3a 63 76 73 20 3b 20 23 20 49 mport::cvs ; # I
0710: 6d 70 6f 72 74 65 72 20 43 6f 6e 74 72 6f 6c 0a mporter Control.
0720: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 package require
0730: 76 63 3a 3a 63 76 73 3a 3a 77 73 20 20 20 20 20 vc::cvs::ws
0740: 20 20 20 20 20 20 20 20 3b 20 23 20 43 56 53 20 ; # CVS
0750: 66 72 6f 6e 74 65 6e 64 0a 0a 6e 61 6d 65 73 70 frontend..namesp
0760: 61 63 65 20 65 76 61 6c 20 3a 3a 69 6d 70 6f 72 ace eval ::impor
0770: 74 20 7b 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 t {. namespac
0780: 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 66 e import ::vc::f
0790: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 ossil::import::c
07a0: 76 73 3a 3a 2a 0a 7d 0a 0a 23 20 2d 2d 2d 2d 2d vs::*.}..# -----
07b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
07c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
07d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
07e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
07f0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 70 72 6f 63 20 6d --------..proc m
0800: 61 69 6e 20 7b 7d 20 7b 0a 20 20 20 20 63 6f 6d ain {} {. com
0810: 6d 61 6e 64 6c 69 6e 65 20 2d 3e 20 63 76 73 20 mandline -> cvs
0820: 20 66 6f 73 73 69 6c 0a 20 20 20 20 69 6d 70 6f fossil. impo
0830: 72 74 3a 3a 72 75 6e 20 20 20 24 63 76 73 20 24 rt::run $cvs $
0840: 66 6f 73 73 69 6c 0a 20 20 20 20 72 65 74 75 72 fossil. retur
0850: 6e 0a 7d 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d n.}..# ---------
0860: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0870: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0880: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0890: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
08a0: 2d 2d 2d 2d 0a 0a 70 72 6f 63 20 63 6f 6d 6d 61 ----..proc comma
08b0: 6e 64 6c 69 6e 65 20 7b 5f 5f 20 63 76 20 66 76 ndline {__ cv fv
08c0: 7d 20 7b 0a 20 20 20 20 67 6c 6f 62 61 6c 20 61 } {. global a
08d0: 72 67 76 0a 20 20 20 20 75 70 76 61 72 20 31 20 rgv. upvar 1
08e0: 24 63 76 20 63 76 73 20 24 66 76 20 66 6f 73 73 $cv cvs $fv foss
08f0: 69 6c 0a 0a 20 20 20 20 73 65 74 20 76 65 72 62 il.. set verb
0900: 6f 73 69 74 79 20 30 0a 0a 20 20 20 20 63 6c 69 osity 0.. cli
0910: 6e 69 74 0a 20 20 20 20 77 68 69 6c 65 20 7b 5b nit. while {[
0920: 73 74 72 69 6e 67 20 6d 61 74 63 68 20 22 2d 2a string match "-*
0930: 22 20 5b 73 65 74 20 6f 70 74 20 5b 74 68 69 73 " [set opt [this
0940: 5d 5d 5d 7d 20 7b 0a 09 73 77 69 74 63 68 20 2d ]]]} {..switch -
0950: 65 78 61 63 74 20 2d 2d 20 24 6f 70 74 20 7b 0a exact -- $opt {.
0960: 09 20 20 20 20 2d 2d 62 72 65 61 6b 61 74 20 20 . --breakat
0970: 20 20 20 7b 20 6e 65 78 74 20 3b 20 69 6d 70 6f { next ; impo
0980: 72 74 3a 3a 63 6f 6e 66 69 67 75 72 65 20 2d 62 rt::configure -b
0990: 72 65 61 6b 61 74 20 20 20 5b 74 68 69 73 5d 20 reakat [this]
09a0: 7d 0a 09 20 20 20 20 2d 2d 63 61 63 68 65 2d 72 }.. --cache-r
09b0: 63 73 20 20 20 7b 20 6e 65 78 74 20 3b 20 69 6d cs { next ; im
09c0: 70 6f 72 74 3a 3a 63 6f 6e 66 69 67 75 72 65 20 port::configure
09d0: 2d 63 61 63 68 65 2d 72 63 73 20 5b 74 68 69 73 -cache-rcs [this
09e0: 5d 20 7d 0a 09 20 20 20 20 2d 2d 6e 6f 73 69 67 ] }.. --nosig
09f0: 6e 20 20 20 20 20 20 7b 20 20 20 20 20 20 20 20 n {
0a00: 69 6d 70 6f 72 74 3a 3a 63 6f 6e 66 69 67 75 72 import::configur
0a10: 65 20 2d 6e 6f 73 69 67 6e 20 20 20 20 20 20 20 e -nosign
0a20: 20 20 31 20 7d 0a 09 20 20 20 20 2d 2d 70 72 6f 1 }.. --pro
0a30: 6a 65 63 74 20 20 20 20 20 7b 20 6e 65 78 74 20 ject { next
0a40: 3b 20 69 6d 70 6f 72 74 3a 3a 63 6f 6e 66 69 67 ; import::config
0a50: 75 72 65 20 2d 70 72 6f 6a 65 63 74 20 20 20 5b ure -project [
0a60: 74 68 69 73 5d 20 7d 0a 09 20 20 20 20 2d 2d 73 this] }.. --s
0a70: 61 76 65 74 6f 20 20 20 20 20 20 7b 20 6e 65 78 aveto { nex
0a80: 74 20 3b 20 69 6d 70 6f 72 74 3a 3a 63 6f 6e 66 t ; import::conf
0a90: 69 67 75 72 65 20 2d 73 61 76 65 74 6f 20 20 20 igure -saveto
0aa0: 20 5b 66 69 6c 65 20 6e 6f 72 6d 61 6c 69 7a 65 [file normalize
0ab0: 20 5b 74 68 69 73 5d 5d 20 7d 0a 09 20 20 20 20 [this]] }..
0ac0: 2d 76 20 20 20 20 20 20 20 20 20 20 20 20 7b 20 -v {
0ad0: 69 6e 63 72 20 76 65 72 62 6f 73 69 74 79 20 3b incr verbosity ;
0ae0: 20 3a 3a 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6c 6f ::vc::tools::lo
0af0: 67 3a 3a 76 65 72 62 6f 73 69 74 79 20 24 76 65 g::verbosity $ve
0b00: 72 62 6f 73 69 74 79 20 7d 0a 09 20 20 20 20 2d rbosity }.. -
0b10: 68 20 20 20 20 20 20 20 20 20 20 20 20 2d 0a 09 h -..
0b20: 20 20 20 20 64 65 66 61 75 6c 74 20 20 20 20 20 default
0b30: 20 20 75 73 61 67 65 0a 09 7d 0a 09 6e 65 78 74 usage..}..next
0b40: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 72 65 6d 61 . }.. rema
0b50: 69 6e 64 65 72 0a 20 20 20 20 69 66 20 7b 5b 6c inder. if {[l
0b60: 6c 65 6e 67 74 68 20 24 61 72 67 76 5d 20 21 3d length $argv] !=
0b70: 20 32 7d 20 75 73 61 67 65 0a 20 20 20 20 66 6f 2} usage. fo
0b80: 72 65 61 63 68 20 7b 63 76 73 20 66 6f 73 73 69 reach {cvs fossi
0b90: 6c 7d 20 24 61 72 67 76 20 62 72 65 61 6b 0a 0a l} $argv break..
0ba0: 20 20 20 20 69 66 20 7b 21 5b 3a 3a 76 63 3a 3a if {![::vc::
0bb0: 63 76 73 3a 3a 77 73 3a 3a 63 68 65 63 6b 20 24 cvs::ws::check $
0bc0: 63 76 73 20 6d 73 67 5d 7d 20 7b 0a 09 75 73 61 cvs msg]} {..usa
0bd0: 67 65 20 24 6d 73 67 0a 20 20 20 20 7d 20 65 6c ge $msg. } el
0be0: 73 65 69 66 20 7b 5b 66 69 6c 65 20 65 78 69 73 seif {[file exis
0bf0: 74 73 20 24 66 6f 73 73 69 6c 5d 7d 20 7b 0a 09 ts $fossil]} {..
0c00: 75 73 61 67 65 20 22 46 6f 73 73 69 6c 20 64 65 usage "Fossil de
0c10: 73 74 69 6e 61 74 69 6f 6e 20 72 65 70 6f 73 69 stination reposi
0c20: 74 6f 72 79 20 65 78 69 73 74 73 20 61 6c 72 65 tory exists alre
0c30: 61 64 79 2e 22 0a 20 20 20 20 7d 0a 0a 20 20 20 ady.". }..
0c40: 20 72 65 74 75 72 6e 0a 7d 0a 0a 70 72 6f 63 20 return.}..proc
0c50: 74 68 69 73 20 7b 7d 20 7b 0a 20 20 20 20 67 6c this {} {. gl
0c60: 6f 62 61 6c 20 61 72 67 76 0a 20 20 20 20 75 70 obal argv. up
0c70: 76 61 72 20 31 20 61 74 20 61 74 0a 20 20 20 20 var 1 at at.
0c80: 72 65 74 75 72 6e 20 5b 6c 69 6e 64 65 78 20 24 return [lindex $
0c90: 61 72 67 76 20 24 61 74 5d 0a 7d 0a 0a 70 72 6f argv $at].}..pro
0ca0: 63 20 6e 65 78 74 20 7b 7d 20 7b 0a 20 20 20 20 c next {} {.
0cb0: 75 70 76 61 72 20 31 20 61 74 20 61 74 0a 20 20 upvar 1 at at.
0cc0: 20 20 69 6e 63 72 20 61 74 0a 20 20 20 20 72 65 incr at. re
0cd0: 74 75 72 6e 0a 7d 0a 0a 70 72 6f 63 20 72 65 6d turn.}..proc rem
0ce0: 61 69 6e 64 65 72 20 7b 7d 20 7b 0a 20 20 20 20 ainder {} {.
0cf0: 75 70 76 61 72 20 31 20 61 74 20 61 74 0a 20 20 upvar 1 at at.
0d00: 20 20 67 6c 6f 62 61 6c 20 61 72 67 76 0a 20 20 global argv.
0d10: 20 20 73 65 74 20 61 72 67 76 20 5b 6c 72 61 6e set argv [lran
0d20: 67 65 20 24 61 72 67 76 20 24 61 74 20 65 6e 64 ge $argv $at end
0d30: 5d 0a 20 20 20 20 72 65 74 75 72 6e 0a 7d 0a 0a ]. return.}..
0d40: 70 72 6f 63 20 63 6c 69 6e 69 74 20 7b 7d 20 7b proc clinit {} {
0d50: 0a 20 20 20 20 75 70 76 61 72 20 31 20 61 74 20 . upvar 1 at
0d60: 61 74 0a 20 20 20 20 73 65 74 20 61 74 20 30 0a at. set at 0.
0d70: 20 20 20 20 72 65 74 75 72 6e 0a 7d 0a 0a 70 72 return.}..pr
0d80: 6f 63 20 75 73 61 67 65 20 7b 7b 74 65 78 74 20 oc usage {{text
0d90: 7b 7d 7d 7d 20 7b 0a 20 20 20 20 67 6c 6f 62 61 {}}} {. globa
0da0: 6c 20 61 72 67 76 30 0a 20 20 20 20 70 75 74 73 l argv0. puts
0db0: 20 73 74 64 65 72 72 20 22 55 73 61 67 65 3a 20 stderr "Usage:
0dc0: 24 61 72 67 76 30 20 3f 2d 76 3f 20 3f 2d 2d 6e $argv0 ?-v? ?--n
0dd0: 6f 73 69 67 6e 3f 20 3f 2d 2d 62 72 65 61 6b 61 osign? ?--breaka
0de0: 74 20 69 64 3f 20 3f 2d 2d 73 61 76 65 74 6f 20 t id? ?--saveto
0df0: 70 61 74 68 3f 20 63 76 73 2d 72 65 70 6f 73 69 path? cvs-reposi
0e00: 74 6f 72 79 20 66 6f 73 73 69 6c 2d 72 65 70 6f tory fossil-repo
0e10: 73 69 74 6f 72 79 22 0a 20 20 20 20 69 66 20 7b sitory". if {
0e20: 24 74 65 78 74 20 65 71 20 22 22 7d 20 7b 0a 09 $text eq ""} {..
0e30: 70 75 74 73 20 73 74 64 65 72 72 20 22 20 20 20 puts stderr "
0e40: 20 20 20 20 2d 2d 6e 6f 73 69 67 6e 3a 20 20 20 --nosign:
0e50: 20 44 6f 20 6e 6f 74 20 73 69 67 6e 20 74 68 65 Do not sign the
0e60: 20 69 6d 70 6f 72 74 65 64 20 63 68 61 6e 67 65 imported change
0e70: 73 65 74 73 2e 22 0a 09 70 75 74 73 20 73 74 64 sets."..puts std
0e80: 65 72 72 20 22 20 20 20 20 20 20 20 2d 2d 62 72 err " --br
0e90: 65 61 6b 61 74 3a 20 20 20 53 74 6f 70 20 6a 75 eakat: Stop ju
0ea0: 73 74 20 62 65 66 6f 72 65 20 63 6f 6d 6d 69 74 st before commit
0eb0: 74 69 6e 67 20 74 68 65 20 69 64 65 6e 74 69 66 ting the identif
0ec0: 69 65 64 20 63 68 61 6e 67 65 73 65 74 2e 22 0a ied changeset.".
0ed0: 09 70 75 74 73 20 73 74 64 65 72 72 20 22 20 20 .puts stderr "
0ee0: 20 20 20 20 20 2d 2d 63 61 63 68 65 2d 72 63 73 --cache-rcs
0ef0: 3a 20 42 6f 6f 6c 65 61 6e 2e 20 41 63 74 69 76 : Boolean. Activ
0f00: 61 74 65 20 63 61 63 68 69 6e 67 20 6f 66 20 72 ate caching of r
0f10: 63 73 20 70 61 72 73 65 20 72 65 73 75 6c 74 73 cs parse results
0f20: 22 0a 09 70 75 74 73 20 73 74 64 65 72 72 20 22 "..puts stderr "
0f30: 20 20 20 20 20 20 20 2d 2d 70 72 6f 6a 65 63 74 --project
0f40: 3a 20 20 20 50 61 74 68 20 69 6e 20 74 68 65 20 : Path in the
0f50: 43 56 53 20 72 65 70 6f 73 69 74 6f 72 79 20 74 CVS repository t
0f60: 6f 20 6c 69 6d 69 74 20 74 68 65 20 69 6d 70 6f o limit the impo
0f70: 72 74 20 74 6f 2e 22 0a 09 70 75 74 73 20 73 74 rt to."..puts st
0f80: 64 65 72 72 20 22 20 20 20 20 20 20 20 2d 2d 73 derr " --s
0f90: 61 76 65 74 6f 3a 20 20 20 20 53 61 76 65 20 63 aveto: Save c
0fa0: 6f 6d 6d 69 74 20 63 6f 6d 6d 61 6e 64 20 74 6f ommit command to
0fb0: 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 66 the specified f
0fc0: 69 6c 65 2e 22 0a 09 70 75 74 73 20 73 74 64 65 ile."..puts stde
0fd0: 72 72 20 22 20 20 20 20 20 20 20 2d 76 3a 20 20 rr " -v:
0fe0: 20 20 20 20 20 20 20 20 49 6e 63 72 65 61 73 65 Increase
0ff0: 20 6c 6f 67 20 76 65 72 62 6f 73 69 74 79 2e 20 log verbosity.
1000: 43 61 6e 20 62 65 20 75 73 65 64 20 6d 75 6c 74 Can be used mult
1010: 69 70 6c 65 20 74 69 6d 65 73 2e 22 0a 20 20 20 iple times.".
1020: 20 7d 20 65 6c 73 65 20 7b 0a 09 70 75 74 73 20 } else {..puts
1030: 73 74 64 65 72 72 20 22 20 20 20 20 20 20 20 24 stderr " $
1040: 74 65 78 74 22 0a 20 20 20 20 7d 0a 20 20 20 20 text". }.
1050: 65 78 69 74 0a 7d 0a 0a 23 20 2d 2d 2d 2d 2d 2d exit.}..# ------
1060: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1070: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1080: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
1090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
10a0: 2d 2d 2d 2d 2d 2d 2d 0a 0a 6d 61 69 6e 0a 65 78 -------..main.ex
10b0: 69 74 0a it.