Artifact bba80efcbb5a57725cbc350c9790e4073cb76859:
File tools/cvs2fossil/lib/pkgIndex.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 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 # # ## ### ##### 0010: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######## ###### 0020: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ######## 0030: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 #############.## 0040: 20 50 61 63 6b 61 67 65 20 6d 61 6e 61 67 65 6d Package managem 0050: 65 6e 74 2e 0a 23 23 20 49 6e 64 65 78 20 6f 66 ent..## Index of 0060: 20 74 68 65 20 6c 6f 63 61 6c 20 70 61 63 6b 61 the local packa 0070: 67 65 73 20 72 65 71 75 69 72 65 64 20 62 79 20 ges required by 0080: 63 76 73 32 66 6f 73 73 69 6c 0a 23 20 23 20 23 cvs2fossil.# # # 0090: 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 # ### ##### #### 00a0: 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 #### ########### 00b0: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 ## ############# 00c0: 23 23 23 23 23 23 23 23 0a 69 66 20 7b 21 5b 70 ########.if {![p 00d0: 61 63 6b 61 67 65 20 76 73 61 74 69 73 66 69 65 ackage vsatisfie 00e0: 73 20 5b 70 61 63 6b 61 67 65 20 72 65 71 75 69 s [package requi 00f0: 72 65 20 54 63 6c 5d 20 38 2e 34 5d 7d 20 72 65 re Tcl] 8.4]} re 0100: 74 75 72 6e 0a 70 61 63 6b 61 67 65 20 69 66 6e turn.package ifn 0110: 65 65 64 65 64 20 76 63 3a 3a 66 6f 73 73 69 6c eeded vc::fossil 0120: 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 20 20 20 ::import::cvs 0130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0140: 20 31 2e 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 1.0 [list sourc 0150: 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 e [file join $di 0160: 72 20 63 76 73 32 66 6f 73 73 69 6c 2e 74 63 6c r cvs2fossil.tcl 0170: 5d 5d 0a 70 61 63 6b 61 67 65 20 69 66 6e 65 65 ]].package ifnee 0180: 64 65 64 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a ded vc::fossil:: 0190: 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 66 69 6c import::cvs::fil 01a0: 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 e 1 01b0: 2e 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 65 20 .0 [list source 01c0: 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 [file join $dir 01d0: 63 32 66 5f 66 69 6c 65 2e 74 63 6c 5d 5d 0a 70 c2f_file.tcl]].p 01e0: 61 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 20 ackage ifneeded 01f0: 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f vc::fossil::impo 0200: 72 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 3a 3a 6c rt::cvs::file::l 0210: 6f 64 6d 67 72 20 20 20 20 20 20 31 2e 30 20 5b odmgr 1.0 [ 0220: 6c 69 73 74 20 73 6f 75 72 63 65 20 5b 66 69 6c list source [fil 0230: 65 20 6a 6f 69 6e 20 24 64 69 72 20 63 32 66 5f e join $dir c2f_ 0240: 66 6c 6f 64 6d 67 72 2e 74 63 6c 5d 5d 0a 70 61 flodmgr.tcl]].pa 0250: 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 20 76 ckage ifneeded v 0260: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor 0270: 74 3a 3a 63 76 73 3a 3a 66 69 6c 65 3a 3a 72 65 t::cvs::file::re 0280: 76 20 20 20 20 20 20 20 20 20 31 2e 30 20 5b 6c v 1.0 [l 0290: 69 73 74 20 73 6f 75 72 63 65 20 5b 66 69 6c 65 ist source [file 02a0: 20 6a 6f 69 6e 20 24 64 69 72 20 63 32 66 5f 66 join $dir c2f_f 02b0: 72 65 76 2e 74 63 6c 5d 5d 0a 70 61 63 6b 61 67 rev.tcl]].packag 02c0: 65 20 69 66 6e 65 65 64 65 64 20 76 63 3a 3a 66 e ifneeded vc::f 02d0: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 ossil::import::c 02e0: 76 73 3a 3a 66 69 6c 65 3a 3a 73 79 6d 20 20 20 vs::file::sym 02f0: 20 20 20 20 20 20 31 2e 30 20 5b 6c 69 73 74 20 1.0 [list 0300: 73 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f 69 source [file joi 0310: 6e 20 24 64 69 72 20 63 32 66 5f 66 73 79 6d 2e n $dir c2f_fsym. 0320: 74 63 6c 5d 5d 0a 70 61 63 6b 61 67 65 20 69 66 tcl]].package if 0330: 6e 65 65 64 65 64 20 76 63 3a 3a 66 6f 73 73 69 needed vc::fossi 0340: 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a l::import::cvs:: 0350: 66 69 6c 65 3a 3a 74 72 75 6e 6b 20 20 20 20 20 file::trunk 0360: 20 20 31 2e 30 20 5b 6c 69 73 74 20 73 6f 75 72 1.0 [list sour 0370: 63 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 ce [file join $d 0380: 69 72 20 63 32 66 5f 66 74 72 75 6e 6b 2e 74 63 ir c2f_ftrunk.tc 0390: 6c 5d 5d 0a 70 61 63 6b 61 67 65 20 69 66 6e 65 l]].package ifne 03a0: 65 64 65 64 20 76 63 3a 3a 66 6f 73 73 69 6c 3a eded vc::fossil: 03b0: 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 6f 70 :import::cvs::op 03c0: 74 69 6f 6e 20 20 20 20 20 20 20 20 20 20 20 20 tion 03d0: 31 2e 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 65 1.0 [list source 03e0: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 [file join $dir 03f0: 20 63 32 66 5f 6f 70 74 69 6f 6e 2e 74 63 6c 5d c2f_option.tcl] 0400: 5d 0a 70 61 63 6b 61 67 65 20 69 66 6e 65 65 64 ].package ifneed 0410: 65 64 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 ed vc::fossil::i 0420: 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 69 6e 74 65 mport::cvs::inte 0430: 67 72 69 74 79 20 20 20 20 20 20 20 20 20 31 2e grity 1. 0440: 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 65 20 5b 0 [list source [ 0450: 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 63 file join $dir c 0460: 32 66 5f 69 6e 74 65 67 72 69 74 79 2e 74 63 6c 2f_integrity.tcl 0470: 5d 5d 0a 70 61 63 6b 61 67 65 20 69 66 6e 65 65 ]].package ifnee 0480: 64 65 64 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a ded vc::fossil:: 0490: 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 61 73 import::cvs::pas 04a0: 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 s 1 04b0: 2e 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 65 20 .0 [list source 04c0: 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 [file join $dir 04d0: 63 32 66 5f 70 61 73 73 2e 74 63 6c 5d 5d 0a 70 c2f_pass.tcl]].p 04e0: 61 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 20 ackage ifneeded 04f0: 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f vc::fossil::impo 0500: 72 74 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a 63 rt::cvs::pass::c 0510: 6f 6c 6c 61 72 20 20 20 20 20 20 31 2e 30 20 5b ollar 1.0 [ 0520: 6c 69 73 74 20 73 6f 75 72 63 65 20 5b 66 69 6c list source [fil 0530: 65 20 6a 6f 69 6e 20 24 64 69 72 20 63 32 66 5f e join $dir c2f_ 0540: 70 63 6f 6c 6c 61 72 2e 74 63 6c 5d 5d 0a 70 61 pcollar.tcl]].pa 0550: 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 20 76 ckage ifneeded v 0560: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor 0570: 74 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a 63 6f t::cvs::pass::co 0580: 6c 6c 72 65 76 20 20 20 20 20 31 2e 30 20 5b 6c llrev 1.0 [l 0590: 69 73 74 20 73 6f 75 72 63 65 20 5b 66 69 6c 65 ist source [file 05a0: 20 6a 6f 69 6e 20 24 64 69 72 20 63 32 66 5f 70 join $dir c2f_p 05b0: 63 6f 6c 6c 72 65 76 2e 74 63 6c 5d 5d 0a 70 61 collrev.tcl]].pa 05c0: 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 20 76 ckage ifneeded v 05d0: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor 05e0: 74 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a 63 6f t::cvs::pass::co 05f0: 6c 6c 73 79 6d 20 20 20 20 20 31 2e 30 20 5b 6c llsym 1.0 [l 0600: 69 73 74 20 73 6f 75 72 63 65 20 5b 66 69 6c 65 ist source [file 0610: 20 6a 6f 69 6e 20 24 64 69 72 20 63 32 66 5f 70 join $dir c2f_p 0620: 63 6f 6c 6c 73 79 6d 2e 74 63 6c 5d 5d 0a 70 61 collsym.tcl]].pa 0630: 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 20 76 ckage ifneeded v 0640: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor 0650: 74 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a 66 69 t::cvs::pass::fi 0660: 6c 74 65 72 73 79 6d 20 20 20 31 2e 30 20 5b 6c ltersym 1.0 [l 0670: 69 73 74 20 73 6f 75 72 63 65 20 5b 66 69 6c 65 ist source [file 0680: 20 6a 6f 69 6e 20 24 64 69 72 20 63 32 66 5f 70 join $dir c2f_p 0690: 66 69 6c 74 65 72 73 79 6d 2e 74 63 6c 5d 5d 0a filtersym.tcl]]. 06a0: 70 61 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 package ifneeded 06b0: 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 vc::fossil::imp 06c0: 6f 72 74 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a ort::cvs::pass:: 06d0: 69 6e 69 74 63 73 65 74 73 20 20 20 31 2e 30 20 initcsets 1.0 06e0: 5b 6c 69 73 74 20 73 6f 75 72 63 65 20 5b 66 69 [list source [fi 06f0: 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 63 32 66 le join $dir c2f 0700: 5f 70 69 6e 69 74 63 73 65 74 73 2e 74 63 6c 5d _pinitcsets.tcl] 0710: 5d 0a 70 61 63 6b 61 67 65 20 69 66 6e 65 65 64 ].package ifneed 0720: 65 64 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 ed vc::fossil::i 0730: 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 61 73 73 mport::cvs::pass 0740: 3a 3a 63 73 65 74 64 65 70 73 20 20 20 20 31 2e ::csetdeps 1. 0750: 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 65 20 5b 0 [list source [ 0760: 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 63 file join $dir c 0770: 32 66 5f 70 63 73 65 74 64 65 70 73 2e 74 63 6c 2f_pcsetdeps.tcl 0780: 5d 5d 0a 70 61 63 6b 61 67 65 20 69 66 6e 65 65 ]].package ifnee 0790: 64 65 64 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a ded vc::fossil:: 07a0: 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 61 73 import::cvs::pas 07b0: 73 3a 3a 62 72 65 61 6b 72 63 79 63 6c 65 20 31 s::breakrcycle 1 07c0: 2e 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 65 20 .0 [list source 07d0: 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 [file join $dir 07e0: 63 32 66 5f 70 62 72 65 61 6b 72 63 79 63 6c 65 c2f_pbreakrcycle 07f0: 2e 74 63 6c 5d 5d 0a 70 61 63 6b 61 67 65 20 69 .tcl]].package i 0800: 66 6e 65 65 64 65 64 20 76 63 3a 3a 66 6f 73 73 fneeded vc::foss 0810: 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a il::import::cvs: 0820: 3a 70 61 73 73 3a 3a 72 74 6f 70 73 6f 72 74 20 :pass::rtopsort 0830: 20 20 20 31 2e 30 20 5b 6c 69 73 74 20 73 6f 75 1.0 [list sou 0840: 72 63 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 rce [file join $ 0850: 64 69 72 20 63 32 66 5f 70 72 74 6f 70 73 6f 72 dir c2f_prtopsor 0860: 74 2e 74 63 6c 5d 5d 0a 70 61 63 6b 61 67 65 20 t.tcl]].package 0870: 69 66 6e 65 65 64 65 64 20 76 63 3a 3a 66 6f 73 ifneeded vc::fos 0880: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 sil::import::cvs 0890: 3a 3a 70 61 73 73 3a 3a 62 72 65 61 6b 73 63 79 ::pass::breakscy 08a0: 63 6c 65 20 31 2e 30 20 5b 6c 69 73 74 20 73 6f cle 1.0 [list so 08b0: 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 urce [file join 08c0: 24 64 69 72 20 63 32 66 5f 70 62 72 65 61 6b 73 $dir c2f_pbreaks 08d0: 63 79 63 6c 65 2e 74 63 6c 5d 5d 0a 70 61 63 6b cycle.tcl]].pack 08e0: 61 67 65 20 69 66 6e 65 65 64 65 64 20 76 63 3a age ifneeded vc: 08f0: 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a :fossil::import: 0900: 3a 63 76 73 3a 3a 70 61 73 73 3a 3a 62 72 65 61 :cvs::pass::brea 0910: 6b 61 63 79 63 6c 65 20 31 2e 30 20 5b 6c 69 73 kacycle 1.0 [lis 0920: 74 20 73 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a t source [file j 0930: 6f 69 6e 20 24 64 69 72 20 63 32 66 5f 70 62 72 oin $dir c2f_pbr 0940: 65 61 6b 61 63 79 63 6c 65 2e 74 63 6c 5d 5d 0a eakacycle.tcl]]. 0950: 70 61 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 package ifneeded 0960: 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 vc::fossil::imp 0970: 6f 72 74 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a ort::cvs::pass:: 0980: 61 74 6f 70 73 6f 72 74 20 20 20 20 31 2e 30 20 atopsort 1.0 0990: 5b 6c 69 73 74 20 73 6f 75 72 63 65 20 5b 66 69 [list source [fi 09a0: 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 63 32 66 le join $dir c2f 09b0: 5f 70 61 74 6f 70 73 6f 72 74 2e 74 63 6c 5d 5d _patopsort.tcl]] 09c0: 0a 70 61 63 6b 61 67 65 20 69 66 6e 65 65 64 65 .package ifneede 09d0: 64 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d d vc::fossil::im 09e0: 70 6f 72 74 3a 3a 63 76 73 3a 3a 63 79 63 6c 65 port::cvs::cycle 09f0: 62 72 65 61 6b 65 72 20 20 20 20 20 20 31 2e 30 breaker 1.0 0a00: 20 5b 6c 69 73 74 20 73 6f 75 72 63 65 20 5b 66 [list source [f 0a10: 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 63 32 ile join $dir c2 0a20: 66 5f 63 79 63 6c 65 62 72 65 61 6b 65 72 2e 74 f_cyclebreaker.t 0a30: 63 6c 5d 5d 0a 70 61 63 6b 61 67 65 20 69 66 6e cl]].package ifn 0a40: 65 65 64 65 64 20 76 63 3a 3a 66 6f 73 73 69 6c eeded vc::fossil 0a50: 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 ::import::cvs::p 0a60: 72 6f 6a 65 63 74 20 20 20 20 20 20 20 20 20 20 roject 0a70: 20 31 2e 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 1.0 [list sourc 0a80: 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 e [file join $di 0a90: 72 20 63 32 66 5f 70 72 6f 6a 65 63 74 2e 74 63 r c2f_project.tc 0aa0: 6c 5d 5d 0a 70 61 63 6b 61 67 65 20 69 66 6e 65 l]].package ifne 0ab0: 65 64 65 64 20 76 63 3a 3a 66 6f 73 73 69 6c 3a eded vc::fossil: 0ac0: 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 72 :import::cvs::pr 0ad0: 6f 6a 65 63 74 3a 3a 6c 6f 64 6d 67 72 20 20 20 oject::lodmgr 0ae0: 31 2e 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 65 1.0 [list source 0af0: 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 [file join $dir 0b00: 20 63 32 66 5f 70 6c 6f 64 6d 67 72 2e 74 63 6c c2f_plodmgr.tcl 0b10: 5d 5d 0a 70 61 63 6b 61 67 65 20 69 66 6e 65 65 ]].package ifnee 0b20: 64 65 64 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a ded vc::fossil:: 0b30: 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 72 6f import::cvs::pro 0b40: 6a 65 63 74 3a 3a 72 65 76 20 20 20 20 20 20 31 ject::rev 1 0b50: 2e 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 65 20 .0 [list source 0b60: 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 [file join $dir 0b70: 63 32 66 5f 70 72 65 76 2e 74 63 6c 5d 5d 0a 70 c2f_prev.tcl]].p 0b80: 61 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 20 ackage ifneeded 0b90: 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f vc::fossil::impo 0ba0: 72 74 3a 3a 63 76 73 3a 3a 70 72 6f 6a 65 63 74 rt::cvs::project 0bb0: 3a 3a 72 65 76 6c 69 6e 6b 20 20 31 2e 30 20 5b ::revlink 1.0 [ 0bc0: 6c 69 73 74 20 73 6f 75 72 63 65 20 5b 66 69 6c list source [fil 0bd0: 65 20 6a 6f 69 6e 20 24 64 69 72 20 63 32 66 5f e join $dir c2f_ 0be0: 70 72 65 76 6c 69 6e 6b 2e 74 63 6c 5d 5d 0a 70 prevlink.tcl]].p 0bf0: 61 63 6b 61 67 65 20 69 66 6e 65 65 64 65 64 20 ackage ifneeded 0c00: 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f vc::fossil::impo 0c10: 72 74 3a 3a 63 76 73 3a 3a 70 72 6f 6a 65 63 74 rt::cvs::project 0c20: 3a 3a 73 79 6d 20 20 20 20 20 20 31 2e 30 20 5b ::sym 1.0 [ 0c30: 6c 69 73 74 20 73 6f 75 72 63 65 20 5b 66 69 6c list source [fil 0c40: 65 20 6a 6f 69 6e 20 24 64 69 72 20 63 32 66 5f e join $dir c2f_ 0c50: 70 73 79 6d 2e 74 63 6c 5d 5d 0a 70 61 63 6b 61 psym.tcl]].packa 0c60: 67 65 20 69 66 6e 65 65 64 65 64 20 76 63 3a 3a ge ifneeded vc:: 0c70: 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a fossil::import:: 0c80: 63 76 73 3a 3a 70 72 6f 6a 65 63 74 3a 3a 74 72 cvs::project::tr 0c90: 75 6e 6b 20 20 20 20 31 2e 30 20 5b 6c 69 73 74 unk 1.0 [list 0ca0: 20 73 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f source [file jo 0cb0: 69 6e 20 24 64 69 72 20 63 32 66 5f 70 74 72 75 in $dir c2f_ptru 0cc0: 6e 6b 2e 74 63 6c 5d 5d 0a 70 61 63 6b 61 67 65 nk.tcl]].package 0cd0: 20 69 66 6e 65 65 64 65 64 20 76 63 3a 3a 66 6f ifneeded vc::fo 0ce0: 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 ssil::import::cv 0cf0: 73 3a 3a 72 65 70 6f 73 69 74 6f 72 79 20 20 20 s::repository 0d00: 20 20 20 20 20 31 2e 30 20 5b 6c 69 73 74 20 73 1.0 [list s 0d10: 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f 69 6e ource [file join 0d20: 20 24 64 69 72 20 63 32 66 5f 72 65 70 6f 73 69 $dir c2f_reposi 0d30: 74 6f 72 79 2e 74 63 6c 5d 5d 0a 70 61 63 6b 61 tory.tcl]].packa 0d40: 67 65 20 69 66 6e 65 65 64 65 64 20 76 63 3a 3a ge ifneeded vc:: 0d50: 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a fossil::import:: 0d60: 63 76 73 3a 3a 73 74 61 74 65 20 20 20 20 20 20 cvs::state 0d70: 20 20 20 20 20 20 20 31 2e 30 20 5b 6c 69 73 74 1.0 [list 0d80: 20 73 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f source [file jo 0d90: 69 6e 20 24 64 69 72 20 63 32 66 5f 73 74 61 74 in $dir c2f_stat 0da0: 65 2e 74 63 6c 5d 5d 0a 70 61 63 6b 61 67 65 20 e.tcl]].package 0db0: 69 66 6e 65 65 64 65 64 20 76 63 3a 3a 72 63 73 ifneeded vc::rcs 0dc0: 3a 3a 70 61 72 73 65 72 20 20 20 20 20 20 20 20 ::parser 0dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0de0: 20 20 20 20 31 2e 30 20 5b 6c 69 73 74 20 73 6f 1.0 [list so 0df0: 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 urce [file join 0e00: 24 64 69 72 20 72 63 73 70 61 72 73 65 72 2e 74 $dir rcsparser.t 0e10: 63 6c 5d 5d 0a 70 61 63 6b 61 67 65 20 69 66 6e cl]].package ifn 0e20: 65 65 64 65 64 20 76 63 3a 3a 74 6f 6f 6c 73 3a eeded vc::tools: 0e30: 3a 64 6f 74 20 20 20 20 20 20 20 20 20 20 20 20 :dot 0e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0e50: 20 31 2e 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 1.0 [list sourc 0e60: 65 20 5b 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 e [file join $di 0e70: 72 20 64 6f 74 2e 74 63 6c 5d 5d 0a 70 61 63 6b r dot.tcl]].pack 0e80: 61 67 65 20 69 66 6e 65 65 64 65 64 20 76 63 3a age ifneeded vc: 0e90: 3a 74 6f 6f 6c 73 3a 3a 69 64 20 20 20 20 20 20 :tools::id 0ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0eb0: 20 20 20 20 20 20 20 20 31 2e 30 20 5b 6c 69 73 1.0 [lis 0ec0: 74 20 73 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a t source [file j 0ed0: 6f 69 6e 20 24 64 69 72 20 69 64 2e 74 63 6c 5d oin $dir id.tcl] 0ee0: 5d 0a 70 61 63 6b 61 67 65 20 69 66 6e 65 65 64 ].package ifneed 0ef0: 65 64 20 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6c 6f ed vc::tools::lo 0f00: 67 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 g 0f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 2e 1. 0f20: 30 20 5b 6c 69 73 74 20 73 6f 75 72 63 65 20 5b 0 [list source [ 0f30: 66 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 6c file join $dir l 0f40: 6f 67 2e 74 63 6c 5d 5d 0a 70 61 63 6b 61 67 65 og.tcl]].package 0f50: 20 69 66 6e 65 65 64 65 64 20 76 63 3a 3a 74 6f ifneeded vc::to 0f60: 6f 6c 73 3a 3a 6d 69 73 63 20 20 20 20 20 20 20 ols::misc 0f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0f80: 20 20 20 20 20 31 2e 30 20 5b 6c 69 73 74 20 73 1.0 [list s 0f90: 6f 75 72 63 65 20 5b 66 69 6c 65 20 6a 6f 69 6e ource [file join 0fa0: 20 24 64 69 72 20 6d 69 73 63 2e 74 63 6c 5d 5d $dir misc.tcl]] 0fb0: 0a 70 61 63 6b 61 67 65 20 69 66 6e 65 65 64 65 .package ifneede 0fc0: 64 20 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 74 72 6f d vc::tools::tro 0fd0: 75 62 6c 65 20 20 20 20 20 20 20 20 20 20 20 20 uble 0fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 31 2e 30 1.0 0ff0: 20 5b 6c 69 73 74 20 73 6f 75 72 63 65 20 5b 66 [list source [f 1000: 69 6c 65 20 6a 6f 69 6e 20 24 64 69 72 20 74 72 ile join $dir tr 1010: 6f 75 62 6c 65 2e 74 63 6c 5d 5d 0a ouble.tcl]].