Artifact 5835c5aa1e8e3b3b0524c0069001a755a7b294a3:
File tools/cvs2fossil/lib/c2f_option.tcl part of check-in [00bf8c198e] - The performance was still not satisfying, even with faster recomputing of successors. Doing it multiple times (Building the graph in each breaker and sort passes) eats time. Caching in memory blows the memory. Chosen solution: Cache this information in the database.Created a new pass 'CsetDeps' which is run between 'InitCsets' and 'BreakRevCsetCycles' (i.e. changeset creation and first breaker pass). It computes the changeset dependencies from the file-level dependencies once and saves the result in the state, in the new table 'cssuccessor'. Now the breaker and sort passes can get the information quickly, with virtually no effort. The dependencies are recomputed incrementally when a changeset is split by one of the breaker passes, for its fragments and its predecessors.
The loop check is now trivial, and integrated into the successor computation, with the heavy lifting for the detailed analysis and reporting moved down into the type-dependent SQL queries. The relevant new method is 'loops'. Now that the loop check is incremental the pass based checks have been removed from the integrity module, and the option '--loopcheck' has been eliminated. For paranoia the graph setup and modification code got its loop check reinstated as an assert, redusing the changeset report code.
Renumbered the breaker and sort passes. A number of places, like graph setup and traversal, loading of changesets, etc. got feedback indicators to show their progress.
The selection of revision and symbol changesets for the associated breaker passes was a bit on the slow side. We now keep changeset lists sorted by type (during loading or general construction) and access them directly.
by aku on 2007-12-02 20:04:40.
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: 69 6e 74 65 67 72 69 74 79 20 20 20 20 3b 20 23 integrity ; # 05f0: 20 53 74 61 74 65 20 69 6e 74 65 67 72 69 74 79 State integrity 0600: 20 63 68 65 63 6b 73 2e 0a 70 61 63 6b 61 67 65 checks..package 0610: 20 72 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 require vc::fos 0620: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 sil::import::cvs 0630: 3a 3a 70 72 6f 6a 65 63 74 3a 3a 73 79 6d 20 3b ::project::sym ; 0640: 20 23 20 50 72 6f 6a 65 63 74 20 6c 65 76 65 6c # Project level 0650: 20 73 79 6d 62 6f 6c 73 0a 70 61 63 6b 61 67 65 symbols.package 0660: 20 72 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 require vc::fos 0670: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 sil::import::cvs 0680: 3a 3a 63 79 63 6c 65 62 72 65 61 6b 65 72 20 3b ::cyclebreaker ; 0690: 20 23 20 42 72 65 61 6b 69 6e 67 20 64 65 70 65 # Breaking depe 06a0: 6e 64 65 6e 63 79 20 63 79 63 6c 65 73 2e 0a 0a ndency cycles... 06b0: 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 # # ## ### ##### 06c0: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######## ###### 06d0: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ######## 06e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 #############.## 06f0: 0a 0a 73 6e 69 74 3a 3a 74 79 70 65 20 3a 3a 76 ..snit::type ::v 0700: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor 0710: 74 3a 3a 63 76 73 3a 3a 6f 70 74 69 6f 6e 20 7b t::cvs::option { 0720: 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 23 20 . # # ## ### 0730: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 ##### ######## # 0740: 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 20 20 ############. 0750: 20 23 23 20 50 75 62 6c 69 63 20 41 50 49 2c 20 ## Public API, 0760: 4f 70 74 69 6f 6e 73 2e 0a 0a 20 20 20 20 23 20 Options... # 0770: 2d 2d 68 65 6c 70 2c 20 2d 2d 68 65 6c 70 2d 70 --help, --help-p 0780: 61 73 73 65 73 2c 20 2d 68 0a 20 20 20 20 23 20 asses, -h. # 0790: 2d 2d 76 65 72 73 69 6f 6e 0a 20 20 20 20 23 20 --version. # 07a0: 2d 70 2c 20 2d 2d 70 61 73 73 2c 20 2d 2d 70 61 -p, --pass, --pa 07b0: 73 73 65 73 0a 20 20 20 20 23 20 2d 2d 69 67 6e sses. # --ign 07c0: 6f 72 65 2d 63 6f 6e 66 6c 69 63 74 69 6e 67 2d ore-conflicting- 07d0: 61 74 74 69 63 73 0a 20 20 20 20 23 20 2d 2d 70 attics. # --p 07e0: 72 6f 6a 65 63 74 0a 20 20 20 20 23 20 2d 76 2c roject. # -v, 07f0: 20 2d 2d 76 65 72 62 6f 73 65 0a 20 20 20 20 23 --verbose. # 0800: 20 2d 71 2c 20 2d 2d 71 75 69 65 74 0a 20 20 20 -q, --quiet. 0810: 20 23 20 2d 2d 73 74 61 74 65 20 28 63 6f 6e 76 # --state (conv 0820: 65 72 73 69 6f 6e 20 73 74 61 74 75 73 2c 20 61 ersion status, a 0830: 6c 61 20 63 6f 6e 66 69 67 2e 63 61 63 68 65 29 la config.cache) 0840: 0a 20 20 20 20 23 20 2d 2d 74 72 75 6e 6b 2d 6f . # --trunk-o 0850: 6e 6c 79 0a 20 20 20 20 23 20 2d 2d 65 78 63 6c nly. # --excl 0860: 75 64 65 2c 20 2d 2d 66 6f 72 63 65 2d 74 61 67 ude, --force-tag 0870: 2c 20 2d 2d 66 6f 72 63 65 2d 62 72 61 6e 63 68 , --force-branch 0880: 0a 20 20 20 20 23 20 2d 2d 62 61 74 63 68 0a 0a . # --batch.. 0890: 20 20 20 20 23 20 2d 6f 2c 20 2d 2d 6f 75 74 70 # -o, --outp 08a0: 75 74 0a 20 20 20 20 23 20 2d 2d 64 72 79 2d 72 ut. # --dry-r 08b0: 75 6e 0a 20 20 20 20 23 20 2d 2d 73 79 6d 62 6f un. # --symbo 08c0: 6c 2d 74 72 61 6e 73 66 6f 72 6d 20 52 45 3a 58 l-transform RE:X 08d0: 58 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 X.. # # ## ## 08e0: 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 # ##### ######## 08f0: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 #############. 0900: 20 20 20 23 23 20 50 75 62 6c 69 63 20 41 50 49 ## Public API 0910: 2c 20 4d 65 74 68 6f 64 73 0a 0a 20 20 20 20 74 , Methods.. t 0920: 79 70 65 6d 65 74 68 6f 64 20 70 72 6f 63 65 73 ypemethod proces 0930: 73 20 7b 61 72 67 75 6d 65 6e 74 73 7d 20 7b 0a s {arguments} {. 0940: 09 23 20 53 79 6e 74 61 78 20 6f 66 20 61 72 67 .# Syntax of arg 0950: 75 6d 65 6e 74 73 3a 20 3f 6f 70 74 69 6f 6e 20 uments: ?option 0960: 3f 76 61 6c 75 65 3f 2e 2e 2e 3f 20 2f 70 61 74 ?value?...? /pat 0970: 68 2f 74 6f 2f 63 76 73 2f 72 65 70 6f 73 69 74 h/to/cvs/reposit 0980: 6f 72 79 0a 0a 09 77 68 69 6c 65 20 7b 5b 49 73 ory...while {[Is 0990: 4f 70 74 69 6f 6e 20 61 72 67 75 6d 65 6e 74 73 Option arguments 09a0: 20 2d 3e 20 6f 70 74 69 6f 6e 5d 7d 20 7b 0a 09 -> option]} {.. 09b0: 20 20 20 20 73 77 69 74 63 68 20 2d 65 78 61 63 switch -exac 09c0: 74 20 2d 2d 20 24 6f 70 74 69 6f 6e 20 7b 0a 09 t -- $option {.. 09d0: 09 2d 68 20 20 20 20 20 20 20 20 20 20 20 20 20 .-h 09e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2d 0a 09 -.. 09f0: 09 2d 2d 68 65 6c 70 20 20 20 20 20 20 20 20 20 .--help 0a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 20 50 { P 0a10: 72 69 6e 74 48 65 6c 70 20 20 20 20 3b 20 65 78 rintHelp ; ex 0a20: 69 74 20 30 20 7d 0a 09 09 2d 2d 68 65 6c 70 2d it 0 }...--help- 0a30: 70 61 73 73 65 73 20 20 20 20 20 20 20 20 20 20 passes 0a40: 20 20 20 20 20 7b 20 70 61 73 73 20 68 65 6c 70 { pass help 0a50: 20 20 20 20 3b 20 65 78 69 74 20 30 20 7d 0a 09 ; exit 0 }.. 0a60: 09 2d 2d 76 65 72 73 69 6f 6e 20 20 20 20 20 20 .--version 0a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 20 50 { P 0a80: 72 69 6e 74 56 65 72 73 69 6f 6e 20 3b 20 65 78 rintVersion ; ex 0a90: 69 74 20 30 20 7d 0a 09 09 2d 70 20 20 20 20 20 it 0 }...-p 0aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0ab0: 20 20 20 20 20 2d 0a 09 09 2d 2d 70 61 73 73 20 -...--pass 0ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0ad0: 20 20 20 20 20 2d 0a 09 09 2d 2d 70 61 73 73 65 -...--passe 0ae0: 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s 0af0: 20 20 20 20 20 7b 20 70 61 73 73 20 73 65 6c 65 { pass sele 0b00: 63 74 20 5b 56 61 6c 75 65 20 61 72 67 75 6d 65 ct [Value argume 0b10: 6e 74 73 5d 20 7d 0a 09 09 2d 2d 69 67 6e 6f 72 nts] }...--ignor 0b20: 65 2d 63 6f 6e 66 6c 69 63 74 69 6e 67 2d 61 74 e-conflicting-at 0b30: 74 69 63 73 20 7b 20 63 6f 6c 6c 61 72 20 69 67 tics { collar ig 0b40: 6e 6f 72 65 5f 63 6f 6e 66 6c 69 63 74 69 6e 67 nore_conflicting 0b50: 5f 61 74 74 69 63 73 20 7d 0a 09 09 2d 2d 70 72 _attics }...--pr 0b60: 6f 6a 65 63 74 20 20 20 20 20 20 20 20 20 20 20 oject 0b70: 20 20 20 20 20 20 20 20 7b 20 72 65 70 6f 73 69 { reposi 0b80: 74 6f 72 79 20 61 64 64 20 5b 56 61 6c 75 65 20 tory add [Value 0b90: 61 72 67 75 6d 65 6e 74 73 5d 20 7d 0a 09 09 2d arguments] }...- 0ba0: 76 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 v 0bb0: 20 20 20 20 20 20 20 20 20 20 20 2d 0a 09 09 2d -...- 0bc0: 2d 76 65 72 62 6f 73 65 20 20 20 20 20 20 20 20 -verbose 0bd0: 20 20 20 20 20 20 20 20 20 20 20 7b 20 6c 6f 67 { log 0be0: 20 76 65 72 62 6f 73 65 20 7d 0a 09 09 2d 71 20 verbose }...-q 0bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0c00: 20 20 20 20 20 20 20 20 20 2d 0a 09 09 2d 2d 71 -...--q 0c10: 75 69 65 74 20 20 20 20 20 20 20 20 20 20 20 20 uiet 0c20: 20 20 20 20 20 20 20 20 20 7b 20 6c 6f 67 20 71 { log q 0c30: 75 69 65 74 20 7d 0a 09 09 2d 2d 73 74 61 74 65 uiet }...--state 0c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0c50: 20 20 20 20 20 7b 20 73 74 61 74 65 20 75 73 65 { state use 0c60: 20 5b 56 61 6c 75 65 20 61 72 67 75 6d 65 6e 74 [Value argument 0c70: 73 5d 20 7d 0a 09 09 2d 2d 74 72 75 6e 6b 2d 6f s] }...--trunk-o 0c80: 6e 6c 79 20 20 20 20 20 20 20 20 20 20 20 20 20 nly 0c90: 20 20 20 7b 20 72 65 70 6f 73 69 74 6f 72 79 20 { repository 0ca0: 74 72 75 6e 6b 6f 6e 6c 79 21 20 7d 0a 09 09 2d trunkonly! }...- 0cb0: 2d 65 78 63 6c 75 64 65 20 20 20 20 20 20 20 20 -exclude 0cc0: 20 20 20 20 20 20 20 20 20 20 20 7b 20 70 72 6f { pro 0cd0: 6a 65 63 74 3a 3a 73 79 6d 20 65 78 63 6c 75 64 ject::sym exclud 0ce0: 65 20 20 20 20 20 5b 56 61 6c 75 65 20 61 72 67 e [Value arg 0cf0: 75 6d 65 6e 74 73 5d 20 7d 0a 09 09 2d 2d 66 6f uments] }...--fo 0d00: 72 63 65 2d 74 61 67 20 20 20 20 20 20 20 20 20 rce-tag 0d10: 20 20 20 20 20 20 20 20 7b 20 70 72 6f 6a 65 63 { projec 0d20: 74 3a 3a 73 79 6d 20 66 6f 72 63 65 74 61 67 20 t::sym forcetag 0d30: 20 20 20 5b 56 61 6c 75 65 20 61 72 67 75 6d 65 [Value argume 0d40: 6e 74 73 5d 20 7d 0a 09 09 2d 2d 66 6f 72 63 65 nts] }...--force 0d50: 2d 62 72 61 6e 63 68 20 20 20 20 20 20 20 20 20 -branch 0d60: 20 20 20 20 20 7b 20 70 72 6f 6a 65 63 74 3a 3a { project:: 0d70: 73 79 6d 20 66 6f 72 63 65 62 72 61 6e 63 68 20 sym forcebranch 0d80: 5b 56 61 6c 75 65 20 61 72 67 75 6d 65 6e 74 73 [Value arguments 0d90: 5d 20 7d 0a 09 09 2d 2d 62 61 74 63 68 20 20 20 ] }...--batch 0da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0db0: 20 20 7b 20 6c 6f 67 20 6e 6f 70 72 6f 67 72 65 { log noprogre 0dc0: 73 73 20 7d 0a 09 09 2d 2d 64 6f 74 73 20 20 20 ss }...--dots 0dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0de0: 20 20 20 7b 20 63 79 63 6c 65 62 72 65 61 6b 65 { cyclebreake 0df0: 72 20 64 6f 74 73 74 6f 20 5b 56 61 6c 75 65 20 r dotsto [Value 0e00: 61 72 67 75 6d 65 6e 74 73 5d 20 7d 0a 09 09 2d arguments] }...- 0e10: 2d 77 61 74 63 68 20 20 20 20 20 20 20 20 20 20 -watch 0e20: 20 20 20 20 20 20 20 20 20 20 20 7b 20 63 79 63 { cyc 0e30: 6c 65 62 72 65 61 6b 65 72 20 77 61 74 63 68 20 lebreaker watch 0e40: 20 5b 56 61 6c 75 65 20 61 72 67 75 6d 65 6e 74 [Value argument 0e50: 73 5d 20 7d 0a 09 09 64 65 66 61 75 6c 74 20 7b s] }...default { 0e60: 0a 09 09 20 20 20 20 55 73 61 67 65 20 24 62 61 ... Usage $ba 0e70: 64 6f 70 74 69 6f 6e 24 6f 70 74 69 6f 6e 5c 6e doption$option\n 0e80: 24 67 65 74 68 65 6c 70 0a 09 09 7d 0a 09 20 20 $gethelp...}.. 0e90: 20 20 7d 0a 09 7d 0a 0a 09 69 66 20 7b 5b 6c 6c }..}...if {[ll 0ea0: 65 6e 67 74 68 20 24 61 72 67 75 6d 65 6e 74 73 ength $arguments 0eb0: 5d 20 3e 20 31 7d 20 55 73 61 67 65 0a 09 69 66 ] > 1} Usage..if 0ec0: 20 7b 5b 6c 6c 65 6e 67 74 68 20 24 61 72 67 75 {[llength $argu 0ed0: 6d 65 6e 74 73 5d 20 3c 20 31 7d 20 7b 20 55 73 ments] < 1} { Us 0ee0: 61 67 65 20 24 6e 6f 63 76 73 20 7d 0a 09 72 65 age $nocvs }..re 0ef0: 70 6f 73 69 74 6f 72 79 20 62 61 73 65 20 5b 73 pository base [s 0f00: 74 72 69 70 74 72 61 69 6c 69 6e 67 73 6c 61 73 triptrailingslas 0f10: 68 20 5b 6c 69 6e 64 65 78 20 24 61 72 67 75 6d h [lindex $argum 0f20: 65 6e 74 73 20 30 5d 5d 0a 0a 09 56 61 6c 69 64 ents 0]]...Valid 0f30: 61 74 65 0a 09 72 65 74 75 72 6e 0a 20 20 20 20 ate..return. 0f40: 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 20 23 23 }.. # # ## ## 0f50: 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 # ##### ######## 0f60: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 20 #############. 0f70: 20 20 20 23 23 20 49 6e 74 65 72 6e 61 6c 20 6d ## Internal m 0f80: 65 74 68 6f 64 73 2c 20 70 72 69 6e 74 69 6e 67 ethods, printing 0f90: 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 0a 20 information... 0fa0: 20 20 20 70 72 6f 63 20 50 72 69 6e 74 48 65 6c proc PrintHel 0fb0: 70 20 7b 7d 20 7b 0a 09 67 6c 6f 62 61 6c 20 61 p {} {..global a 0fc0: 72 67 76 30 0a 09 74 72 6f 75 62 6c 65 20 69 6e rgv0..trouble in 0fd0: 66 6f 20 22 55 73 61 67 65 3a 20 24 61 72 67 76 fo "Usage: $argv 0fe0: 30 20 24 75 73 61 67 65 22 0a 09 74 72 6f 75 62 0 $usage"..troub 0ff0: 6c 65 20 69 6e 66 6f 20 22 22 0a 09 74 72 6f 75 le info ""..trou 1000: 62 6c 65 20 69 6e 66 6f 20 22 20 20 49 6e 66 6f ble info " Info 1010: 72 6d 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 22 rmation options" 1020: 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 ..trouble info " 1030: 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 "..trouble info 1040: 22 20 20 20 20 2d 68 2c 20 2d 2d 68 65 6c 70 20 " -h, --help 1050: 20 20 20 50 72 69 6e 74 20 74 68 69 73 20 6d 65 Print this me 1060: 73 73 61 67 65 20 61 6e 64 20 65 78 69 74 20 77 ssage and exit w 1070: 69 74 68 20 73 75 63 63 65 73 73 22 0a 09 74 72 ith success"..tr 1080: 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 ouble info " 1090: 2d 2d 68 65 6c 70 2d 70 61 73 73 65 73 20 50 72 --help-passes Pr 10a0: 69 6e 74 20 6c 69 73 74 20 6f 66 20 70 61 73 73 int list of pass 10b0: 65 73 20 61 6e 64 20 65 78 69 74 20 77 69 74 68 es and exit with 10c0: 20 73 75 63 63 65 73 73 22 0a 09 74 72 6f 75 62 success"..troub 10d0: 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 2d 2d 76 le info " --v 10e0: 65 72 73 69 6f 6e 20 20 20 20 20 50 72 69 6e 74 ersion Print 10f0: 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 20 version number 1100: 6f 66 20 24 61 72 67 76 30 22 0a 09 74 72 6f 75 of $argv0"..trou 1110: 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 2d 76 ble info " -v 1120: 2c 20 2d 2d 76 65 72 62 6f 73 65 20 49 6e 63 72 , --verbose Incr 1130: 65 61 73 65 20 61 70 70 6c 69 63 61 74 69 6f 6e ease application 1140: 27 73 20 76 65 72 62 6f 73 69 74 79 22 0a 09 74 's verbosity"..t 1150: 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 rouble info " 1160: 20 2d 71 2c 20 2d 2d 71 75 69 65 74 20 20 20 44 -q, --quiet D 1170: 65 63 72 65 61 73 65 20 61 70 70 6c 69 63 61 74 ecrease applicat 1180: 69 6f 6e 27 73 20 76 65 72 62 6f 73 69 74 79 22 ion's verbosity" 1190: 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 ..trouble info " 11a0: 20 20 20 20 2d 2d 62 61 74 63 68 20 20 20 20 20 --batch 11b0: 20 20 44 69 73 61 62 6c 65 20 74 68 65 20 70 72 Disable the pr 11c0: 6f 67 72 65 73 73 20 66 65 65 64 62 61 63 6b 20 ogress feedback 11d0: 73 74 61 6e 64 61 72 64 20 74 6f 22 0a 09 74 72 standard to"..tr 11e0: 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 ouble info " 11f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e in 1200: 74 65 72 61 63 74 69 76 65 20 75 73 65 2e 22 0a teractive use.". 1210: 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 22 .trouble info "" 1220: 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 ..trouble info " 1230: 20 20 43 6f 6e 76 65 72 73 69 6f 6e 20 63 6f 6e Conversion con 1240: 74 72 6f 6c 20 6f 70 74 69 6f 6e 73 22 0a 09 74 trol options"..t 1250: 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 22 0a 09 rouble info "".. 1260: 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 trouble info " 1270: 20 20 2d 70 2c 20 2d 2d 70 61 73 73 20 50 41 53 -p, --pass PAS 1280: 53 20 20 20 20 20 20 20 20 20 20 20 20 52 75 6e S Run 1290: 20 6f 6e 6c 79 20 74 68 65 20 73 70 65 63 69 66 only the specif 12a0: 69 65 64 20 63 6f 6e 76 65 72 73 69 6f 6e 20 70 ied conversion p 12b0: 61 73 73 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e ass"..trouble in 12c0: 66 6f 20 22 20 20 20 20 2d 70 2c 20 2d 2d 70 61 fo " -p, --pa 12d0: 73 73 65 73 20 3f 53 54 41 52 54 3f 3a 3f 45 4e sses ?START?:?EN 12e0: 44 3f 20 52 75 6e 20 6f 6e 6c 79 20 74 68 65 20 D? Run only the 12f0: 70 61 73 73 65 73 20 53 54 41 52 54 20 74 68 72 passes START thr 1300: 6f 75 67 68 20 45 4e 44 2c 22 0a 09 74 72 6f 75 ough END,"..trou 1310: 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 20 20 ble info " 1320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1330: 20 20 20 20 20 20 20 20 20 69 6e 63 6c 75 73 69 inclusi 1340: 76 65 2e 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e ve."..trouble in 1350: 66 6f 20 22 22 0a 09 74 72 6f 75 62 6c 65 20 69 fo ""..trouble i 1360: 6e 66 6f 20 22 20 20 20 20 20 20 20 20 20 20 20 nfo " 1370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1380: 20 20 20 20 50 61 73 73 65 73 20 61 72 65 20 73 Passes are s 1390: 70 65 63 69 66 69 65 64 20 62 79 20 6e 61 6d 65 pecified by name 13a0: 2e 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f ."..trouble info 13b0: 20 22 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 ""..trouble inf 13c0: 6f 20 22 20 20 20 20 2d 2d 69 67 6e 6f 72 65 2d o " --ignore- 13d0: 63 6f 6e 66 6c 69 63 74 69 6e 67 2d 61 74 74 69 conflicting-atti 13e0: 63 73 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 cs"..trouble inf 13f0: 6f 20 22 20 20 20 20 20 20 20 20 20 20 20 20 20 o " 1400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1410: 20 20 50 72 65 76 65 6e 74 20 61 62 6f 72 74 20 Prevent abort 1420: 77 68 65 6e 20 63 6f 6e 66 6c 69 63 74 69 6e 67 when conflicting 1430: 20 61 72 63 68 69 76 65 73 22 0a 09 74 72 6f 75 archives"..trou 1440: 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 20 20 ble info " 1450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1460: 20 20 20 20 20 20 20 20 20 77 65 72 65 20 66 6f were fo 1470: 75 6e 64 20 69 6e 20 62 6f 74 68 20 72 65 67 75 und in both regu 1480: 6c 61 72 20 61 6e 64 20 41 74 74 69 63 2e 22 0a lar and Attic.". 1490: 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 22 .trouble info "" 14a0: 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 ..trouble info " 14b0: 20 20 20 20 2d 2d 73 74 61 74 65 20 50 41 54 48 --state PATH 14c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 S 14d0: 61 76 65 20 73 74 61 74 65 20 74 6f 20 74 68 65 ave state to the 14e0: 20 73 70 65 63 69 66 69 65 64 20 66 69 6c 65 2c specified file, 14f0: 20 61 6e 64 22 0a 09 74 72 6f 75 62 6c 65 20 69 and"..trouble i 1500: 6e 66 6f 20 22 20 20 20 20 20 20 20 20 20 20 20 nfo " 1510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1520: 20 20 20 20 6c 6f 61 64 20 73 74 61 74 65 20 6f load state o 1530: 66 20 70 72 65 76 69 6f 75 73 20 72 75 6e 73 20 f previous runs 1540: 66 72 6f 6d 20 69 74 20 74 6f 6f 2e 22 0a 09 74 from it too."..t 1550: 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 22 0a 09 rouble info "".. 1560: 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 trouble info " 1570: 20 20 2d 2d 65 78 63 6c 75 64 65 20 3f 50 52 4f --exclude ?PRO 1580: 4a 45 43 54 3a 3f 53 59 4d 42 4f 4c 20 45 78 63 JECT:?SYMBOL Exc 1590: 6c 75 64 65 20 74 68 65 20 6e 61 6d 65 64 20 73 lude the named s 15a0: 79 6d 62 6f 6c 20 66 72 6f 6d 20 61 6c 6c 20 6f ymbol from all o 15b0: 72 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f r"..trouble info 15c0: 20 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 " 15d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 15e0: 20 6a 75 73 74 20 74 68 65 20 73 70 65 63 69 66 just the specif 15f0: 69 65 64 20 70 72 6f 6a 65 63 74 2e 20 42 6f 74 ied project. Bot 1600: 68 20 70 72 6f 6a 65 63 74 22 0a 09 74 72 6f 75 h project"..trou 1610: 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 20 20 ble info " 1620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1630: 20 20 20 20 20 20 20 20 20 61 6e 64 20 73 79 6d and sym 1640: 62 6f 6c 20 6e 61 6d 65 73 20 61 72 65 20 67 6c bol names are gl 1650: 6f 62 20 70 61 74 74 65 72 6e 73 2e 22 0a 09 74 ob patterns."..t 1660: 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 22 0a 09 rouble info "".. 1670: 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 trouble info " 1680: 20 20 2d 2d 66 6f 72 63 65 2d 74 61 67 20 3f 50 --force-tag ?P 1690: 52 4f 4a 45 43 54 3a 3f 53 59 4d 42 4f 4c 22 0a ROJECT:?SYMBOL". 16a0: 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 .trouble info " 16b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 16c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f Fo 16d0: 72 63 65 20 74 68 65 20 6e 61 6d 65 64 20 73 79 rce the named sy 16e0: 6d 62 6f 6c 20 66 72 6f 6d 20 61 6c 6c 20 6f 72 mbol from all or 16f0: 20 6a 75 73 74 22 0a 09 74 72 6f 75 62 6c 65 20 just"..trouble 1700: 69 6e 66 6f 20 22 20 20 20 20 20 20 20 20 20 20 info " 1710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1720: 20 20 20 20 20 74 68 65 20 73 70 65 63 69 66 69 the specifi 1730: 65 64 20 70 72 6f 6a 65 63 74 20 74 6f 20 62 65 ed project to be 1740: 20 63 6f 6e 76 65 72 74 65 64 20 61 73 22 0a 09 converted as".. 1750: 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 trouble info " 1760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1770: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61 67 tag 1780: 2e 20 42 6f 74 68 20 70 72 6f 6a 65 63 74 20 61 . Both project a 1790: 6e 64 20 73 79 6d 62 6f 6c 20 6e 61 6d 65 73 20 nd symbol names 17a0: 61 72 65 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e are"..trouble in 17b0: 66 6f 20 22 20 20 20 20 20 20 20 20 20 20 20 20 fo " 17c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 17d0: 20 20 20 67 6c 6f 62 20 70 61 74 74 65 72 6e 73 glob patterns 17e0: 2e 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f ."..trouble info 17f0: 20 22 22 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 ""..trouble inf 1800: 6f 20 22 20 20 20 20 2d 2d 66 6f 72 63 65 2d 62 o " --force-b 1810: 72 61 6e 63 68 20 3f 50 52 4f 4a 45 43 54 3a 3f ranch ?PROJECT:? 1820: 53 59 4d 42 4f 4c 22 0a 09 74 72 6f 75 62 6c 65 SYMBOL"..trouble 1830: 20 69 6e 66 6f 20 22 20 20 20 20 20 20 20 20 20 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 46 6f 72 63 65 20 74 68 65 20 Force the 1860: 6e 61 6d 65 64 20 73 79 6d 62 6f 6c 20 66 72 6f named symbol fro 1870: 6d 20 61 6c 6c 20 6f 72 20 6a 75 73 74 22 0a 09 m all or just".. 1880: 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 trouble info " 1890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 18a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 the 18b0: 20 73 70 65 63 69 66 69 65 64 20 70 72 6f 6a 65 specified proje 18c0: 63 74 20 74 6f 20 62 65 20 63 6f 6e 76 65 72 74 ct to be convert 18d0: 65 64 20 61 73 22 0a 09 74 72 6f 75 62 6c 65 20 ed as"..trouble 18e0: 69 6e 66 6f 20 22 20 20 20 20 20 20 20 20 20 20 info " 18f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1900: 20 20 20 20 20 62 72 61 6e 63 68 2e 20 42 6f 74 branch. Bot 1910: 68 20 70 72 6f 6a 65 63 74 20 61 6e 64 20 73 79 h project and sy 1920: 6d 62 6f 6c 20 6e 61 6d 65 73 22 0a 09 74 72 6f mbol names"..tro 1930: 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 20 20 20 uble info " 1940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1950: 20 20 20 20 20 20 20 20 20 20 61 72 65 20 67 6c are gl 1960: 6f 62 20 70 61 74 74 65 72 6e 73 2e 22 0a 09 74 ob patterns."..t 1970: 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 22 0a 09 rouble info "".. 1980: 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 20 trouble info " 1990: 20 20 2d 2d 64 6f 74 73 20 50 41 54 48 20 20 20 --dots PATH 19a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 57 72 69 Wri 19b0: 74 65 20 74 68 65 20 63 68 61 6e 67 65 73 65 74 te the changeset 19c0: 20 67 72 61 70 68 73 20 62 65 66 6f 72 65 2c 20 graphs before, 19d0: 61 66 74 65 72 2c 22 0a 09 74 72 6f 75 62 6c 65 after,"..trouble 19e0: 20 69 6e 66 6f 20 22 20 20 20 20 20 20 20 20 20 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 61 6e 64 20 64 75 72 69 6e 67 and during 1a10: 20 62 72 65 61 6b 69 6e 67 20 74 68 65 20 6f 66 breaking the of 1a20: 20 63 79 63 6c 65 73 20 74 6f 20 74 68 65 22 0a cycles to the". 1a30: 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f 20 22 20 .trouble info " 1a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 di 1a60: 72 65 63 6f 74 72 79 20 50 41 54 48 2c 20 75 73 recotry PATH, us 1a70: 69 6e 67 20 47 72 61 70 68 56 69 7a 27 73 20 64 ing GraphViz's d 1a80: 6f 74 20 66 6f 72 6d 61 74 22 0a 09 74 72 6f 75 ot format"..trou 1a90: 62 6c 65 20 69 6e 66 6f 20 22 22 0a 0a 09 23 20 ble info ""...# 1aa0: 2d 2d 70 72 6f 6a 65 63 74 2c 20 2d 2d 63 61 63 --project, --cac 1ab0: 68 65 0a 09 23 20 2e 2e 2e 0a 09 72 65 74 75 72 he..# .....retur 1ac0: 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70 72 6f n. }.. pro 1ad0: 63 20 50 72 69 6e 74 56 65 72 73 69 6f 6e 20 7b c PrintVersion { 1ae0: 7d 20 7b 0a 09 67 6c 6f 62 61 6c 20 61 72 67 76 } {..global argv 1af0: 30 0a 09 73 65 74 20 76 20 5b 70 61 63 6b 61 67 0..set v [packag 1b00: 65 20 72 65 71 75 69 72 65 20 76 63 3a 3a 66 6f e require vc::fo 1b10: 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 ssil::import::cv 1b20: 73 5d 0a 09 74 72 6f 75 62 6c 65 20 69 6e 66 6f s]..trouble info 1b30: 20 22 24 61 72 67 76 30 20 76 24 76 22 0a 09 72 "$argv0 v$v"..r 1b40: 65 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 eturn. }.. 1b50: 20 70 72 6f 63 20 55 73 61 67 65 20 7b 7b 74 65 proc Usage {{te 1b60: 78 74 20 7b 7d 7d 7d 20 7b 0a 09 67 6c 6f 62 61 xt {}}} {..globa 1b70: 6c 20 61 72 67 76 30 0a 09 74 72 6f 75 62 6c 65 l argv0..trouble 1b80: 20 66 61 74 61 6c 20 22 55 73 61 67 65 3a 20 24 fatal "Usage: $ 1b90: 61 72 67 76 30 20 24 75 73 61 67 65 22 0a 09 69 argv0 $usage"..i 1ba0: 66 20 7b 24 74 65 78 74 20 6e 65 20 22 22 7d 20 f {$text ne ""} 1bb0: 7b 20 74 72 6f 75 62 6c 65 20 66 61 74 61 6c 20 { trouble fatal 1bc0: 22 24 74 65 78 74 22 20 7d 0a 09 65 78 69 74 20 "$text" }..exit 1bd0: 31 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 23 1. }.. # # 1be0: 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 ## ### ##### ## 1bf0: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 ###### ######### 1c00: 23 23 23 23 0a 20 20 20 20 23 23 20 49 6e 74 65 ####. ## Inte 1c10: 72 6e 61 6c 20 6d 65 74 68 6f 64 73 2c 20 63 6f rnal methods, co 1c20: 6d 6d 61 6e 64 20 6c 69 6e 65 20 70 72 6f 63 65 mmand line proce 1c30: 73 73 69 6e 67 0a 0a 20 20 20 20 74 79 70 65 76 ssing.. typev 1c40: 61 72 69 61 62 6c 65 20 75 73 61 67 65 20 20 20 ariable usage 1c50: 20 20 22 3f 6f 70 74 69 6f 6e 20 3f 76 61 6c 75 "?option ?valu 1c60: 65 3f 2e 2e 2e 3f 20 63 76 73 2d 72 65 70 6f 73 e?...? cvs-repos 1c70: 69 74 6f 72 79 2d 70 61 74 68 22 0a 20 20 20 20 itory-path". 1c80: 74 79 70 65 76 61 72 69 61 62 6c 65 20 6e 6f 63 typevariable noc 1c90: 76 73 20 20 20 20 20 22 20 20 20 20 20 20 20 54 vs " T 1ca0: 68 65 20 63 76 73 2d 72 65 70 6f 73 69 74 6f 72 he cvs-repositor 1cb0: 79 2d 70 61 74 68 20 69 73 20 6d 69 73 73 69 6e y-path is missin 1cc0: 67 2e 22 0a 20 20 20 20 74 79 70 65 76 61 72 69 g.". typevari 1cd0: 61 62 6c 65 20 62 61 64 6f 70 74 69 6f 6e 20 22 able badoption " 1ce0: 20 20 20 20 20 20 20 42 61 64 20 6f 70 74 69 6f Bad optio 1cf0: 6e 20 22 0a 20 20 20 20 74 79 70 65 76 61 72 69 n ". typevari 1d00: 61 62 6c 65 20 67 65 74 68 65 6c 70 20 20 20 22 able gethelp " 1d10: 20 20 20 20 20 20 20 55 73 65 20 2d 2d 68 65 6c Use --hel 1d20: 70 20 74 6f 20 67 65 74 20 68 65 6c 70 2e 22 0a p to get help.". 1d30: 0a 20 20 20 20 70 72 6f 63 20 49 73 4f 70 74 69 . proc IsOpti 1d40: 6f 6e 20 7b 61 76 20 5f 20 6f 76 7d 20 7b 0a 09 on {av _ ov} {.. 1d50: 75 70 76 61 72 20 31 20 24 61 76 20 61 72 67 75 upvar 1 $av argu 1d60: 6d 65 6e 74 73 20 24 6f 76 20 6f 70 74 69 6f 6e ments $ov option 1d70: 0a 09 73 65 74 20 63 61 6e 64 69 64 61 74 65 20 ..set candidate 1d80: 5b 6c 69 6e 64 65 78 20 24 61 72 67 75 6d 65 6e [lindex $argumen 1d90: 74 73 20 30 5d 0a 09 69 66 20 7b 21 5b 73 74 72 ts 0]..if {![str 1da0: 69 6e 67 20 6d 61 74 63 68 20 2d 2a 20 24 63 61 ing match -* $ca 1db0: 6e 64 69 64 61 74 65 5d 7d 20 7b 72 65 74 75 72 ndidate]} {retur 1dc0: 6e 20 30 7d 0a 09 73 65 74 20 6f 70 74 69 6f 6e n 0}..set option 1dd0: 20 20 20 20 24 63 61 6e 64 69 64 61 74 65 0a 09 $candidate.. 1de0: 73 65 74 20 61 72 67 75 6d 65 6e 74 73 20 5b 6c set arguments [l 1df0: 72 61 6e 67 65 20 24 61 72 67 75 6d 65 6e 74 73 range $arguments 1e00: 20 31 20 65 6e 64 5d 0a 09 72 65 74 75 72 6e 20 1 end]..return 1e10: 31 0a 20 20 20 20 7d 0a 0a 20 20 20 20 70 72 6f 1. }.. pro 1e20: 63 20 56 61 6c 75 65 20 7b 61 76 7d 20 7b 0a 09 c Value {av} {.. 1e30: 75 70 76 61 72 20 31 20 24 61 76 20 61 72 67 75 upvar 1 $av argu 1e40: 6d 65 6e 74 73 0a 09 73 65 74 20 76 20 20 20 20 ments..set v 1e50: 20 20 20 20 20 5b 6c 69 6e 64 65 78 20 24 61 72 [lindex $ar 1e60: 67 75 6d 65 6e 74 73 20 30 5d 0a 09 73 65 74 20 guments 0]..set 1e70: 61 72 67 75 6d 65 6e 74 73 20 5b 6c 72 61 6e 67 arguments [lrang 1e80: 65 20 24 61 72 67 75 6d 65 6e 74 73 20 31 20 65 e $arguments 1 e 1e90: 6e 64 5d 0a 09 72 65 74 75 72 6e 20 24 76 0a 20 nd]..return $v. 1ea0: 20 20 20 7d 0a 0a 20 20 20 20 23 20 23 20 23 23 }.. # # ## 1eb0: 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 ### ##### ##### 1ec0: 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 ### ############ 1ed0: 23 0a 20 20 20 20 23 23 20 49 6e 74 65 72 6e 61 #. ## Interna 1ee0: 6c 20 6d 65 74 68 6f 64 73 2c 20 73 74 61 74 65 l methods, state 1ef0: 20 76 61 6c 69 64 61 74 69 6f 6e 0a 0a 20 20 20 validation.. 1f00: 20 70 72 6f 63 20 56 61 6c 69 64 61 74 65 20 7b proc Validate { 1f10: 7d 20 7b 0a 09 23 20 50 72 65 76 65 6e 74 20 69 } {..# Prevent i 1f20: 6e 2d 64 65 70 74 68 20 76 61 6c 69 64 61 74 69 n-depth validati 1f30: 6f 6e 20 69 66 20 74 68 65 20 6f 70 74 69 6f 6e on if the option 1f40: 73 20 77 65 72 65 20 61 6c 72 65 61 64 79 20 62 s were already b 1f50: 61 64 2e 0a 09 74 72 6f 75 62 6c 65 20 61 62 6f ad...trouble abo 1f60: 72 74 3f 0a 0a 09 72 65 70 6f 73 69 74 6f 72 79 rt?...repository 1f70: 20 76 61 6c 69 64 61 74 65 0a 09 73 74 61 74 65 validate..state 1f80: 20 20 20 20 20 20 73 65 74 75 70 0a 0a 09 74 72 setup...tr 1f90: 6f 75 62 6c 65 20 61 62 6f 72 74 3f 0a 09 72 65 ouble abort?..re 1fa0: 74 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 turn. }.. 1fb0: 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 # # ## ### ##### 1fc0: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######## ###### 1fd0: 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 43 #######. ## C 1fe0: 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 0a 20 20 onfiguration.. 1ff0: 20 20 70 72 61 67 6d 61 20 2d 68 61 73 69 6e 73 pragma -hasins 2000: 74 61 6e 63 65 73 20 20 20 6e 6f 20 3b 20 23 20 tances no ; # 2010: 73 69 6e 67 6c 65 74 6f 6e 0a 20 20 20 20 70 72 singleton. pr 2020: 61 67 6d 61 20 2d 68 61 73 74 79 70 65 69 6e 66 agma -hastypeinf 2030: 6f 20 20 20 20 6e 6f 20 3b 20 23 20 6e 6f 20 69 o no ; # no i 2040: 6e 74 72 6f 73 70 65 63 74 69 6f 6e 0a 20 20 20 ntrospection. 2050: 20 70 72 61 67 6d 61 20 2d 68 61 73 74 79 70 65 pragma -hastype 2060: 64 65 73 74 72 6f 79 20 6e 6f 20 3b 20 23 20 69 destroy no ; # i 2070: 6d 6d 6f 72 74 61 6c 0a 0a 20 20 20 20 23 20 23 mmortal.. # # 2080: 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 ## ### ##### ## 2090: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 ###### ######### 20a0: 23 23 23 23 0a 7d 0a 0a 6e 61 6d 65 73 70 61 63 ####.}..namespac 20b0: 65 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 66 6f 73 e eval ::vc::fos 20c0: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 sil::import::cvs 20d0: 20 7b 0a 20 20 20 20 6e 61 6d 65 73 70 61 63 65 {. namespace 20e0: 20 65 78 70 6f 72 74 20 6f 70 74 69 6f 6e 0a 20 export option. 20f0: 20 20 20 6e 61 6d 65 73 70 61 63 65 20 65 76 61 namespace eva 2100: 6c 20 6f 70 74 69 6f 6e 20 7b 0a 09 6e 61 6d 65 l option {..name 2110: 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 space import ::v 2120: 63 3a 3a 74 6f 6f 6c 73 3a 3a 6d 69 73 63 3a 3a c::tools::misc:: 2130: 73 74 72 69 70 74 72 61 69 6c 69 6e 67 73 6c 61 striptrailingsla 2140: 73 68 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 6d sh..namespace im 2150: 70 6f 72 74 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 port ::vc::fossi 2160: 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a l::import::cvs:: 2170: 70 61 73 73 0a 09 6e 61 6d 65 73 70 61 63 65 20 pass..namespace 2180: 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 66 6f 73 import ::vc::fos 2190: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 sil::import::cvs 21a0: 3a 3a 70 61 73 73 3a 3a 63 6f 6c 6c 61 72 0a 09 ::pass::collar.. 21b0: 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 namespace import 21c0: 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 ::vc::fossil::i 21d0: 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 63 79 63 6c mport::cvs::cycl 21e0: 65 62 72 65 61 6b 65 72 0a 09 6e 61 6d 65 73 70 ebreaker..namesp 21f0: 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a ace import ::vc: 2200: 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a :fossil::import: 2210: 3a 63 76 73 3a 3a 72 65 70 6f 73 69 74 6f 72 79 :cvs::repository 2220: 0a 09 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 73 74 :import::cvs::st 2250: 61 74 65 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 ate..namespace i 2260: 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 66 6f 73 73 mport ::vc::foss 2270: 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a il::import::cvs: 2280: 3a 69 6e 74 65 67 72 69 74 79 0a 09 6e 61 6d 65 :integrity..name 2290: 73 70 61 63 65 20 65 76 61 6c 20 70 72 6f 6a 65 space eval proje 22a0: 63 74 20 7b 0a 09 20 20 20 20 6e 61 6d 65 73 70 ct {.. namesp 22b0: 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a ace import ::vc: 22c0: 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a :fossil::import: 22d0: 3a 63 76 73 3a 3a 70 72 6f 6a 65 63 74 3a 3a 73 :cvs::project::s 22e0: 79 6d 0a 09 7d 0a 09 6e 61 6d 65 73 70 61 63 65 ym..}..namespace 22f0: 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 74 6f import ::vc::to 2300: 6f 6c 73 3a 3a 74 72 6f 75 62 6c 65 0a 09 6e 61 ols::trouble..na 2310: 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a mespace import : 2320: 3a 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6c 6f 67 0a :vc::tools::log. 2330: 20 20 20 20 7d 0a 7d 0a 0a 23 20 23 20 23 23 20 }.}..# # ## 2340: 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 ### ##### ###### 2350: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 ## ############# 2360: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ############### 2370: 23 23 23 23 23 23 0a 23 23 20 52 65 61 64 79 0a ######.## Ready. 2380: 0a 70 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65 .package provide 2390: 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 vc::fossil::imp 23a0: 6f 72 74 3a 3a 63 76 73 3a 3a 6f 70 74 69 6f 6e ort::cvs::option 23b0: 20 31 2e 30 0a 72 65 74 75 72 6e 0a 1.0.return.