Artifact 3c073e957a33edde844003a8e018bbf946820cb2:
File tools/cvs2fossil/lib/c2f_pbreakrcycle.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 50 61 73 ########..## Pas 0200: 73 20 56 49 49 2e 20 54 68 69 73 20 70 61 73 73 s VII. This pass 0210: 20 67 6f 65 73 20 6f 76 65 72 20 74 68 65 20 73 goes over the s 0220: 65 74 20 6f 66 20 72 65 76 69 73 69 6f 6e 20 62 et of revision b 0230: 61 73 65 64 20 63 68 61 6e 67 65 73 65 74 73 0a ased changesets. 0240: 23 23 20 61 6e 64 20 62 72 65 61 6b 73 20 61 6c ## and breaks al 0250: 6c 20 64 65 70 65 6e 64 65 6e 63 79 20 63 79 63 l dependency cyc 0260: 6c 65 73 20 74 68 65 79 20 6d 61 79 20 62 65 20 les they may be 0270: 69 6e 2e 20 57 65 20 6e 65 65 64 20 61 0a 23 23 in. We need a.## 0280: 20 64 65 70 65 6e 64 65 6e 63 79 20 74 72 65 65 dependency tree 0290: 2e 20 49 64 65 6e 74 69 63 61 6c 20 74 6f 20 70 . Identical to p 02a0: 61 73 73 20 49 58 2c 20 65 78 63 65 70 74 20 66 ass IX, except f 02b0: 6f 72 20 74 68 65 20 73 65 6c 65 63 74 69 6f 6e or the selection 02c0: 20 6f 66 0a 23 23 20 74 68 65 20 63 68 61 6e 67 of.## the chang 02d0: 65 73 65 74 73 2e 0a 0a 23 20 23 20 23 23 20 23 esets...# # ## # 02e0: 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 23 ## ##### ####### 02f0: 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 20 # ############# 0300: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0310: 23 23 23 23 23 0a 23 23 20 52 65 71 75 69 72 65 #####.## Require 0320: 6d 65 6e 74 73 0a 0a 70 61 63 6b 61 67 65 20 72 ments..package r 0330: 65 71 75 69 72 65 20 54 63 6c 20 38 2e 34 20 20 equire Tcl 8.4 0340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0360: 20 3b 20 23 20 52 65 71 75 69 72 65 64 20 72 75 ; # Required ru 0370: 6e 74 69 6d 65 2e 0a 70 61 63 6b 61 67 65 20 72 ntime..package r 0380: 65 71 75 69 72 65 20 73 6e 69 74 20 20 20 20 20 equire snit 0390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 03a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 03b0: 20 3b 20 23 20 4f 4f 20 73 79 73 74 65 6d 2e 0a ; # OO system.. 03c0: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 package require 03d0: 73 74 72 75 63 74 3a 3a 6c 69 73 74 20 20 20 20 struct::list 03e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 03f0: 20 20 20 20 20 20 20 20 20 20 3b 20 23 20 48 69 ; # Hi 0400: 67 68 65 72 20 6f 72 64 65 72 20 6c 69 73 74 20 gher order list 0410: 6f 70 65 72 61 74 69 6f 6e 73 2e 0a 70 61 63 6b operations..pack 0420: 61 67 65 20 72 65 71 75 69 72 65 20 76 63 3a 3a age require vc:: 0430: 74 6f 6f 6c 73 3a 3a 6c 6f 67 20 20 20 20 20 20 tools::log 0440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0450: 20 20 20 20 20 20 3b 20 23 20 55 73 65 72 20 66 ; # User f 0460: 65 65 64 62 61 63 6b 2e 0a 70 61 63 6b 61 67 65 eedback..package 0470: 20 72 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 require vc::fos 0480: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 sil::import::cvs 0490: 3a 3a 72 65 70 6f 73 69 74 6f 72 79 20 20 20 20 ::repository 04a0: 20 20 20 3b 20 23 20 52 65 70 6f 73 69 74 6f 72 ; # Repositor 04b0: 79 20 6d 61 6e 61 67 65 6d 65 6e 74 2e 0a 70 61 y management..pa 04c0: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 76 63 ckage require vc 04d0: 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 ::fossil::import 04e0: 3a 3a 63 76 73 3a 3a 63 79 63 6c 65 62 72 65 61 ::cvs::cyclebrea 04f0: 6b 65 72 20 20 20 20 20 3b 20 23 20 42 72 65 61 ker ; # Brea 0500: 6b 69 6e 67 20 64 65 70 65 6e 64 65 6e 63 79 20 king dependency 0510: 63 79 63 6c 65 73 2e 0a 70 61 63 6b 61 67 65 20 cycles..package 0520: 72 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 73 require vc::foss 0530: 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a il::import::cvs: 0540: 3a 73 74 61 74 65 20 20 20 20 20 20 20 20 20 20 :state 0550: 20 20 3b 20 23 20 53 74 61 74 65 20 73 74 6f 72 ; # State stor 0560: 61 67 65 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 age..package req 0570: 75 69 72 65 20 76 63 3a 3a 66 6f 73 73 69 6c 3a uire vc::fossil: 0580: 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 69 6e :import::cvs::in 0590: 74 65 67 72 69 74 79 20 20 20 20 20 20 20 20 3b tegrity ; 05a0: 20 23 20 53 74 61 74 65 20 69 6e 74 65 67 72 69 # State integri 05b0: 74 79 20 63 68 65 63 6b 73 2e 0a 70 61 63 6b 61 ty checks..packa 05c0: 67 65 20 72 65 71 75 69 72 65 20 76 63 3a 3a 66 ge require vc::f 05d0: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 ossil::import::c 05e0: 76 73 3a 3a 70 72 6f 6a 65 63 74 3a 3a 72 65 76 vs::project::rev 05f0: 20 20 20 20 20 3b 20 23 20 50 72 6f 6a 65 63 74 ; # Project 0600: 20 6c 65 76 65 6c 20 63 68 61 6e 67 65 73 65 74 level changeset 0610: 73 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 23 s..# # ## ### ## 0620: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 ### ######## ### 0630: 23 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23 ########## ##### 0640: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0650: 0a 23 23 20 52 65 67 69 73 74 65 72 20 74 68 65 .## Register the 0660: 20 70 61 73 73 20 77 69 74 68 20 74 68 65 20 6d pass with the m 0670: 61 6e 61 67 65 6d 65 6e 74 0a 0a 76 63 3a 3a 66 anagement..vc::f 0680: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 ossil::import::c 0690: 76 73 3a 3a 70 61 73 73 20 64 65 66 69 6e 65 20 vs::pass define 06a0: 5c 0a 20 20 20 20 42 72 65 61 6b 52 65 76 43 73 \. BreakRevCs 06b0: 65 74 43 79 63 6c 65 73 20 5c 0a 20 20 20 20 7b etCycles \. { 06c0: 42 72 65 61 6b 20 52 65 76 69 73 69 6f 6e 20 43 Break Revision C 06d0: 68 61 6e 67 65 53 65 74 20 44 65 70 65 6e 64 65 hangeSet Depende 06e0: 6e 63 79 20 43 79 63 6c 65 73 7d 20 5c 0a 20 20 ncy Cycles} \. 06f0: 20 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a ::vc::fossil:: 0700: 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 61 73 import::cvs::pas 0710: 73 3a 3a 62 72 65 61 6b 72 63 79 63 6c 65 0a 0a s::breakrcycle.. 0720: 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 # # ## ### ##### 0730: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######## ###### 0740: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 ####### ######## 0750: 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 #############.## 0760: 0a 0a 73 6e 69 74 3a 3a 74 79 70 65 20 3a 3a 76 ..snit::type ::v 0770: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 c::fossil::impor 0780: 74 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a 62 72 t::cvs::pass::br 0790: 65 61 6b 72 63 79 63 6c 65 20 7b 0a 20 20 20 20 eakrcycle {. 07a0: 23 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 # # ## ### ##### 07b0: 20 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 ######## ###### 07c0: 23 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 50 #######. ## P 07d0: 75 62 6c 69 63 20 41 50 49 0a 0a 20 20 20 20 74 ublic API.. t 07e0: 79 70 65 6d 65 74 68 6f 64 20 73 65 74 75 70 20 ypemethod setup 07f0: 7b 7d 20 7b 0a 09 23 20 44 65 66 69 6e 65 20 74 {} {..# Define t 0800: 68 65 20 6e 61 6d 65 73 20 61 6e 64 20 73 74 72 he names and str 0810: 75 63 74 75 72 65 20 6f 66 20 74 68 65 20 70 65 ucture of the pe 0820: 72 73 69 73 74 65 6e 74 20 73 74 61 74 65 20 6f rsistent state o 0830: 66 0a 09 23 20 74 68 69 73 20 70 61 73 73 2e 0a f..# this pass.. 0840: 0a 09 73 74 61 74 65 20 72 65 61 64 69 6e 67 20 ..state reading 0850: 72 65 76 69 73 69 6f 6e 0a 09 73 74 61 74 65 20 revision..state 0860: 72 65 61 64 69 6e 67 20 63 68 61 6e 67 65 73 65 reading changese 0870: 74 0a 09 73 74 61 74 65 20 72 65 61 64 69 6e 67 t..state reading 0880: 20 63 73 69 74 65 6d 0a 09 72 65 74 75 72 6e 0a csitem..return. 0890: 20 20 20 20 7d 0a 0a 20 20 20 20 74 79 70 65 6d }.. typem 08a0: 65 74 68 6f 64 20 6c 6f 61 64 20 7b 7d 20 7b 0a ethod load {} {. 08b0: 09 23 20 50 61 73 73 20 6d 61 6e 61 67 65 72 20 .# Pass manager 08c0: 69 6e 74 65 72 66 61 63 65 2e 20 45 78 65 63 75 interface. Execu 08d0: 74 65 64 20 74 6f 20 6c 6f 61 64 20 64 61 74 61 ted to load data 08e0: 20 63 6f 6d 70 75 74 65 64 20 62 79 0a 09 23 20 computed by..# 08f0: 74 68 69 73 20 70 61 73 73 20 69 6e 74 6f 20 6d this pass into m 0900: 65 6d 6f 72 79 20 77 68 65 6e 20 74 68 69 73 20 emory when this 0910: 70 61 73 73 20 69 73 20 73 6b 69 70 70 65 64 20 pass is skipped 0920: 69 6e 73 74 65 61 64 20 6f 66 0a 09 23 20 65 78 instead of..# ex 0930: 65 63 75 74 65 64 2e 0a 09 72 65 74 75 72 6e 0a ecuted...return. 0940: 20 20 20 20 7d 0a 0a 20 20 20 20 74 79 70 65 6d }.. typem 0950: 65 74 68 6f 64 20 72 75 6e 20 7b 7d 20 7b 0a 09 ethod run {} {.. 0960: 23 20 50 61 73 73 20 6d 61 6e 61 67 65 72 20 69 # Pass manager i 0970: 6e 74 65 72 66 61 63 65 2e 20 45 78 65 63 75 74 nterface. Execut 0980: 65 64 20 74 6f 20 70 65 72 66 6f 72 6d 20 74 68 ed to perform th 0990: 65 0a 09 23 20 66 75 6e 63 74 69 6f 6e 61 6c 69 e..# functionali 09a0: 74 79 20 6f 66 20 74 68 65 20 70 61 73 73 2e 0a ty of the pass.. 09b0: 0a 09 63 79 63 6c 65 62 72 65 61 6b 65 72 20 62 ..cyclebreaker b 09c0: 72 65 61 6b 63 6d 64 20 7b 3a 3a 76 63 3a 3a 66 reakcmd {::vc::f 09d0: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 ossil::import::c 09e0: 76 73 3a 3a 63 79 63 6c 65 62 72 65 61 6b 65 72 vs::cyclebreaker 09f0: 20 62 72 65 61 6b 7d 0a 0a 09 73 74 61 74 65 20 break}...state 0a00: 74 72 61 6e 73 61 63 74 69 6f 6e 20 7b 0a 09 20 transaction {.. 0a10: 20 20 20 63 79 63 6c 65 62 72 65 61 6b 65 72 20 cyclebreaker 0a20: 72 75 6e 20 62 72 65 61 6b 2d 72 65 76 20 5b 6d run break-rev [m 0a30: 79 70 72 6f 63 20 43 68 61 6e 67 65 73 65 74 73 yproc Changesets 0a40: 5d 0a 09 7d 0a 0a 09 72 65 70 6f 73 69 74 6f 72 ]..}...repositor 0a50: 79 20 70 72 69 6e 74 63 73 65 74 73 74 61 74 69 y printcsetstati 0a60: 73 74 69 63 73 0a 09 69 6e 74 65 67 72 69 74 79 stics..integrity 0a70: 20 63 68 61 6e 67 65 73 65 74 73 0a 09 72 65 74 changesets..ret 0a80: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 74 urn. }.. t 0a90: 79 70 65 6d 65 74 68 6f 64 20 64 69 73 63 61 72 ypemethod discar 0aa0: 64 20 7b 7d 20 7b 0a 09 23 20 50 61 73 73 20 6d d {} {..# Pass m 0ab0: 61 6e 61 67 65 72 20 69 6e 74 65 72 66 61 63 65 anager interface 0ac0: 2e 20 45 78 65 63 75 74 65 64 20 66 6f 72 20 61 . Executed for a 0ad0: 6c 6c 20 70 61 73 73 65 73 20 61 66 74 65 72 20 ll passes after 0ae0: 74 68 65 0a 09 23 20 72 75 6e 20 70 61 73 73 65 the..# run passe 0af0: 73 2c 20 74 6f 20 72 65 6d 6f 76 65 20 61 6c 6c s, to remove all 0b00: 20 64 61 74 61 20 6f 66 20 74 68 69 73 20 70 61 data of this pa 0b10: 73 73 20 66 72 6f 6d 20 74 68 65 20 73 74 61 74 ss from the stat 0b20: 65 2c 0a 09 23 20 61 73 20 62 65 69 6e 67 20 6f e,..# as being o 0b30: 75 74 20 6f 66 20 64 61 74 65 2e 0a 09 72 65 74 ut of date...ret 0b40: 75 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 urn. }.. # 0b50: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 # ## ### ##### 0b60: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 ######## ####### 0b70: 23 23 23 23 23 23 0a 20 20 20 20 23 23 20 49 6e ######. ## In 0b80: 74 65 72 6e 61 6c 20 6d 65 74 68 6f 64 73 0a 0a ternal methods.. 0b90: 20 20 20 20 70 72 6f 63 20 43 68 61 6e 67 65 73 proc Changes 0ba0: 65 74 73 20 7b 7d 20 7b 0a 09 6c 6f 67 20 77 72 ets {} {..log wr 0bb0: 69 74 65 20 32 20 62 72 65 61 6b 72 63 79 63 6c ite 2 breakrcycl 0bc0: 65 20 7b 53 65 6c 65 63 74 69 6e 67 20 74 68 65 e {Selecting the 0bd0: 20 72 65 76 69 73 69 6f 6e 20 63 68 61 6e 67 65 revision change 0be0: 73 65 74 73 7d 0a 09 72 65 74 75 72 6e 20 5b 70 sets}..return [p 0bf0: 72 6f 6a 65 63 74 3a 3a 72 65 76 20 72 65 76 5d roject::rev rev] 0c00: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 23 20 . }.. # # 0c10: 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23 ## ### ##### ### 0c20: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23 ##### ########## 0c30: 23 23 23 0a 20 20 20 20 23 23 20 43 6f 6e 66 69 ###. ## Confi 0c40: 67 75 72 61 74 69 6f 6e 0a 0a 20 20 20 20 70 72 guration.. pr 0c50: 61 67 6d 61 20 2d 68 61 73 69 6e 73 74 61 6e 63 agma -hasinstanc 0c60: 65 73 20 20 20 6e 6f 20 3b 20 23 20 73 69 6e 67 es no ; # sing 0c70: 6c 65 74 6f 6e 0a 20 20 20 20 70 72 61 67 6d 61 leton. pragma 0c80: 20 2d 68 61 73 74 79 70 65 69 6e 66 6f 20 20 20 -hastypeinfo 0c90: 20 6e 6f 20 3b 20 23 20 6e 6f 20 69 6e 74 72 6f no ; # no intro 0ca0: 73 70 65 63 74 69 6f 6e 0a 20 20 20 20 70 72 61 spection. pra 0cb0: 67 6d 61 20 2d 68 61 73 74 79 70 65 64 65 73 74 gma -hastypedest 0cc0: 72 6f 79 20 6e 6f 20 3b 20 23 20 69 6d 6d 6f 72 roy no ; # immor 0cd0: 74 61 6c 0a 0a 20 20 20 20 23 20 23 20 23 23 20 tal.. # # ## 0ce0: 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23 ### ##### ###### 0cf0: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23 ## ############# 0d00: 0a 7d 0a 0a 6e 61 6d 65 73 70 61 63 65 20 65 76 .}..namespace ev 0d10: 61 6c 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a al ::vc::fossil: 0d20: 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 61 :import::cvs::pa 0d30: 73 73 20 7b 0a 20 20 20 20 6e 61 6d 65 73 70 61 ss {. namespa 0d40: 63 65 20 65 78 70 6f 72 74 20 62 72 65 61 6b 72 ce export breakr 0d50: 63 79 63 6c 65 0a 20 20 20 20 6e 61 6d 65 73 70 cycle. namesp 0d60: 61 63 65 20 65 76 61 6c 20 62 72 65 61 6b 72 63 ace eval breakrc 0d70: 79 63 6c 65 20 7b 0a 09 6e 61 6d 65 73 70 61 63 ycle {..namespac 0d80: 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 66 e import ::vc::f 0d90: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 ossil::import::c 0da0: 76 73 3a 3a 63 79 63 6c 65 62 72 65 61 6b 65 72 vs::cyclebreaker 0db0: 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f ..namespace impo 0dc0: 72 74 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a rt ::vc::fossil: 0dd0: 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 72 65 :import::cvs::re 0de0: 70 6f 73 69 74 6f 72 79 0a 09 6e 61 6d 65 73 70 pository..namesp 0df0: 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a ace import ::vc: 0e00: 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a :fossil::import: 0e10: 3a 63 76 73 3a 3a 73 74 61 74 65 0a 09 6e 61 6d :cvs::state..nam 0e20: 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a espace import :: 0e30: 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f vc::fossil::impo 0e40: 72 74 3a 3a 63 76 73 3a 3a 69 6e 74 65 67 72 69 rt::cvs::integri 0e50: 74 79 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 76 ty..namespace ev 0e60: 61 6c 20 70 72 6f 6a 65 63 74 20 7b 0a 09 20 20 al project {.. 0e70: 20 20 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f namespace impo 0e80: 72 74 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a rt ::vc::fossil: 0e90: 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 72 :import::cvs::pr 0ea0: 6f 6a 65 63 74 3a 3a 72 65 76 0a 09 7d 0a 09 6e oject::rev..}..n 0eb0: 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 amespace import 0ec0: 3a 3a 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6c 6f 67 ::vc::tools::log 0ed0: 0a 09 6c 6f 67 20 72 65 67 69 73 74 65 72 20 62 ..log register b 0ee0: 72 65 61 6b 72 63 79 63 6c 65 0a 20 20 20 20 7d reakrcycle. } 0ef0: 0a 7d 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 .}..# # ## ### # 0f00: 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 #### ######## ## 0f10: 23 23 23 23 23 23 23 23 23 23 23 20 23 23 23 23 ########### #### 0f20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0f30: 23 0a 23 23 20 52 65 61 64 79 0a 0a 70 61 63 6b #.## Ready..pack 0f40: 61 67 65 20 70 72 6f 76 69 64 65 20 76 63 3a 3a age provide vc:: 0f50: 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a fossil::import:: 0f60: 63 76 73 3a 3a 70 61 73 73 3a 3a 62 72 65 61 6b cvs::pass::break 0f70: 72 63 79 63 6c 65 20 31 2e 30 0a 72 65 74 75 72 rcycle 1.0.retur 0f80: 6e 0a n.