Artifact 5b894a43fc43af3f4223d44431940e9b427949ea:
File
tools/cvs2fossil/lib/c2f_option.tcl
part of check-in
[7f15be9078]
- Added the ability to export the changeset graphs processed by the passes 6 to 8 using GraphViz's dot-format. This is activated by using the switch '--dots'. Bugfixes in the cycle breaker. First corrected variable names, I forgot to use the standard 'myXXX' format for the typevariables. Second, fixed a bug uncovered by looking at the exported graphs, which caused the system to loose arcs, possibly breaking cycles without actually breaking them, leaving them in the dependencies.
by
aku on
2007-11-20 06:59:03.
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 64 65 rguments] }...de
0dc0: 66 61 75 6c 74 20 7b 0a 09 09 20 20 20 20 55 73 fault {... Us
0dd0: 61 67 65 20 24 62 61 64 6f 70 74 69 6f 6e 24 6f age $badoption$o
0de0: 70 74 69 6f 6e 5c 6e 24 67 65 74 68 65 6c 70 0a ption\n$gethelp.
0df0: 09 09 7d 0a 09 20 20 20 20 7d 0a 09 7d 0a 0a 09 ..}.. }..}...
0e00: 69 66 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 61 72 if {[llength $ar
0e10: 67 75 6d 65 6e 74 73 5d 20 3e 20 31 7d 20 55 73 guments] > 1} Us
0e20: 61 67 65 0a 09 69 66 20 7b 5b 6c 6c 65 6e 67 74 age..if {[llengt
0e30: 68 20 24 61 72 67 75 6d 65 6e 74 73 5d 20 3c 20 h $arguments] <
0e40: 31 7d 20 7b 20 55 73 61 67 65 20 24 6e 6f 63 76 1} { Usage $nocv
0e50: 73 20 7d 0a 09 72 65 70 6f 73 69 74 6f 72 79 20 s }..repository
0e60: 62 61 73 65 20 5b 73 74 72 69 70 74 72 61 69 6c base [striptrail
0e70: 69 6e 67 73 6c 61 73 68 20 5b 6c 69 6e 64 65 78 ingslash [lindex
0e80: 20 24 61 72 67 75 6d 65 6e 74 73 20 30 5d 5d 0a $arguments 0]].
0e90: 0a 09 56 61 6c 69 64 61 74 65 0a 09 72 65 74 75 ..Validate..retu
0ea0: 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 rn. }.. #
0eb0: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 # ## ### ##### #
0ec0: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ########
0ed0: 23 23 23 23 23 0a 20 20 20 20 23 23 20 49 6e 74 #####. ## Int
0ee0: 65 72 6e 61 6c 20 6d 65 74 68 6f 64 73 2c 20 70 ernal methods, p
0ef0: 72 69 6e 74 69 6e 67 20 69 6e 66 6f 72 6d 61 74 rinting informat
0f00: 69 6f 6e 2e 0a 0a 20 20 20 20 70 72 6f 63 20 50 ion... proc P
0f10: 72 69 6e 74 48 65 6c 70 20 7b 7d 20 7b 0a 09 67 rintHelp {} {..g
0f20: 6c 6f 62 61 6c 20 61 72 67 76 30 0a 09 74 72 6f lobal argv0..tro
0f30: 75 62 6c 65 20 69 6e 66 6f 20 22 55 73 61 67 65 uble info "Usage
0f40: 3a 20 24 61 72 67 76 30 20 24 75 73 61 67 65 22 : $argv0 $usage"
0f50: 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 ..trouble info "
0f60: 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 "..trouble info
0f70: 22 20 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f " Information o
0f80: 70 74 69 6f 6e 73 22 0a 09 74 72 6f 75 62 6c 65 ptions"..trouble
0f90: 20 69 6e 66 6f 20 22 22 0a 09 74 72 6f 75 62 6c info ""..troubl
0fa0: 65 20 69 6e 66 6f 20 22 20 20 20 20 2d 68 2c 20 e info " -h,
0fb0: 2d 2d 68 65 6c 70 20 20 20 20 50 72 69 6e 74 20 --help Print
0fc0: 74 68 69 73 20 6d 65 73 73 61 67 65 20 61 6e 64 this message and
0fd0: 20 65 78 69 74 20 77 69 74 68 20 73 75 63 63 65 exit with succe
0fe0: 73 73 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 ss"..trouble inf
0ff0: 6f 20 22 20 20 20 20 2d 2d 68 65 6c 70 2d 70 61 o " --help-pa
1000: 73 73 65 73 20 50 72 69 6e 74 20 6c 69 73 74 20 sses Print list
1010: 6f 66 20 70 61 73 73 65 73 20 61 6e 64 20 65 78 of passes and ex
1020: 69 74 20 77 69 74 68 20 73 75 63 63 65 73 73 22 it with success"
1030: 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 ..trouble info "
1040: 20 20 20 20 2d 2d 76 65 72 73 69 6f 6e 20 20 20 --version
1050: 20 20 50 72 69 6e 74 20 76 65 72 73 69 6f 6e 20 Print version
1060: 6e 75 6d 62 65 72 20 6f 66 20 24 61 72 67 76 30 number of $argv0
1070: 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 "..trouble info
1080: 22 20 20 20 20 2d 76 2c 20 2d 2d 76 65 72 62 6f " -v, --verbo
1090: 73 65 20 49 6e 63 72 65 61 73 65 20 61 70 70 6c se Increase appl
10a0: 69 63 61 74 69 6f 6e 27 73 20 76 65 72 62 6f 73 ication's verbos
10b0: 69 74 79 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e ity"..trouble in
10c0: 66 6f 20 22 20 20 20 20 2d 71 2c 20 2d 2d 71 75 fo " -q, --qu
10d0: 69 65 74 20 20 20 44 65 63 72 65 61 73 65 20 61 iet Decrease a
10e0: 70 70 6c 69 63 61 74 69 6f 6e 27 73 20 76 65 72 pplication's ver
10f0: 62 6f 73 69 74 79 22 0a 09 74 72 6f 75 62 6c 65 bosity"..trouble
1100: 20 69 6e 66 6f 20 22 20 20 20 20 2d 2d 62 61 74 info " --bat
1110: 63 68 20 20 20 20 20 20 20 44 69 73 61 62 6c 65 ch Disable
1120: 20 74 68 65 20 70 72 6f 67 72 65 73 73 20 66 65 the progress fe
1130: 65 64 62 61 63 6b 20 73 74 61 6e 64 61 72 64 20 edback standard
1140: 74 6f 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 to"..trouble inf
1150: 6f 20 22 20 20 20 20 20 20 20 20 20 20 20 20 20 o "
1160: 20 20 20 20 20 69 6e 74 65 72 61 63 74 69 76 65 interactive
1170: 20 75 73 65 2e 22 0a 09 74 72 6f 75 62 6c 65 20 use."..trouble
1180: 69 6e 66 6f 20 22 22 0a 09 74 72 6f 75 62 6c 65 info ""..trouble
1190: 20 69 6e 66 6f 20 22 20 20 43 6f 6e 76 65 72 73 info " Convers
11a0: 69 6f 6e 20 63 6f 6e 74 72 6f 6c 20 6f 70 74 69 ion control opti
11b0: 6f 6e 73 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e ons"..trouble in
11c0: 66 6f 20 22 22 0a 09 74 72 6f 75 62 6c 65 20 69 fo ""..trouble i
11d0: 6e 66 6f 20 22 20 20 20 20 2d 70 2c 20 2d 2d 70 nfo " -p, --p
11e0: 61 73 73 20 50 41 53 53 20 20 20 20 20 20 20 20 ass PASS
11f0: 20 20 20 20 52 75 6e 20 6f 6e 6c 79 20 74 68 65 Run only the
1200: 20 73 70 65 63 69 66 69 65 64 20 63 6f 6e 76 65 specified conve
1210: 72 73 69 6f 6e 20 70 61 73 73 22 0a 09 74 72 6f rsion pass"..tro
1220: 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 2d uble info " -
1230: 70 2c 20 2d 2d 70 61 73 73 65 73 20 3f 53 54 41 p, --passes ?STA
1240: 52 54 3f 3a 3f 45 4e 44 3f 20 52 75 6e 20 6f 6e RT?:?END? Run on
1250: 6c 79 20 74 68 65 20 70 61 73 73 65 73 20 53 54 ly the passes ST
1260: 41 52 54 20 74 68 72 6f 75 67 68 20 45 4e 44 2c ART through END,
1270: 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 "..trouble info
1280: 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "
1290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
12a0: 69 6e 63 6c 75 73 69 76 65 2e 22 0a 09 74 72 6f inclusive."..tro
12b0: 75 62 6c 65 20 69 6e 66 6f 20 22 22 0a 09 74 72 uble info ""..tr
12c0: 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 ouble 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 20 20 20 50 61 73 73 65 Passe
12f0: 73 20 61 72 65 20 73 70 65 63 69 66 69 65 64 20 s are specified
1300: 62 79 20 6e 61 6d 65 2e 22 0a 09 74 72 6f 75 62 by name."..troub
1310: 6c 65 20 69 6e 66 6f 20 22 22 0a 09 74 72 6f 75 le info ""..trou
1320: 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 2d 2d ble info " --
1330: 69 67 6e 6f 72 65 2d 63 6f 6e 66 6c 69 63 74 69 ignore-conflicti
1340: 6e 67 2d 61 74 74 69 63 73 22 0a 09 74 72 6f 75 ng-attics"..trou
1350: 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 20 20 ble info "
1360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1370: 20 20 20 20 20 20 20 20 20 50 72 65 76 65 6e 74 Prevent
1380: 20 61 62 6f 72 74 20 77 68 65 6e 20 63 6f 6e 66 abort when conf
1390: 6c 69 63 74 69 6e 67 20 61 72 63 68 69 76 65 73 licting archives
13a0: 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 "..trouble info
13b0: 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "
13c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
13d0: 77 65 72 65 20 66 6f 75 6e 64 20 69 6e 20 62 6f were found in bo
13e0: 74 68 20 72 65 67 75 6c 61 72 20 61 6e 64 20 41 th regular and A
13f0: 74 74 69 63 2e 22 0a 09 74 72 6f 75 62 6c 65 20 ttic."..trouble
1400: 69 6e 66 6f 20 22 22 0a 09 74 72 6f 75 62 6c 65 info ""..trouble
1410: 20 69 6e 66 6f 20 22 20 20 20 20 2d 2d 73 74 61 info " --sta
1420: 74 65 20 50 41 54 48 20 20 20 20 20 20 20 20 20 te PATH
1430: 20 20 20 20 20 20 53 61 76 65 20 73 74 61 74 65 Save state
1440: 20 74 6f 20 74 68 65 20 73 70 65 63 69 66 69 65 to the specifie
1450: 64 20 66 69 6c 65 2c 20 61 6e 64 22 0a 09 74 72 d file, and"..tr
1460: 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 ouble info "
1470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1480: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 61 64 20 load
1490: 73 74 61 74 65 20 6f 66 20 70 72 65 76 69 6f 75 state of previou
14a0: 73 20 72 75 6e 73 20 66 72 6f 6d 20 69 74 20 74 s runs from it t
14b0: 6f 6f 2e 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e oo."..trouble in
14c0: 66 6f 20 22 22 0a 09 74 72 6f 75 62 6c 65 20 69 fo ""..trouble i
14d0: 6e 66 6f 20 22 20 20 20 20 2d 2d 65 78 63 6c 75 nfo " --exclu
14e0: 64 65 20 3f 50 52 4f 4a 45 43 54 3a 3f 53 59 4d de ?PROJECT:?SYM
14f0: 42 4f 4c 20 45 78 63 6c 75 64 65 20 74 68 65 20 BOL Exclude the
1500: 6e 61 6d 65 64 20 73 79 6d 62 6f 6c 20 66 72 6f named symbol fro
1510: 6d 20 61 6c 6c 20 6f 72 22 0a 09 74 72 6f 75 62 m all or"..troub
1520: 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 20 20 20 le info "
1530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1540: 20 20 20 20 20 20 20 20 6a 75 73 74 20 74 68 65 just the
1550: 20 73 70 65 63 69 66 69 65 64 20 70 72 6f 6a 65 specified proje
1560: 63 74 2e 20 42 6f 74 68 20 70 72 6f 6a 65 63 74 ct. Both project
1570: 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 "..trouble info
1580: 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "
1590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
15a0: 61 6e 64 20 73 79 6d 62 6f 6c 20 6e 61 6d 65 73 and symbol names
15b0: 20 61 72 65 20 67 6c 6f 62 20 70 61 74 74 65 72 are glob patter
15c0: 6e 73 2e 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e ns."..trouble in
15d0: 66 6f 20 22 22 0a 09 74 72 6f 75 62 6c 65 20 69 fo ""..trouble i
15e0: 6e 66 6f 20 22 20 20 20 20 2d 2d 66 6f 72 63 65 nfo " --force
15f0: 2d 74 61 67 20 3f 50 52 4f 4a 45 43 54 3a 3f 53 -tag ?PROJECT:?S
1600: 59 4d 42 4f 4c 22 0a 09 74 72 6f 75 62 6c 65 20 YMBOL"..trouble
1610: 69 6e 66 6f 20 22 20 20 20 20 20 20 20 20 20 20 info "
1620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1630: 20 20 20 20 20 46 6f 72 63 65 20 74 68 65 20 6e Force the n
1640: 61 6d 65 64 20 73 79 6d 62 6f 6c 20 66 72 6f 6d amed symbol from
1650: 20 61 6c 6c 20 6f 72 20 6a 75 73 74 22 0a 09 74 all or just"..t
1660: 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 rouble info "
1670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1680: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20 the
1690: 73 70 65 63 69 66 69 65 64 20 70 72 6f 6a 65 63 specified projec
16a0: 74 20 74 6f 20 62 65 20 63 6f 6e 76 65 72 74 65 t to be converte
16b0: 64 20 61 73 22 0a 09 74 72 6f 75 62 6c 65 20 69 d as"..trouble i
16c0: 6e 66 6f 20 22 20 20 20 20 20 20 20 20 20 20 20 nfo "
16d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
16e0: 20 20 20 20 74 61 67 2e 20 42 6f 74 68 20 70 72 tag. Both pr
16f0: 6f 6a 65 63 74 20 61 6e 64 20 73 79 6d 62 6f 6c oject and symbol
1700: 20 6e 61 6d 65 73 20 61 72 65 22 0a 09 74 72 6f names are"..tro
1710: 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 20 uble info "
1720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1730: 20 20 20 20 20 20 20 20 20 20 67 6c 6f 62 20 70 glob p
1740: 61 74 74 65 72 6e 73 2e 22 0a 09 74 72 6f 75 62 atterns."..troub
1750: 6c 65 20 69 6e 66 6f 20 22 22 0a 09 74 72 6f 75 le info ""..trou
1760: 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 2d 2d ble info " --
1770: 66 6f 72 63 65 2d 62 72 61 6e 63 68 20 3f 50 52 force-branch ?PR
1780: 4f 4a 45 43 54 3a 3f 53 59 4d 42 4f 4c 22 0a 09 OJECT:?SYMBOL"..
1790: 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 trouble info "
17a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
17b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 For
17c0: 63 65 20 74 68 65 20 6e 61 6d 65 64 20 73 79 6d ce the named sym
17d0: 62 6f 6c 20 66 72 6f 6d 20 61 6c 6c 20 6f 72 20 bol from all or
17e0: 6a 75 73 74 22 0a 09 74 72 6f 75 62 6c 65 20 69 just"..trouble i
17f0: 6e 66 6f 20 22 20 20 20 20 20 20 20 20 20 20 20 nfo "
1800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1810: 20 20 20 20 74 68 65 20 73 70 65 63 69 66 69 65 the specifie
1820: 64 20 70 72 6f 6a 65 63 74 20 74 6f 20 62 65 20 d project to be
1830: 63 6f 6e 76 65 72 74 65 64 20 61 73 22 0a 09 74 converted as"..t
1840: 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 rouble info "
1850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1860: 20 20 20 20 20 20 20 20 20 20 20 20 62 72 61 6e bran
1870: 63 68 2e 20 42 6f 74 68 20 70 72 6f 6a 65 63 74 ch. Both project
1880: 20 61 6e 64 20 73 79 6d 62 6f 6c 20 6e 61 6d 65 and symbol name
1890: 73 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f s"..trouble info
18a0: 20 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 "
18b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
18c0: 20 61 72 65 20 67 6c 6f 62 20 70 61 74 74 65 72 are glob patter
18d0: 6e 73 2e 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e ns."..trouble in
18e0: 66 6f 20 22 22 0a 09 74 72 6f 75 62 6c 65 20 69 fo ""..trouble i
18f0: 6e 66 6f 20 22 20 20 20 20 2d 2d 64 6f 74 73 20 nfo " --dots
1900: 50 41 54 48 20 20 20 20 20 20 20 20 20 20 20 20 PATH
1910: 20 20 20 20 57 72 69 74 65 20 74 68 65 20 63 68 Write the ch
1920: 61 6e 67 65 73 65 74 20 67 72 61 70 68 73 20 62 angeset graphs b
1930: 65 66 6f 72 65 2c 20 61 66 74 65 72 2c 22 0a 09 efore, after,"..
1940: 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 trouble info "
1950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
1960: 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6e 64 and
1970: 20 64 75 72 69 6e 67 20 62 72 65 61 6b 69 6e 67 during breaking
1980: 20 74 68 65 20 6f 66 20 63 79 63 6c 65 73 20 74 the of cycles t
1990: 6f 20 74 68 65 22 0a 09 74 72 6f 75 62 6c 65 20 o the"..trouble
19a0: 69 6e 66 6f 20 22 20 20 20 20 20 20 20 20 20 20 info "
19b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
19c0: 20 20 20 20 20 64 69 72 65 63 6f 74 72 79 20 50 direcotry P
19d0: 41 54 48 2c 20 75 73 69 6e 67 20 47 72 61 70 68 ATH, using Graph
19e0: 56 69 7a 27 73 20 64 6f 74 20 66 6f 72 6d 61 74 Viz's dot format
19f0: 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 "..trouble info
1a00: 22 22 0a 0a 09 23 20 2d 2d 70 72 6f 6a 65 63 74 ""...# --project
1a10: 2c 20 2d 2d 63 61 63 68 65 0a 09 23 20 2e 2e 2e , --cache..# ...
1a20: 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a ..return. }..
1a30: 20 20 20 20 70 72 6f 63 20 50 72 69 6e 74 56 65 proc PrintVe
1a40: 72 73 69 6f 6e 20 7b 7d 20 7b 0a 09 67 6c 6f 62 rsion {} {..glob
1a50: 61 6c 20 61 72 67 76 30 0a 09 73 65 74 20 76 20 al argv0..set v
1a60: 5b 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 [package require
1a70: 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 vc::fossil::imp
1a80: 6f 72 74 3a 3a 63 76 73 5d 0a 09 74 72 6f 75 62 ort::cvs]..troub
1a90: 6c 65 20 69 6e 66 6f 20 22 24 61 72 67 76 30 20 le info "$argv0
1aa0: 76 24 76 22 0a 09 72 65 74 75 72 6e 0a 20 20 20 v$v"..return.
1ab0: 20 7d 0a 0a 20 20 20 20 70 72 6f 63 20 55 73 61 }.. proc Usa
1ac0: 67 65 20 7b 7b 74 65 78 74 20 7b 7d 7d 7d 20 7b ge {{text {}}} {
1ad0: 0a 09 67 6c 6f 62 61 6c 20 61 72 67 76 30 0a 09 ..global argv0..
1ae0: 74 72 6f 75 62 6c 65 20 66 61 74 61 6c 20 22 55 trouble fatal "U
1af0: 73 61 67 65 3a 20 24 61 72 67 76 30 20 24 75 73 sage: $argv0 $us
1b00: 61 67 65 22 0a 09 69 66 20 7b 24 74 65 78 74 20 age"..if {$text
1b10: 6e 65 20 22 22 7d 20 7b 20 74 72 6f 75 62 6c 65 ne ""} { trouble
1b20: 20 66 61 74 61 6c 20 22 24 74 65 78 74 22 20 7d fatal "$text" }
1b30: 0a 09 65 78 69 74 20 31 0a 20 20 20 20 7d 0a 0a ..exit 1. }..
1b40: 20 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23 # # ## ### #
1b50: 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 #### ######## ##
1b60: 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 ###########.
1b70: 23 23 20 49 6e 74 65 72 6e 61 6c 20 6d 65 74 68 ## Internal meth
1b80: 6f 64 73 2c 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e ods, command lin
1b90: 65 20 70 72 6f 63 65 73 73 69 6e 67 0a 0a 20 20 e processing..
1ba0: 20 20 74 79 70 65 76 61 72 69 61 62 6c 65 20 75 typevariable u
1bb0: 73 61 67 65 20 20 20 20 20 22 3f 6f 70 74 69 6f sage "?optio
1bc0: 6e 20 3f 76 61 6c 75 65 3f 2e 2e 2e 3f 20 63 76 n ?value?...? cv
1bd0: 73 2d 72 65 70 6f 73 69 74 6f 72 79 2d 70 61 74 s-repository-pat
1be0: 68 22 0a 20 20 20 20 74 79 70 65 76 61 72 69 61 h". typevaria
1bf0: 62 6c 65 20 6e 6f 63 76 73 20 20 20 20 20 22 20 ble nocvs "
1c00: 20 20 20 20 20 20 54 68 65 20 63 76 73 2d 72 65 The cvs-re
1c10: 70 6f 73 69 74 6f 72 79 2d 70 61 74 68 20 69 73 pository-path is
1c20: 20 6d 69 73 73 69 6e 67 2e 22 0a 20 20 20 20 74 missing.". t
1c30: 79 70 65 76 61 72 69 61 62 6c 65 20 62 61 64 6f ypevariable bado
1c40: 70 74 69 6f 6e 20 22 20 20 20 20 20 20 20 42 61 ption " Ba
1c50: 64 20 6f 70 74 69 6f 6e 20 22 0a 20 20 20 20 74 d option ". t
1c60: 79 70 65 76 61 72 69 61 62 6c 65 20 67 65 74 68 ypevariable geth
1c70: 65 6c 70 20 20 20 22 20 20 20 20 20 20 20 55 73 elp " Us
1c80: 65 20 2d 2d 68 65 6c 70 20 74 6f 20 67 65 74 20 e --help to get
1c90: 68 65 6c 70 2e 22 0a 0a 20 20 20 20 70 72 6f 63 help.".. proc
1ca0: 20 49 73 4f 70 74 69 6f 6e 20 7b 61 76 20 5f 20 IsOption {av _
1cb0: 6f 76 7d 20 7b 0a 09 75 70 76 61 72 20 31 20 24 ov} {..upvar 1 $
1cc0: 61 76 20 61 72 67 75 6d 65 6e 74 73 20 24 6f 76 av arguments $ov
1cd0: 20 6f 70 74 69 6f 6e 0a 09 73 65 74 20 63 61 6e option..set can
1ce0: 64 69 64 61 74 65 20 5b 6c 69 6e 64 65 78 20 24 didate [lindex $
1cf0: 61 72 67 75 6d 65 6e 74 73 20 30 5d 0a 09 69 66 arguments 0]..if
1d00: 20 7b 21 5b 73 74 72 69 6e 67 20 6d 61 74 63 68 {![string match
1d10: 20 2d 2a 20 24 63 61 6e 64 69 64 61 74 65 5d 7d -* $candidate]}
1d20: 20 7b 72 65 74 75 72 6e 20 30 7d 0a 09 73 65 74 {return 0}..set
1d30: 20 6f 70 74 69 6f 6e 20 20 20 20 24 63 61 6e 64 option $cand
1d40: 69 64 61 74 65 0a 09 73 65 74 20 61 72 67 75 6d idate..set argum
1d50: 65 6e 74 73 20 5b 6c 72 61 6e 67 65 20 24 61 72 ents [lrange $ar
1d60: 67 75 6d 65 6e 74 73 20 31 20 65 6e 64 5d 0a 09 guments 1 end]..
1d70: 72 65 74 75 72 6e 20 31 0a 20 20 20 20 7d 0a 0a return 1. }..
1d80: 20 20 20 20 70 72 6f 63 20 56 61 6c 75 65 20 7b proc Value {
1d90: 61 76 7d 20 7b 0a 09 75 70 76 61 72 20 31 20 24 av} {..upvar 1 $
1da0: 61 76 20 61 72 67 75 6d 65 6e 74 73 0a 09 73 65 av arguments..se
1db0: 74 20 76 20 20 20 20 20 20 20 20 20 5b 6c 69 6e t v [lin
1dc0: 64 65 78 20 24 61 72 67 75 6d 65 6e 74 73 20 30 dex $arguments 0
1dd0: 5d 0a 09 73 65 74 20 61 72 67 75 6d 65 6e 74 73 ]..set arguments
1de0: 20 5b 6c 72 61 6e 67 65 20 24 61 72 67 75 6d 65 [lrange $argume
1df0: 6e 74 73 20 31 20 65 6e 64 5d 0a 09 72 65 74 75 nts 1 end]..retu
1e00: 72 6e 20 24 76 0a 20 20 20 20 7d 0a 0a 20 20 20 rn $v. }..
1e10: 20 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 # # ## ### ####
1e20: 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 # ######## #####
1e30: 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 ########. ##
1e40: 49 6e 74 65 72 6e 61 6c 20 6d 65 74 68 6f 64 73 Internal methods
1e50: 2c 20 73 74 61 74 65 20 76 61 6c 69 64 61 74 69 , state validati
1e60: 6f 6e 0a 0a 20 20 20 20 70 72 6f 63 20 56 61 6c on.. proc Val
1e70: 69 64 61 74 65 20 7b 7d 20 7b 0a 09 23 20 50 72 idate {} {..# Pr
1e80: 65 76 65 6e 74 20 69 6e 2d 64 65 70 74 68 20 76 event in-depth v
1e90: 61 6c 69 64 61 74 69 6f 6e 20 69 66 20 74 68 65 alidation if the
1ea0: 20 6f 70 74 69 6f 6e 73 20 77 65 72 65 20 61 6c options were al
1eb0: 72 65 61 64 79 20 62 61 64 2e 0a 09 74 72 6f 75 ready bad...trou
1ec0: 62 6c 65 20 61 62 6f 72 74 3f 0a 0a 09 72 65 70 ble abort?...rep
1ed0: 6f 73 69 74 6f 72 79 20 76 61 6c 69 64 61 74 65 ository validate
1ee0: 0a 09 73 74 61 74 65 20 20 20 20 20 20 73 65 74 ..state set
1ef0: 75 70 0a 0a 09 74 72 6f 75 62 6c 65 20 61 62 6f up...trouble abo
1f00: 72 74 3f 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 rt?..return.
1f10: 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 }.. # # ## ##
1f20: 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 # ##### ########
1f30: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 #############.
1f40: 20 20 20 23 23 20 43 6f 6e 66 69 67 75 72 61 74 ## Configurat
1f50: 69 6f 6e 0a 0a 20 20 20 20 70 72 61 67 6d 61 20 ion.. pragma
1f60: 2d 68 61 73 69 6e 73 74 61 6e 63 65 73 20 20 20 -hasinstances
1f70: 6e 6f 20 3b 20 23 20 73 69 6e 67 6c 65 74 6f 6e no ; # singleton
1f80: 0a 20 20 20 20 70 72 61 67 6d 61 20 2d 68 61 73 . pragma -has
1f90: 74 79 70 65 69 6e 66 6f 20 20 20 20 6e 6f 20 3b typeinfo no ;
1fa0: 20 23 20 6e 6f 20 69 6e 74 72 6f 73 70 65 63 74 # no introspect
1fb0: 69 6f 6e 0a 20 20 20 20 70 72 61 67 6d 61 20 2d ion. pragma -
1fc0: 68 61 73 74 79 70 65 64 65 73 74 72 6f 79 20 6e hastypedestroy n
1fd0: 6f 20 3b 20 23 20 69 6d 6d 6f 72 74 61 6c 0a 0a o ; # immortal..
1fe0: 20 20 20 20 23 20 23 20 23 23 20 23 23 23 20 23 # # ## ### #
1ff0: 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 #### ######## ##
2000: 23 23 23 23 23 23 23 23 23 23 23 0a 7d 0a 0a 6e ###########.}..n
2010: 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 3a 3a amespace eval ::
2020: 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f vc::fossil::impo
2030: 72 74 3a 3a 63 76 73 20 7b 0a 20 20 20 20 6e 61 rt::cvs {. na
2040: 6d 65 73 70 61 63 65 20 65 78 70 6f 72 74 20 6f mespace export o
2050: 70 74 69 6f 6e 0a 20 20 20 20 6e 61 6d 65 73 70 ption. namesp
2060: 61 63 65 20 65 76 61 6c 20 6f 70 74 69 6f 6e 20 ace eval option
2070: 7b 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 {..namespace imp
2080: 6f 72 74 20 3a 3a 76 63 3a 3a 74 6f 6f 6c 73 3a ort ::vc::tools:
2090: 3a 6d 69 73 63 3a 3a 73 74 72 69 70 74 72 61 69 :misc::striptrai
20a0: 6c 69 6e 67 73 6c 61 73 68 0a 09 6e 61 6d 65 73 lingslash..names
20b0: 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 pace import ::vc
20c0: 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 ::fossil::import
20d0: 3a 3a 63 76 73 3a 3a 70 61 73 73 0a 09 6e 61 6d ::cvs::pass..nam
20e0: 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a espace import ::
20f0: 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f vc::fossil::impo
2100: 72 74 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a 63 rt::cvs::pass::c
2110: 6f 6c 6c 61 72 0a 09 6e 61 6d 65 73 70 61 63 65 ollar..namespace
2120: 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 66 6f import ::vc::fo
2130: 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 ssil::import::cv
2140: 73 3a 3a 63 79 63 6c 65 62 72 65 61 6b 65 72 0a s::cyclebreaker.
2150: 09 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 .namespace impor
2160: 74 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a t ::vc::fossil::
2170: 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 72 65 70 import::cvs::rep
2180: 6f 73 69 74 6f 72 79 0a 09 6e 61 6d 65 73 70 61 ository..namespa
2190: 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a ce import ::vc::
21a0: 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a fossil::import::
21b0: 63 76 73 3a 3a 73 74 61 74 65 0a 09 6e 61 6d 65 cvs::state..name
21c0: 73 70 61 63 65 20 65 76 61 6c 20 70 72 6f 6a 65 space eval proje
21d0: 63 74 20 7b 0a 09 20 20 20 20 6e 61 6d 65 73 70 ct {.. namesp
21e0: 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a ace import ::vc:
21f0: 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a :fossil::import:
2200: 3a 63 76 73 3a 3a 70 72 6f 6a 65 63 74 3a 3a 73 :cvs::project::s
2210: 79 6d 0a 09 7d 0a 09 6e 61 6d 65 73 70 61 63 65 ym..}..namespace
2220: 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 74 6f import ::vc::to
2230: 6f 6c 73 3a 3a 74 72 6f 75 62 6c 65 0a 09 6e 61 ols::trouble..na
2240: 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a mespace import :
2250: 3a 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6c 6f 67 0a :vc::tools::log.
2260: 20 20 20 20 7d 0a 7d 0a 0a 23 20 23 20 23 23 20 }.}..# # ##
2270: 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 ### ##### ######
2280: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 ## #############
2290: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ###############
22a0: 23 23 23 23 23 23 0a 23 23 20 52 65 61 64 79 0a ######.## Ready.
22b0: 0a 70 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65 .package provide
22c0: 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 vc::fossil::imp
22d0: 6f 72 74 3a 3a 63 76 73 3a 3a 6f 70 74 69 6f 6e ort::cvs::option
22e0: 20 31 2e 30 0a 72 65 74 75 72 6e 0a 1.0.return.