Artifact 36ee7e3cab7cc41f3e52bc78a6215faab0a8c857:
File
tools/cvs2fossil/lib/c2f_option.tcl
part of check-in
[97b4405ecf]
- Extended cycle breaker with debug facility allowing the user to watch the neighbourhood of specific changesets during the traversal. Extended label information, highlighting of the nodes of interest. Tweaked log output a bit.
by
aku on
2007-11-25 07:35:30.
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 4f 70 74 ########..## Opt
0200: 69 6f 6e 20 64 61 74 61 62 61 73 65 2c 20 70 72 ion database, pr
0210: 6f 63 65 73 73 65 73 20 74 68 65 20 63 6f 6d 6d ocesses the comm
0220: 61 6e 64 20 6c 69 6e 65 2e 20 4e 6f 74 65 20 74 and line. Note t
0230: 68 61 74 20 6e 6f 74 20 61 6c 6c 20 6f 66 0a 23 hat not all of.#
0240: 23 20 74 68 65 20 6f 70 74 69 6f 6e 20 69 6e 66 # the option inf
0250: 6f 72 6d 61 74 69 6f 6e 20 69 73 20 73 74 6f 72 ormation is stor
0260: 65 64 20 68 65 72 65 2e 20 50 61 72 74 73 20 61 ed here. Parts a
0270: 72 65 20 70 72 6f 70 61 67 61 74 65 64 20 74 6f re propagated to
0280: 0a 23 23 20 6f 74 68 65 72 20 70 69 65 63 65 73 .## other pieces
0290: 20 6f 66 20 74 68 65 20 73 79 73 74 65 6d 20 61 of the system a
02a0: 6e 64 20 68 61 6e 64 6c 65 64 20 74 68 65 72 65 nd handled there
02b0: 2c 20 76 69 61 20 6f 70 74 69 6f 6e 0a 23 23 20 , via option.##
02c0: 64 65 6c 65 67 61 74 69 6f 6e 0a 0a 23 20 23 20 delegation..# #
02d0: 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 ## ### ##### ###
02e0: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 ##### ##########
02f0: 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 ### ############
0300: 23 23 23 23 23 23 23 23 23 0a 23 23 20 52 65 71 #########.## Req
0310: 75 69 72 65 6d 65 6e 74 73 0a 0a 70 61 63 6b 61 uirements..packa
0320: 67 65 20 72 65 71 75 69 72 65 20 54 63 6c 20 38 ge require Tcl 8
0330: 2e 34 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .4
0340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0350: 20 3b 20 23 20 52 65 71 75 69 72 65 64 20 72 75 ; # Required ru
0360: 6e 74 69 6d 65 2e 0a 70 61 63 6b 61 67 65 20 72 ntime..package r
0370: 65 71 75 69 72 65 20 73 6e 69 74 20 20 20 20 20 equire snit
0380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0390: 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 ; #
03a0: 20 4f 4f 20 73 79 73 74 65 6d 2e 0a 70 61 63 6b OO system..pack
03b0: 61 67 65 20 72 65 71 75 69 72 65 20 76 63 3a 3a age require vc::
03c0: 74 6f 6f 6c 73 3a 3a 74 72 6f 75 62 6c 65 20 20 tools::trouble
03d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
03e0: 20 20 3b 20 23 20 45 72 72 6f 72 20 72 65 70 6f ; # Error repo
03f0: 72 74 69 6e 67 2e 0a 70 61 63 6b 61 67 65 20 72 rting..package r
0400: 65 71 75 69 72 65 20 76 63 3a 3a 74 6f 6f 6c 73 equire vc::tools
0410: 3a 3a 6c 6f 67 20 20 20 20 20 20 20 20 20 20 20 ::log
0420: 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 23 ; #
0430: 20 55 73 65 72 20 66 65 65 64 62 61 63 6b 2e 0a User feedback..
0440: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 package require
0450: 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6d 69 73 63 20 vc::tools::misc
0460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0470: 20 20 20 20 20 20 3b 20 23 20 4d 69 73 63 2e 20 ; # Misc.
0480: 70 61 74 68 20 72 65 66 6f 72 6d 61 74 74 69 6e path reformattin
0490: 67 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 g..package requi
04a0: 72 65 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 re vc::fossil::i
04b0: 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 61 73 73 mport::cvs::pass
04c0: 20 20 20 20 20 20 20 20 20 3b 20 23 20 50 61 73 ; # Pas
04d0: 73 20 6d 61 6e 61 67 65 6d 65 6e 74 0a 70 61 63 s management.pac
04e0: 6b 61 67 65 20 72 65 71 75 69 72 65 20 76 63 3a kage require vc:
04f0: 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a :fossil::import:
0500: 3a 63 76 73 3a 3a 70 61 73 73 3a 3a 63 6f 6c 6c :cvs::pass::coll
0510: 61 72 20 3b 20 23 20 50 61 73 73 20 49 2e 0a 70 ar ; # Pass I..p
0520: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 76 ackage require v
0530: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor
0540: 74 3a 3a 63 76 73 3a 3a 72 65 70 6f 73 69 74 6f t::cvs::reposito
0550: 72 79 20 20 20 3b 20 23 20 52 65 70 6f 73 69 74 ry ; # Reposit
0560: 6f 72 79 20 6d 61 6e 61 67 65 6d 65 6e 74 0a 70 ory management.p
0570: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 76 ackage require v
0580: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor
0590: 74 3a 3a 63 76 73 3a 3a 73 74 61 74 65 20 20 20 t::cvs::state
05a0: 20 20 20 20 20 3b 20 23 20 53 74 61 74 65 20 73 ; # State s
05b0: 74 6f 72 61 67 65 0a 70 61 63 6b 61 67 65 20 72 torage.package r
05c0: 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 73 69 equire vc::fossi
05d0: 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a l::import::cvs::
05e0: 70 72 6f 6a 65 63 74 3a 3a 73 79 6d 20 3b 20 23 project::sym ; #
05f0: 20 50 72 6f 6a 65 63 74 20 6c 65 76 65 6c 20 73 Project level s
0600: 79 6d 62 6f 6c 73 0a 70 61 63 6b 61 67 65 20 72 ymbols.package r
0610: 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 73 69 equire vc::fossi
0620: 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a l::import::cvs::
0630: 63 79 63 6c 65 62 72 65 61 6b 65 72 20 3b 20 23 cyclebreaker ; #
0640: 20 42 72 65 61 6b 69 6e 67 20 64 65 70 65 6e 64 Breaking depend
0650: 65 6e 63 79 20 63 79 63 6c 65 73 2e 0a 0a 23 20 ency cycles...#
0660: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 # ## ### ##### #
0670: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
0680: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 ##### ##########
0690: 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 20 0a ###########.## .
06a0: 0a 73 6e 69 74 3a 3a 74 79 70 65 20 3a 3a 76 63 .snit::type ::vc
06b0: 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 ::fossil::import
06c0: 3a 3a 63 76 73 3a 3a 6f 70 74 69 6f 6e 20 7b 0a ::cvs::option {.
06d0: 20 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23 # # ## ### #
06e0: 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 #### ######## ##
06f0: 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 ###########.
0700: 23 23 20 50 75 62 6c 69 63 20 41 50 49 2c 20 4f ## Public API, O
0710: 70 74 69 6f 6e 73 2e 0a 0a 20 20 20 20 23 20 2d ptions... # -
0720: 2d 68 65 6c 70 2c 20 2d 2d 68 65 6c 70 2d 70 61 -help, --help-pa
0730: 73 73 65 73 2c 20 2d 68 0a 20 20 20 20 23 20 2d sses, -h. # -
0740: 2d 76 65 72 73 69 6f 6e 0a 20 20 20 20 23 20 2d -version. # -
0750: 70 2c 20 2d 2d 70 61 73 73 2c 20 2d 2d 70 61 73 p, --pass, --pas
0760: 73 65 73 0a 20 20 20 20 23 20 2d 2d 69 67 6e 6f ses. # --igno
0770: 72 65 2d 63 6f 6e 66 6c 69 63 74 69 6e 67 2d 61 re-conflicting-a
0780: 74 74 69 63 73 0a 20 20 20 20 23 20 2d 2d 70 72 ttics. # --pr
0790: 6f 6a 65 63 74 0a 20 20 20 20 23 20 2d 76 2c 20 oject. # -v,
07a0: 2d 2d 76 65 72 62 6f 73 65 0a 20 20 20 20 23 20 --verbose. #
07b0: 2d 71 2c 20 2d 2d 71 75 69 65 74 0a 20 20 20 20 -q, --quiet.
07c0: 23 20 2d 2d 73 74 61 74 65 20 28 63 6f 6e 76 65 # --state (conve
07d0: 72 73 69 6f 6e 20 73 74 61 74 75 73 2c 20 61 6c rsion status, al
07e0: 61 20 63 6f 6e 66 69 67 2e 63 61 63 68 65 29 0a a config.cache).
07f0: 20 20 20 20 23 20 2d 2d 74 72 75 6e 6b 2d 6f 6e # --trunk-on
0800: 6c 79 0a 20 20 20 20 23 20 2d 2d 65 78 63 6c 75 ly. # --exclu
0810: 64 65 2c 20 2d 2d 66 6f 72 63 65 2d 74 61 67 2c de, --force-tag,
0820: 20 2d 2d 66 6f 72 63 65 2d 62 72 61 6e 63 68 0a --force-branch.
0830: 20 20 20 20 23 20 2d 2d 62 61 74 63 68 0a 0a 20 # --batch..
0840: 20 20 20 23 20 2d 6f 2c 20 2d 2d 6f 75 74 70 75 # -o, --outpu
0850: 74 0a 20 20 20 20 23 20 2d 2d 64 72 79 2d 72 75 t. # --dry-ru
0860: 6e 0a 20 20 20 20 23 20 2d 2d 73 79 6d 62 6f 6c n. # --symbol
0870: 2d 74 72 61 6e 73 66 6f 72 6d 20 52 45 3a 58 58 -transform RE:XX
0880: 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23 .. # # ## ###
0890: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 ##### ########
08a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 #############.
08b0: 20 20 23 23 20 50 75 62 6c 69 63 20 41 50 49 2c ## Public API,
08c0: 20 4d 65 74 68 6f 64 73 0a 0a 20 20 20 20 74 79 Methods.. ty
08d0: 70 65 6d 65 74 68 6f 64 20 70 72 6f 63 65 73 73 pemethod process
08e0: 20 7b 61 72 67 75 6d 65 6e 74 73 7d 20 7b 0a 09 {arguments} {..
08f0: 23 20 53 79 6e 74 61 78 20 6f 66 20 61 72 67 75 # Syntax of argu
0900: 6d 65 6e 74 73 3a 20 3f 6f 70 74 69 6f 6e 20 3f ments: ?option ?
0910: 76 61 6c 75 65 3f 2e 2e 2e 3f 20 2f 70 61 74 68 value?...? /path
0920: 2f 74 6f 2f 63 76 73 2f 72 65 70 6f 73 69 74 6f /to/cvs/reposito
0930: 72 79 0a 0a 09 77 68 69 6c 65 20 7b 5b 49 73 4f ry...while {[IsO
0940: 70 74 69 6f 6e 20 61 72 67 75 6d 65 6e 74 73 20 ption arguments
0950: 2d 3e 20 6f 70 74 69 6f 6e 5d 7d 20 7b 0a 09 20 -> option]} {..
0960: 20 20 20 73 77 69 74 63 68 20 2d 65 78 61 63 74 switch -exact
0970: 20 2d 2d 20 24 6f 70 74 69 6f 6e 20 7b 0a 09 09 -- $option {...
0980: 2d 68 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -h
0990: 20 20 20 20 20 20 20 20 20 20 20 20 2d 0a 09 09 -...
09a0: 2d 2d 68 65 6c 70 20 20 20 20 20 20 20 20 20 20 --help
09b0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 20 50 72 { Pr
09c0: 69 6e 74 48 65 6c 70 20 20 20 20 3b 20 65 78 69 intHelp ; exi
09d0: 74 20 30 20 7d 0a 09 09 2d 2d 68 65 6c 70 2d 70 t 0 }...--help-p
09e0: 61 73 73 65 73 20 20 20 20 20 20 20 20 20 20 20 asses
09f0: 20 20 20 20 7b 20 70 61 73 73 20 68 65 6c 70 20 { pass help
0a00: 20 20 20 3b 20 65 78 69 74 20 30 20 7d 0a 09 09 ; exit 0 }...
0a10: 2d 2d 76 65 72 73 69 6f 6e 20 20 20 20 20 20 20 --version
0a20: 20 20 20 20 20 20 20 20 20 20 20 20 7b 20 50 72 { Pr
0a30: 69 6e 74 56 65 72 73 69 6f 6e 20 3b 20 65 78 69 intVersion ; exi
0a40: 74 20 30 20 7d 0a 09 09 2d 70 20 20 20 20 20 20 t 0 }...-p
0a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0a60: 20 20 20 20 2d 0a 09 09 2d 2d 70 61 73 73 20 20 -...--pass
0a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0a80: 20 20 20 20 2d 0a 09 09 2d 2d 70 61 73 73 65 73 -...--passes
0a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0aa0: 20 20 20 20 7b 20 70 61 73 73 20 73 65 6c 65 63 { pass selec
0ab0: 74 20 5b 56 61 6c 75 65 20 61 72 67 75 6d 65 6e t [Value argumen
0ac0: 74 73 5d 20 7d 0a 09 09 2d 2d 69 67 6e 6f 72 65 ts] }...--ignore
0ad0: 2d 63 6f 6e 66 6c 69 63 74 69 6e 67 2d 61 74 74 -conflicting-att
0ae0: 69 63 73 20 7b 20 63 6f 6c 6c 61 72 20 69 67 6e ics { collar ign
0af0: 6f 72 65 5f 63 6f 6e 66 6c 69 63 74 69 6e 67 5f ore_conflicting_
0b00: 61 74 74 69 63 73 20 7d 0a 09 09 2d 2d 70 72 6f attics }...--pro
0b10: 6a 65 63 74 20 20 20 20 20 20 20 20 20 20 20 20 ject
0b20: 20 20 20 20 20 20 20 7b 20 72 65 70 6f 73 69 74 { reposit
0b30: 6f 72 79 20 61 64 64 20 5b 56 61 6c 75 65 20 61 ory add [Value a
0b40: 72 67 75 6d 65 6e 74 73 5d 20 7d 0a 09 09 2d 76 rguments] }...-v
0b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0b60: 20 20 20 20 20 20 20 20 20 20 2d 0a 09 09 2d 2d -...--
0b70: 76 65 72 62 6f 73 65 20 20 20 20 20 20 20 20 20 verbose
0b80: 20 20 20 20 20 20 20 20 20 20 7b 20 6c 6f 67 20 { log
0b90: 76 65 72 62 6f 73 65 20 7d 0a 09 09 2d 71 20 20 verbose }...-q
0ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0bb0: 20 20 20 20 20 20 20 20 2d 0a 09 09 2d 2d 71 75 -...--qu
0bc0: 69 65 74 20 20 20 20 20 20 20 20 20 20 20 20 20 iet
0bd0: 20 20 20 20 20 20 20 20 7b 20 6c 6f 67 20 71 75 { log qu
0be0: 69 65 74 20 7d 0a 09 09 2d 2d 73 74 61 74 65 20 iet }...--state
0bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0c00: 20 20 20 20 7b 20 73 74 61 74 65 20 75 73 65 20 { state use
0c10: 5b 56 61 6c 75 65 20 61 72 67 75 6d 65 6e 74 73 [Value arguments
0c20: 5d 20 7d 0a 09 09 2d 2d 74 72 75 6e 6b 2d 6f 6e ] }...--trunk-on
0c30: 6c 79 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ly
0c40: 20 20 7b 20 72 65 70 6f 73 69 74 6f 72 79 20 74 { repository t
0c50: 72 75 6e 6b 6f 6e 6c 79 21 20 7d 0a 09 09 2d 2d runkonly! }...--
0c60: 65 78 63 6c 75 64 65 20 20 20 20 20 20 20 20 20 exclude
0c70: 20 20 20 20 20 20 20 20 20 20 7b 20 70 72 6f 6a { proj
0c80: 65 63 74 3a 3a 73 79 6d 20 65 78 63 6c 75 64 65 ect::sym exclude
0c90: 20 20 20 20 20 5b 56 61 6c 75 65 20 61 72 67 75 [Value argu
0ca0: 6d 65 6e 74 73 5d 20 7d 0a 09 09 2d 2d 66 6f 72 ments] }...--for
0cb0: 63 65 2d 74 61 67 20 20 20 20 20 20 20 20 20 20 ce-tag
0cc0: 20 20 20 20 20 20 20 7b 20 70 72 6f 6a 65 63 74 { project
0cd0: 3a 3a 73 79 6d 20 66 6f 72 63 65 74 61 67 20 20 ::sym forcetag
0ce0: 20 20 5b 56 61 6c 75 65 20 61 72 67 75 6d 65 6e [Value argumen
0cf0: 74 73 5d 20 7d 0a 09 09 2d 2d 66 6f 72 63 65 2d ts] }...--force-
0d00: 62 72 61 6e 63 68 20 20 20 20 20 20 20 20 20 20 branch
0d10: 20 20 20 20 7b 20 70 72 6f 6a 65 63 74 3a 3a 73 { project::s
0d20: 79 6d 20 66 6f 72 63 65 62 72 61 6e 63 68 20 5b ym forcebranch [
0d30: 56 61 6c 75 65 20 61 72 67 75 6d 65 6e 74 73 5d Value arguments]
0d40: 20 7d 0a 09 09 2d 2d 62 61 74 63 68 20 20 20 20 }...--batch
0d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0d60: 20 7b 20 6c 6f 67 20 6e 6f 70 72 6f 67 72 65 73 { log noprogres
0d70: 73 20 7d 0a 09 09 2d 2d 64 6f 74 73 20 20 20 20 s }...--dots
0d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0d90: 20 20 7b 20 63 79 63 6c 65 62 72 65 61 6b 65 72 { cyclebreaker
0da0: 20 64 6f 74 73 74 6f 20 5b 56 61 6c 75 65 20 61 dotsto [Value a
0db0: 72 67 75 6d 65 6e 74 73 5d 20 7d 0a 09 09 2d 2d rguments] }...--
0dc0: 77 61 74 63 68 20 20 20 20 20 20 20 20 20 20 20 watch
0dd0: 20 20 20 20 20 20 20 20 20 20 7b 20 63 79 63 6c { cycl
0de0: 65 62 72 65 61 6b 65 72 20 77 61 74 63 68 20 20 ebreaker watch
0df0: 5b 56 61 6c 75 65 20 61 72 67 75 6d 65 6e 74 73 [Value arguments
0e00: 5d 20 7d 0a 09 09 64 65 66 61 75 6c 74 20 7b 0a ] }...default {.
0e10: 09 09 20 20 20 20 55 73 61 67 65 20 24 62 61 64 .. Usage $bad
0e20: 6f 70 74 69 6f 6e 24 6f 70 74 69 6f 6e 5c 6e 24 option$option\n$
0e30: 67 65 74 68 65 6c 70 0a 09 09 7d 0a 09 20 20 20 gethelp...}..
0e40: 20 7d 0a 09 7d 0a 0a 09 69 66 20 7b 5b 6c 6c 65 }..}...if {[lle
0e50: 6e 67 74 68 20 24 61 72 67 75 6d 65 6e 74 73 5d ngth $arguments]
0e60: 20 3e 20 31 7d 20 55 73 61 67 65 0a 09 69 66 20 > 1} Usage..if
0e70: 7b 5b 6c 6c 65 6e 67 74 68 20 24 61 72 67 75 6d {[llength $argum
0e80: 65 6e 74 73 5d 20 3c 20 31 7d 20 7b 20 55 73 61 ents] < 1} { Usa
0e90: 67 65 20 24 6e 6f 63 76 73 20 7d 0a 09 72 65 70 ge $nocvs }..rep
0ea0: 6f 73 69 74 6f 72 79 20 62 61 73 65 20 5b 73 74 ository base [st
0eb0: 72 69 70 74 72 61 69 6c 69 6e 67 73 6c 61 73 68 riptrailingslash
0ec0: 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 75 6d 65 [lindex $argume
0ed0: 6e 74 73 20 30 5d 5d 0a 0a 09 56 61 6c 69 64 61 nts 0]]...Valida
0ee0: 74 65 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d te..return. }
0ef0: 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23 .. # # ## ###
0f00: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 ##### ########
0f10: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 #############.
0f20: 20 20 23 23 20 49 6e 74 65 72 6e 61 6c 20 6d 65 ## Internal me
0f30: 74 68 6f 64 73 2c 20 70 72 69 6e 74 69 6e 67 20 thods, printing
0f40: 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 0a 20 20 information...
0f50: 20 20 70 72 6f 63 20 50 72 69 6e 74 48 65 6c 70 proc PrintHelp
0f60: 20 7b 7d 20 7b 0a 09 67 6c 6f 62 61 6c 20 61 72 {} {..global ar
0f70: 67 76 30 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 gv0..trouble inf
0f80: 6f 20 22 55 73 61 67 65 3a 20 24 61 72 67 76 30 o "Usage: $argv0
0f90: 20 24 75 73 61 67 65 22 0a 09 74 72 6f 75 62 6c $usage"..troubl
0fa0: 65 20 69 6e 66 6f 20 22 22 0a 09 74 72 6f 75 62 e info ""..troub
0fb0: 6c 65 20 69 6e 66 6f 20 22 20 20 49 6e 66 6f 72 le info " Infor
0fc0: 6d 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 22 0a mation options".
0fd0: 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 22 .trouble info ""
0fe0: 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 ..trouble info "
0ff0: 20 20 20 20 2d 68 2c 20 2d 2d 68 65 6c 70 20 20 -h, --help
1000: 20 20 50 72 69 6e 74 20 74 68 69 73 20 6d 65 73 Print this mes
1010: 73 61 67 65 20 61 6e 64 20 65 78 69 74 20 77 69 sage and exit wi
1020: 74 68 20 73 75 63 63 65 73 73 22 0a 09 74 72 6f th success"..tro
1030: 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 2d uble info " -
1040: 2d 68 65 6c 70 2d 70 61 73 73 65 73 20 50 72 69 -help-passes Pri
1050: 6e 74 20 6c 69 73 74 20 6f 66 20 70 61 73 73 65 nt list of passe
1060: 73 20 61 6e 64 20 65 78 69 74 20 77 69 74 68 20 s and exit with
1070: 73 75 63 63 65 73 73 22 0a 09 74 72 6f 75 62 6c success"..troubl
1080: 65 20 69 6e 66 6f 20 22 20 20 20 20 2d 2d 76 65 e info " --ve
1090: 72 73 69 6f 6e 20 20 20 20 20 50 72 69 6e 74 20 rsion Print
10a0: 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 20 6f version number o
10b0: 66 20 24 61 72 67 76 30 22 0a 09 74 72 6f 75 62 f $argv0"..troub
10c0: 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 2d 76 2c le info " -v,
10d0: 20 2d 2d 76 65 72 62 6f 73 65 20 49 6e 63 72 65 --verbose Incre
10e0: 61 73 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 27 ase application'
10f0: 73 20 76 65 72 62 6f 73 69 74 79 22 0a 09 74 72 s verbosity"..tr
1100: 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 ouble info "
1110: 2d 71 2c 20 2d 2d 71 75 69 65 74 20 20 20 44 65 -q, --quiet De
1120: 63 72 65 61 73 65 20 61 70 70 6c 69 63 61 74 69 crease applicati
1130: 6f 6e 27 73 20 76 65 72 62 6f 73 69 74 79 22 0a on's verbosity".
1140: 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 .trouble info "
1150: 20 20 20 2d 2d 62 61 74 63 68 20 20 20 20 20 20 --batch
1160: 20 44 69 73 61 62 6c 65 20 74 68 65 20 70 72 6f Disable the pro
1170: 67 72 65 73 73 20 66 65 65 64 62 61 63 6b 20 73 gress feedback s
1180: 74 61 6e 64 61 72 64 20 74 6f 22 0a 09 74 72 6f tandard to"..tro
1190: 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 20 uble info "
11a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 int
11b0: 65 72 61 63 74 69 76 65 20 75 73 65 2e 22 0a 09 eractive use."..
11c0: 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 22 0a trouble info "".
11d0: 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 .trouble info "
11e0: 20 43 6f 6e 76 65 72 73 69 6f 6e 20 63 6f 6e 74 Conversion cont
11f0: 72 6f 6c 20 6f 70 74 69 6f 6e 73 22 0a 09 74 72 rol options"..tr
1200: 6f 75 62 6c 65 20 69 6e 66 6f 20 22 22 0a 09 74 ouble info ""..t
1210: 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 rouble info "
1220: 20 2d 70 2c 20 2d 2d 70 61 73 73 20 50 41 53 53 -p, --pass PASS
1230: 20 20 20 20 20 20 20 20 20 20 20 20 52 75 6e 20 Run
1240: 6f 6e 6c 79 20 74 68 65 20 73 70 65 63 69 66 69 only the specifi
1250: 65 64 20 63 6f 6e 76 65 72 73 69 6f 6e 20 70 61 ed conversion pa
1260: 73 73 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 ss"..trouble inf
1270: 6f 20 22 20 20 20 20 2d 70 2c 20 2d 2d 70 61 73 o " -p, --pas
1280: 73 65 73 20 3f 53 54 41 52 54 3f 3a 3f 45 4e 44 ses ?START?:?END
1290: 3f 20 52 75 6e 20 6f 6e 6c 79 20 74 68 65 20 70 ? Run only the p
12a0: 61 73 73 65 73 20 53 54 41 52 54 20 74 68 72 6f asses START thro
12b0: 75 67 68 20 45 4e 44 2c 22 0a 09 74 72 6f 75 62 ugh END,"..troub
12c0: 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 20 20 20 le info "
12d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12e0: 20 20 20 20 20 20 20 20 69 6e 63 6c 75 73 69 76 inclusiv
12f0: 65 2e 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 e."..trouble inf
1300: 6f 20 22 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e o ""..trouble in
1310: 66 6f 20 22 20 20 20 20 20 20 20 20 20 20 20 20 fo "
1320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1330: 20 20 20 50 61 73 73 65 73 20 61 72 65 20 73 70 Passes are sp
1340: 65 63 69 66 69 65 64 20 62 79 20 6e 61 6d 65 2e ecified by name.
1350: 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 "..trouble info
1360: 22 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f ""..trouble info
1370: 20 22 20 20 20 20 2d 2d 69 67 6e 6f 72 65 2d 63 " --ignore-c
1380: 6f 6e 66 6c 69 63 74 69 6e 67 2d 61 74 74 69 63 onflicting-attic
1390: 73 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f s"..trouble info
13a0: 20 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "
13b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13c0: 20 50 72 65 76 65 6e 74 20 61 62 6f 72 74 20 77 Prevent abort w
13d0: 68 65 6e 20 63 6f 6e 66 6c 69 63 74 69 6e 67 20 hen conflicting
13e0: 61 72 63 68 69 76 65 73 22 0a 09 74 72 6f 75 62 archives"..troub
13f0: 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 20 20 20 le info "
1400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1410: 20 20 20 20 20 20 20 20 77 65 72 65 20 66 6f 75 were fou
1420: 6e 64 20 69 6e 20 62 6f 74 68 20 72 65 67 75 6c nd in both regul
1430: 61 72 20 61 6e 64 20 41 74 74 69 63 2e 22 0a 09 ar and Attic."..
1440: 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 22 0a trouble info "".
1450: 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 .trouble info "
1460: 20 20 20 2d 2d 73 74 61 74 65 20 50 41 54 48 20 --state PATH
1470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 61 Sa
1480: 76 65 20 73 74 61 74 65 20 74 6f 20 74 68 65 20 ve state to the
1490: 73 70 65 63 69 66 69 65 64 20 66 69 6c 65 2c 20 specified file,
14a0: 61 6e 64 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e and"..trouble in
14b0: 66 6f 20 22 20 20 20 20 20 20 20 20 20 20 20 20 fo "
14c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
14d0: 20 20 20 6c 6f 61 64 20 73 74 61 74 65 20 6f 66 load state of
14e0: 20 70 72 65 76 69 6f 75 73 20 72 75 6e 73 20 66 previous runs f
14f0: 72 6f 6d 20 69 74 20 74 6f 6f 2e 22 0a 09 74 72 rom it too."..tr
1500: 6f 75 62 6c 65 20 69 6e 66 6f 20 22 22 0a 09 74 ouble info ""..t
1510: 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 rouble info "
1520: 20 2d 2d 65 78 63 6c 75 64 65 20 3f 50 52 4f 4a --exclude ?PROJ
1530: 45 43 54 3a 3f 53 59 4d 42 4f 4c 20 45 78 63 6c ECT:?SYMBOL Excl
1540: 75 64 65 20 74 68 65 20 6e 61 6d 65 64 20 73 79 ude the named sy
1550: 6d 62 6f 6c 20 66 72 6f 6d 20 61 6c 6c 20 6f 72 mbol from all or
1560: 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 "..trouble info
1570: 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "
1580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1590: 6a 75 73 74 20 74 68 65 20 73 70 65 63 69 66 69 just the specifi
15a0: 65 64 20 70 72 6f 6a 65 63 74 2e 20 42 6f 74 68 ed project. Both
15b0: 20 70 72 6f 6a 65 63 74 22 0a 09 74 72 6f 75 62 project"..troub
15c0: 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 20 20 20 le info "
15d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
15e0: 20 20 20 20 20 20 20 20 61 6e 64 20 73 79 6d 62 and symb
15f0: 6f 6c 20 6e 61 6d 65 73 20 61 72 65 20 67 6c 6f ol names are glo
1600: 62 20 70 61 74 74 65 72 6e 73 2e 22 0a 09 74 72 b patterns."..tr
1610: 6f 75 62 6c 65 20 69 6e 66 6f 20 22 22 0a 09 74 ouble info ""..t
1620: 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 rouble info "
1630: 20 2d 2d 66 6f 72 63 65 2d 74 61 67 20 3f 50 52 --force-tag ?PR
1640: 4f 4a 45 43 54 3a 3f 53 59 4d 42 4f 4c 22 0a 09 OJECT:?SYMBOL"..
1650: 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 trouble info "
1660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1670: 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 For
1680: 63 65 20 74 68 65 20 6e 61 6d 65 64 20 73 79 6d ce the named sym
1690: 62 6f 6c 20 66 72 6f 6d 20 61 6c 6c 20 6f 72 20 bol from all or
16a0: 6a 75 73 74 22 0a 09 74 72 6f 75 62 6c 65 20 69 just"..trouble i
16b0: 6e 66 6f 20 22 20 20 20 20 20 20 20 20 20 20 20 nfo "
16c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
16d0: 20 20 20 20 74 68 65 20 73 70 65 63 69 66 69 65 the specifie
16e0: 64 20 70 72 6f 6a 65 63 74 20 74 6f 20 62 65 20 d project to be
16f0: 63 6f 6e 76 65 72 74 65 64 20 61 73 22 0a 09 74 converted as"..t
1700: 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 rouble info "
1710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1720: 20 20 20 20 20 20 20 20 20 20 20 20 74 61 67 2e tag.
1730: 20 42 6f 74 68 20 70 72 6f 6a 65 63 74 20 61 6e Both project an
1740: 64 20 73 79 6d 62 6f 6c 20 6e 61 6d 65 73 20 61 d symbol names a
1750: 72 65 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 re"..trouble inf
1760: 6f 20 22 20 20 20 20 20 20 20 20 20 20 20 20 20 o "
1770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1780: 20 20 67 6c 6f 62 20 70 61 74 74 65 72 6e 73 2e glob patterns.
1790: 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 "..trouble info
17a0: 22 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f ""..trouble info
17b0: 20 22 20 20 20 20 2d 2d 66 6f 72 63 65 2d 62 72 " --force-br
17c0: 61 6e 63 68 20 3f 50 52 4f 4a 45 43 54 3a 3f 53 anch ?PROJECT:?S
17d0: 59 4d 42 4f 4c 22 0a 09 74 72 6f 75 62 6c 65 20 YMBOL"..trouble
17e0: 69 6e 66 6f 20 22 20 20 20 20 20 20 20 20 20 20 info "
17f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1800: 20 20 20 20 20 46 6f 72 63 65 20 74 68 65 20 6e Force the n
1810: 61 6d 65 64 20 73 79 6d 62 6f 6c 20 66 72 6f 6d amed symbol from
1820: 20 61 6c 6c 20 6f 72 20 6a 75 73 74 22 0a 09 74 all or just"..t
1830: 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 rouble info "
1840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1850: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20 the
1860: 73 70 65 63 69 66 69 65 64 20 70 72 6f 6a 65 63 specified projec
1870: 74 20 74 6f 20 62 65 20 63 6f 6e 76 65 72 74 65 t to be converte
1880: 64 20 61 73 22 0a 09 74 72 6f 75 62 6c 65 20 69 d as"..trouble i
1890: 6e 66 6f 20 22 20 20 20 20 20 20 20 20 20 20 20 nfo "
18a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
18b0: 20 20 20 20 62 72 61 6e 63 68 2e 20 42 6f 74 68 branch. Both
18c0: 20 70 72 6f 6a 65 63 74 20 61 6e 64 20 73 79 6d project and sym
18d0: 62 6f 6c 20 6e 61 6d 65 73 22 0a 09 74 72 6f 75 bol names"..trou
18e0: 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 20 20 ble info "
18f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1900: 20 20 20 20 20 20 20 20 20 61 72 65 20 67 6c 6f are glo
1910: 62 20 70 61 74 74 65 72 6e 73 2e 22 0a 09 74 72 b patterns."..tr
1920: 6f 75 62 6c 65 20 69 6e 66 6f 20 22 22 0a 09 74 ouble info ""..t
1930: 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 rouble info "
1940: 20 2d 2d 64 6f 74 73 20 50 41 54 48 20 20 20 20 --dots PATH
1950: 20 20 20 20 20 20 20 20 20 20 20 20 57 72 69 74 Writ
1960: 65 20 74 68 65 20 63 68 61 6e 67 65 73 65 74 20 e the changeset
1970: 67 72 61 70 68 73 20 62 65 66 6f 72 65 2c 20 61 graphs before, a
1980: 66 74 65 72 2c 22 0a 09 74 72 6f 75 62 6c 65 20 fter,"..trouble
1990: 69 6e 66 6f 20 22 20 20 20 20 20 20 20 20 20 20 info "
19a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19b0: 20 20 20 20 20 61 6e 64 20 64 75 72 69 6e 67 20 and during
19c0: 62 72 65 61 6b 69 6e 67 20 74 68 65 20 6f 66 20 breaking the of
19d0: 63 79 63 6c 65 73 20 74 6f 20 74 68 65 22 0a 09 cycles to the"..
19e0: 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 trouble info "
19f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 72 dir
1a10: 65 63 6f 74 72 79 20 50 41 54 48 2c 20 75 73 69 ecotry PATH, usi
1a20: 6e 67 20 47 72 61 70 68 56 69 7a 27 73 20 64 6f ng GraphViz's do
1a30: 74 20 66 6f 72 6d 61 74 22 0a 09 74 72 6f 75 62 t format"..troub
1a40: 6c 65 20 69 6e 66 6f 20 22 22 0a 0a 09 23 20 2d le info ""...# -
1a50: 2d 70 72 6f 6a 65 63 74 2c 20 2d 2d 63 61 63 68 -project, --cach
1a60: 65 0a 09 23 20 2e 2e 2e 0a 09 72 65 74 75 72 6e e..# .....return
1a70: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70 72 6f 63 . }.. proc
1a80: 20 50 72 69 6e 74 56 65 72 73 69 6f 6e 20 7b 7d PrintVersion {}
1a90: 20 7b 0a 09 67 6c 6f 62 61 6c 20 61 72 67 76 30 {..global argv0
1aa0: 0a 09 73 65 74 20 76 20 5b 70 61 63 6b 61 67 65 ..set v [package
1ab0: 20 72 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 require vc::fos
1ac0: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 sil::import::cvs
1ad0: 5d 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 ]..trouble info
1ae0: 22 24 61 72 67 76 30 20 76 24 76 22 0a 09 72 65 "$argv0 v$v"..re
1af0: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 turn. }..
1b00: 70 72 6f 63 20 55 73 61 67 65 20 7b 7b 74 65 78 proc Usage {{tex
1b10: 74 20 7b 7d 7d 7d 20 7b 0a 09 67 6c 6f 62 61 6c t {}}} {..global
1b20: 20 61 72 67 76 30 0a 09 74 72 6f 75 62 6c 65 20 argv0..trouble
1b30: 66 61 74 61 6c 20 22 55 73 61 67 65 3a 20 24 61 fatal "Usage: $a
1b40: 72 67 76 30 20 24 75 73 61 67 65 22 0a 09 69 66 rgv0 $usage"..if
1b50: 20 7b 24 74 65 78 74 20 6e 65 20 22 22 7d 20 7b {$text ne ""} {
1b60: 20 74 72 6f 75 62 6c 65 20 66 61 74 61 6c 20 22 trouble fatal "
1b70: 24 74 65 78 74 22 20 7d 0a 09 65 78 69 74 20 31 $text" }..exit 1
1b80: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 23 20 . }.. # #
1b90: 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 ## ### ##### ###
1ba0: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 ##### ##########
1bb0: 23 23 23 0a 20 20 20 20 23 23 20 49 6e 74 65 72 ###. ## Inter
1bc0: 6e 61 6c 20 6d 65 74 68 6f 64 73 2c 20 63 6f 6d nal methods, com
1bd0: 6d 61 6e 64 20 6c 69 6e 65 20 70 72 6f 63 65 73 mand line proces
1be0: 73 69 6e 67 0a 0a 20 20 20 20 74 79 70 65 76 61 sing.. typeva
1bf0: 72 69 61 62 6c 65 20 75 73 61 67 65 20 20 20 20 riable usage
1c00: 20 22 3f 6f 70 74 69 6f 6e 20 3f 76 61 6c 75 65 "?option ?value
1c10: 3f 2e 2e 2e 3f 20 63 76 73 2d 72 65 70 6f 73 69 ?...? cvs-reposi
1c20: 74 6f 72 79 2d 70 61 74 68 22 0a 20 20 20 20 74 tory-path". t
1c30: 79 70 65 76 61 72 69 61 62 6c 65 20 6e 6f 63 76 ypevariable nocv
1c40: 73 20 20 20 20 20 22 20 20 20 20 20 20 20 54 68 s " Th
1c50: 65 20 63 76 73 2d 72 65 70 6f 73 69 74 6f 72 79 e cvs-repository
1c60: 2d 70 61 74 68 20 69 73 20 6d 69 73 73 69 6e 67 -path is missing
1c70: 2e 22 0a 20 20 20 20 74 79 70 65 76 61 72 69 61 .". typevaria
1c80: 62 6c 65 20 62 61 64 6f 70 74 69 6f 6e 20 22 20 ble badoption "
1c90: 20 20 20 20 20 20 42 61 64 20 6f 70 74 69 6f 6e Bad option
1ca0: 20 22 0a 20 20 20 20 74 79 70 65 76 61 72 69 61 ". typevaria
1cb0: 62 6c 65 20 67 65 74 68 65 6c 70 20 20 20 22 20 ble gethelp "
1cc0: 20 20 20 20 20 20 55 73 65 20 2d 2d 68 65 6c 70 Use --help
1cd0: 20 74 6f 20 67 65 74 20 68 65 6c 70 2e 22 0a 0a to get help."..
1ce0: 20 20 20 20 70 72 6f 63 20 49 73 4f 70 74 69 6f proc IsOptio
1cf0: 6e 20 7b 61 76 20 5f 20 6f 76 7d 20 7b 0a 09 75 n {av _ ov} {..u
1d00: 70 76 61 72 20 31 20 24 61 76 20 61 72 67 75 6d pvar 1 $av argum
1d10: 65 6e 74 73 20 24 6f 76 20 6f 70 74 69 6f 6e 0a ents $ov option.
1d20: 09 73 65 74 20 63 61 6e 64 69 64 61 74 65 20 5b .set candidate [
1d30: 6c 69 6e 64 65 78 20 24 61 72 67 75 6d 65 6e 74 lindex $argument
1d40: 73 20 30 5d 0a 09 69 66 20 7b 21 5b 73 74 72 69 s 0]..if {![stri
1d50: 6e 67 20 6d 61 74 63 68 20 2d 2a 20 24 63 61 6e ng match -* $can
1d60: 64 69 64 61 74 65 5d 7d 20 7b 72 65 74 75 72 6e didate]} {return
1d70: 20 30 7d 0a 09 73 65 74 20 6f 70 74 69 6f 6e 20 0}..set option
1d80: 20 20 20 24 63 61 6e 64 69 64 61 74 65 0a 09 73 $candidate..s
1d90: 65 74 20 61 72 67 75 6d 65 6e 74 73 20 5b 6c 72 et arguments [lr
1da0: 61 6e 67 65 20 24 61 72 67 75 6d 65 6e 74 73 20 ange $arguments
1db0: 31 20 65 6e 64 5d 0a 09 72 65 74 75 72 6e 20 31 1 end]..return 1
1dc0: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70 72 6f 63 . }.. proc
1dd0: 20 56 61 6c 75 65 20 7b 61 76 7d 20 7b 0a 09 75 Value {av} {..u
1de0: 70 76 61 72 20 31 20 24 61 76 20 61 72 67 75 6d pvar 1 $av argum
1df0: 65 6e 74 73 0a 09 73 65 74 20 76 20 20 20 20 20 ents..set v
1e00: 20 20 20 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 [lindex $arg
1e10: 75 6d 65 6e 74 73 20 30 5d 0a 09 73 65 74 20 61 uments 0]..set a
1e20: 72 67 75 6d 65 6e 74 73 20 5b 6c 72 61 6e 67 65 rguments [lrange
1e30: 20 24 61 72 67 75 6d 65 6e 74 73 20 31 20 65 6e $arguments 1 en
1e40: 64 5d 0a 09 72 65 74 75 72 6e 20 24 76 0a 20 20 d]..return $v.
1e50: 20 20 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 20 }.. # # ##
1e60: 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 ### ##### ######
1e70: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 ## #############
1e80: 0a 20 20 20 20 23 23 20 49 6e 74 65 72 6e 61 6c . ## Internal
1e90: 20 6d 65 74 68 6f 64 73 2c 20 73 74 61 74 65 20 methods, state
1ea0: 76 61 6c 69 64 61 74 69 6f 6e 0a 0a 20 20 20 20 validation..
1eb0: 70 72 6f 63 20 56 61 6c 69 64 61 74 65 20 7b 7d proc Validate {}
1ec0: 20 7b 0a 09 23 20 50 72 65 76 65 6e 74 20 69 6e {..# Prevent in
1ed0: 2d 64 65 70 74 68 20 76 61 6c 69 64 61 74 69 6f -depth validatio
1ee0: 6e 20 69 66 20 74 68 65 20 6f 70 74 69 6f 6e 73 n if the options
1ef0: 20 77 65 72 65 20 61 6c 72 65 61 64 79 20 62 61 were already ba
1f00: 64 2e 0a 09 74 72 6f 75 62 6c 65 20 61 62 6f 72 d...trouble abor
1f10: 74 3f 0a 0a 09 72 65 70 6f 73 69 74 6f 72 79 20 t?...repository
1f20: 76 61 6c 69 64 61 74 65 0a 09 73 74 61 74 65 20 validate..state
1f30: 20 20 20 20 20 73 65 74 75 70 0a 0a 09 74 72 6f setup...tro
1f40: 75 62 6c 65 20 61 62 6f 72 74 3f 0a 09 72 65 74 uble abort?..ret
1f50: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 urn. }.. #
1f60: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 # ## ### #####
1f70: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 ######## #######
1f80: 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 43 6f ######. ## Co
1f90: 6e 66 69 67 75 72 61 74 69 6f 6e 0a 0a 20 20 20 nfiguration..
1fa0: 20 70 72 61 67 6d 61 20 2d 68 61 73 69 6e 73 74 pragma -hasinst
1fb0: 61 6e 63 65 73 20 20 20 6e 6f 20 3b 20 23 20 73 ances no ; # s
1fc0: 69 6e 67 6c 65 74 6f 6e 0a 20 20 20 20 70 72 61 ingleton. pra
1fd0: 67 6d 61 20 2d 68 61 73 74 79 70 65 69 6e 66 6f gma -hastypeinfo
1fe0: 20 20 20 20 6e 6f 20 3b 20 23 20 6e 6f 20 69 6e no ; # no in
1ff0: 74 72 6f 73 70 65 63 74 69 6f 6e 0a 20 20 20 20 trospection.
2000: 70 72 61 67 6d 61 20 2d 68 61 73 74 79 70 65 64 pragma -hastyped
2010: 65 73 74 72 6f 79 20 6e 6f 20 3b 20 23 20 69 6d estroy no ; # im
2020: 6d 6f 72 74 61 6c 0a 0a 20 20 20 20 23 20 23 20 mortal.. # #
2030: 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 ## ### ##### ###
2040: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 ##### ##########
2050: 23 23 23 0a 7d 0a 0a 6e 61 6d 65 73 70 61 63 65 ###.}..namespace
2060: 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 66 6f 73 73 eval ::vc::foss
2070: 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 20 il::import::cvs
2080: 7b 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 65 20 {. namespace
2090: 65 78 70 6f 72 74 20 6f 70 74 69 6f 6e 0a 20 20 export option.
20a0: 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c namespace eval
20b0: 20 6f 70 74 69 6f 6e 20 7b 0a 09 6e 61 6d 65 73 option {..names
20c0: 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 pace import ::vc
20d0: 3a 3a 74 6f 6f 6c 73 3a 3a 6d 69 73 63 3a 3a 73 ::tools::misc::s
20e0: 74 72 69 70 74 72 61 69 6c 69 6e 67 73 6c 61 73 triptrailingslas
20f0: 68 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 h..namespace imp
2100: 6f 72 74 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c ort ::vc::fossil
2110: 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 ::import::cvs::p
2120: 61 73 73 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 ass..namespace i
2130: 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 66 6f 73 73 mport ::vc::foss
2140: 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a il::import::cvs:
2150: 3a 70 61 73 73 3a 3a 63 6f 6c 6c 61 72 0a 09 6e :pass::collar..n
2160: 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 amespace import
2170: 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d ::vc::fossil::im
2180: 70 6f 72 74 3a 3a 63 76 73 3a 3a 63 79 63 6c 65 port::cvs::cycle
2190: 62 72 65 61 6b 65 72 0a 09 6e 61 6d 65 73 70 61 breaker..namespa
21a0: 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a ce import ::vc::
21b0: 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a fossil::import::
21c0: 63 76 73 3a 3a 72 65 70 6f 73 69 74 6f 72 79 0a cvs::repository.
21d0: 09 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 .namespace impor
21e0: 74 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a t ::vc::fossil::
21f0: 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 73 74 61 import::cvs::sta
2200: 74 65 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 76 te..namespace ev
2210: 61 6c 20 70 72 6f 6a 65 63 74 20 7b 0a 09 20 20 al project {..
2220: 20 20 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f namespace impo
2230: 72 74 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a rt ::vc::fossil:
2240: 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 72 :import::cvs::pr
2250: 6f 6a 65 63 74 3a 3a 73 79 6d 0a 09 7d 0a 09 6e oject::sym..}..n
2260: 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 amespace import
2270: 3a 3a 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 74 72 6f ::vc::tools::tro
2280: 75 62 6c 65 0a 09 6e 61 6d 65 73 70 61 63 65 20 uble..namespace
2290: 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 74 6f 6f import ::vc::too
22a0: 6c 73 3a 3a 6c 6f 67 0a 20 20 20 20 7d 0a 7d 0a ls::log. }.}.
22b0: 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 .# # ## ### ####
22c0: 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 # ######## #####
22d0: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 ######## #######
22e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 ##############.#
22f0: 23 20 52 65 61 64 79 0a 0a 70 61 63 6b 61 67 65 # Ready..package
2300: 20 70 72 6f 76 69 64 65 20 76 63 3a 3a 66 6f 73 provide vc::fos
2310: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 sil::import::cvs
2320: 3a 3a 6f 70 74 69 6f 6e 20 31 2e 30 0a 72 65 74 ::option 1.0.ret
2330: 75 72 6e 0a urn.