Hex Artifact Content
Not logged in

Artifact e94461c91ba2520d7bbf8d0ba055b050eeecfdf2:

File tools/cvs2fossil/lib/c2f_pbreakscycle.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 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 73 79 6d 62 6f 6c 20 62 61 73  et of symbol bas
0230: 65 64 20 63 68 61 6e 67 65 73 65 74 73 0a 23 23  ed changesets.##
0240: 20 61 6e 64 20 62 72 65 61 6b 73 20 61 6c 6c 20   and breaks all 
0250: 64 65 70 65 6e 64 65 6e 63 79 20 63 79 63 6c 65  dependency cycle
0260: 73 20 74 68 65 79 20 6d 61 79 20 62 65 20 69 6e  s they may be in
0270: 2e 20 57 65 20 6e 65 65 64 20 61 0a 23 23 20 64  . We need a.## d
0280: 65 70 65 6e 64 65 6e 63 79 20 74 72 65 65 2e 20  ependency tree. 
0290: 49 64 65 6e 74 69 63 61 6c 20 74 6f 20 70 61 73  Identical to pas
02a0: 73 20 56 49 2c 20 65 78 63 65 70 74 20 66 6f 72  s VI, except for
02b0: 20 74 68 65 20 73 65 6c 65 63 74 69 6f 6e 20 6f   the selection o
02c0: 66 0a 23 23 20 74 68 65 20 63 68 61 6e 67 65 73  f.## the changes
02d0: 65 74 73 2e 0a 0a 23 20 23 20 23 23 20 23 23 23  ets...# # ## ###
02e0: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20   ##### ######## 
02f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 20 23 23  ############# ##
0300: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0310: 23 23 23 0a 23 23 20 52 65 71 75 69 72 65 6d 65  ###.## Requireme
0320: 6e 74 73 0a 0a 70 61 63 6b 61 67 65 20 72 65 71  nts..package req
0330: 75 69 72 65 20 54 63 6c 20 38 2e 34 20 20 20 20  uire 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 3b                 ;
0360: 20 23 20 52 65 71 75 69 72 65 64 20 72 75 6e 74   # Required runt
0370: 69 6d 65 2e 0a 70 61 63 6b 61 67 65 20 72 65 71  ime..package req
0380: 75 69 72 65 20 73 6e 69 74 20 20 20 20 20 20 20  uire 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 3b                 ;
03b0: 20 23 20 4f 4f 20 73 79 73 74 65 6d 2e 0a 70 61   # OO system..pa
03c0: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 73 74  ckage require st
03d0: 72 75 63 74 3a 3a 6c 69 73 74 20 20 20 20 20 20  ruct::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 3b 20 23 20 48 69 67 68          ; # High
0400: 65 72 20 6f 72 64 65 72 20 6c 69 73 74 20 6f 70  er order list op
0410: 65 72 61 74 69 6f 6e 73 2e 0a 70 61 63 6b 61 67  erations..packag
0420: 65 20 72 65 71 75 69 72 65 20 76 63 3a 3a 66 6f  e require vc::fo
0430: 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76  ssil::import::cv
0440: 73 3a 3a 63 79 63 6c 65 62 72 65 61 6b 65 72 20  s::cyclebreaker 
0450: 20 20 20 20 3b 20 23 20 42 72 65 61 6b 69 6e 67      ; # Breaking
0460: 20 64 65 70 65 6e 64 65 6e 63 79 20 63 79 63 6c   dependency cycl
0470: 65 73 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 75  es..package requ
0480: 69 72 65 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a  ire vc::fossil::
0490: 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 72 65 70  import::cvs::rep
04a0: 6f 73 69 74 6f 72 79 20 20 20 20 20 20 20 3b 20  ository       ; 
04b0: 23 20 52 65 70 6f 73 69 74 6f 72 79 20 6d 61 6e  # Repository man
04c0: 61 67 65 6d 65 6e 74 2e 0a 70 61 63 6b 61 67 65  agement..package
04d0: 20 72 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73   require vc::fos
04e0: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73  sil::import::cvs
04f0: 3a 3a 73 74 61 74 65 20 20 20 20 20 20 20 20 20  ::state         
0500: 20 20 20 3b 20 23 20 53 74 61 74 65 20 73 74 6f     ; # State sto
0510: 72 61 67 65 2e 0a 70 61 63 6b 61 67 65 20 72 65  rage..package re
0520: 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 73 69 6c  quire vc::fossil
0530: 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70  ::import::cvs::p
0540: 72 6f 6a 65 63 74 3a 3a 72 65 76 20 20 20 20 20  roject::rev     
0550: 3b 20 23 20 50 72 6f 6a 65 63 74 20 6c 65 76 65  ; # Project leve
0560: 6c 20 63 68 61 6e 67 65 73 65 74 73 0a 0a 23 20  l changesets..# 
0570: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23  # ## ### ##### #
0580: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23  ####### ########
0590: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23  ##### ##########
05a0: 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 20 52  ###########.## R
05b0: 65 67 69 73 74 65 72 20 74 68 65 20 70 61 73 73  egister the pass
05c0: 20 77 69 74 68 20 74 68 65 20 6d 61 6e 61 67 65   with the manage
05d0: 6d 65 6e 74 0a 0a 76 63 3a 3a 66 6f 73 73 69 6c  ment..vc::fossil
05e0: 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70  ::import::cvs::p
05f0: 61 73 73 20 64 65 66 69 6e 65 20 5c 0a 20 20 20  ass define \.   
0600: 20 42 72 65 61 6b 53 79 6d 43 73 65 74 43 79 63   BreakSymCsetCyc
0610: 6c 65 73 20 5c 0a 20 20 20 20 7b 42 72 65 61 6b  les \.    {Break
0620: 20 53 79 6d 62 6f 6c 20 43 68 61 6e 67 65 53 65   Symbol ChangeSe
0630: 74 20 44 65 70 65 6e 64 65 6e 63 79 20 43 79 63  t Dependency Cyc
0640: 6c 65 73 7d 20 5c 0a 20 20 20 20 3a 3a 76 63 3a  les} \.    ::vc:
0650: 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a  :fossil::import:
0660: 3a 63 76 73 3a 3a 70 61 73 73 3a 3a 62 72 65 61  :cvs::pass::brea
0670: 6b 73 63 79 63 6c 65 0a 0a 23 20 23 20 23 23 20  kscycle..# # ## 
0680: 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23  ### ##### ######
0690: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23  ## #############
06a0: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23   ###############
06b0: 23 23 23 23 23 23 0a 23 23 20 0a 0a 73 6e 69 74  ######.## ..snit
06c0: 3a 3a 74 79 70 65 20 3a 3a 76 63 3a 3a 66 6f 73  ::type ::vc::fos
06d0: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73  sil::import::cvs
06e0: 3a 3a 70 61 73 73 3a 3a 62 72 65 61 6b 73 63 79  ::pass::breakscy
06f0: 63 6c 65 20 7b 0a 20 20 20 20 23 20 23 20 23 23  cle {.    # # ##
0700: 20 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23   ### ##### #####
0710: 23 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23  ### ############
0720: 23 0a 20 20 20 20 23 23 20 50 75 62 6c 69 63 20  #.    ## Public 
0730: 41 50 49 0a 0a 20 20 20 20 74 79 70 65 6d 65 74  API..    typemet
0740: 68 6f 64 20 73 65 74 75 70 20 7b 7d 20 7b 0a 09  hod setup {} {..
0750: 23 20 44 65 66 69 6e 65 20 74 68 65 20 6e 61 6d  # Define the nam
0760: 65 73 20 61 6e 64 20 73 74 72 75 63 74 75 72 65  es and structure
0770: 20 6f 66 20 74 68 65 20 70 65 72 73 69 73 74 65   of the persiste
0780: 6e 74 20 73 74 61 74 65 20 6f 66 0a 09 23 20 74  nt state of..# t
0790: 68 69 73 20 70 61 73 73 2e 0a 0a 09 73 74 61 74  his pass....stat
07a0: 65 20 72 65 61 64 69 6e 67 20 72 65 76 69 73 69  e reading revisi
07b0: 6f 6e 0a 09 73 74 61 74 65 20 72 65 61 64 69 6e  on..state readin
07c0: 67 20 63 68 61 6e 67 65 73 65 74 0a 09 73 74 61  g changeset..sta
07d0: 74 65 20 72 65 61 64 69 6e 67 20 63 73 72 65 76  te reading csrev
07e0: 69 73 69 6f 6e 0a 09 72 65 74 75 72 6e 0a 20 20  ision..return.  
07f0: 20 20 7d 0a 0a 20 20 20 20 74 79 70 65 6d 65 74    }..    typemet
0800: 68 6f 64 20 6c 6f 61 64 20 7b 7d 20 7b 0a 09 23  hod load {} {..#
0810: 20 50 61 73 73 20 6d 61 6e 61 67 65 72 20 69 6e   Pass manager in
0820: 74 65 72 66 61 63 65 2e 20 45 78 65 63 75 74 65  terface. Execute
0830: 64 20 74 6f 20 6c 6f 61 64 20 64 61 74 61 20 63  d to load data c
0840: 6f 6d 70 75 74 65 64 20 62 79 0a 09 23 20 74 68  omputed by..# th
0850: 69 73 20 70 61 73 73 20 69 6e 74 6f 20 6d 65 6d  is pass into mem
0860: 6f 72 79 20 77 68 65 6e 20 74 68 69 73 20 70 61  ory when this pa
0870: 73 73 20 69 73 20 73 6b 69 70 70 65 64 20 69 6e  ss is skipped in
0880: 73 74 65 61 64 20 6f 66 0a 09 23 20 65 78 65 63  stead of..# exec
0890: 75 74 65 64 2e 0a 09 72 65 74 75 72 6e 0a 20 20  uted...return.  
08a0: 20 20 7d 0a 0a 20 20 20 20 74 79 70 65 6d 65 74    }..    typemet
08b0: 68 6f 64 20 72 75 6e 20 7b 7d 20 7b 0a 09 23 20  hod run {} {..# 
08c0: 50 61 73 73 20 6d 61 6e 61 67 65 72 20 69 6e 74  Pass manager int
08d0: 65 72 66 61 63 65 2e 20 45 78 65 63 75 74 65 64  erface. Executed
08e0: 20 74 6f 20 70 65 72 66 6f 72 6d 20 74 68 65 0a   to perform the.
08f0: 09 23 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79  .# functionality
0900: 20 6f 66 20 74 68 65 20 70 61 73 73 2e 0a 0a 09   of the pass....
0910: 73 65 74 20 63 68 61 6e 67 65 73 65 74 73 20 5b  set changesets [
0920: 73 74 72 75 63 74 3a 3a 6c 69 73 74 20 66 69 6c  struct::list fil
0930: 74 65 72 20 5b 70 72 6f 6a 65 63 74 3a 3a 72 65  ter [project::re
0940: 76 20 61 6c 6c 5d 20 5b 6d 79 70 72 6f 63 20 49  v all] [myproc I
0950: 73 42 79 53 79 6d 62 6f 6c 5d 5d 0a 09 63 79 63  sBySymbol]]..cyc
0960: 6c 65 62 72 65 61 6b 65 72 20 64 6f 74 20 62 72  lebreaker dot br
0970: 65 61 6b 2d 73 79 6d 2d 73 74 61 72 74 20 24 63  eak-sym-start $c
0980: 68 61 6e 67 65 73 65 74 73 0a 0a 09 73 74 61 74  hangesets...stat
0990: 65 20 74 72 61 6e 73 61 63 74 69 6f 6e 20 7b 0a  e transaction {.
09a0: 09 20 20 20 20 63 79 63 6c 65 62 72 65 61 6b 65  .    cyclebreake
09b0: 72 20 72 75 6e 20 62 72 65 61 6b 2d 73 79 6d 20  r run break-sym 
09c0: 24 63 68 61 6e 67 65 73 65 74 73 0a 09 7d 0a 0a  $changesets..}..
09d0: 09 73 65 74 20 63 68 61 6e 67 65 73 65 74 73 20  .set changesets 
09e0: 5b 73 74 72 75 63 74 3a 3a 6c 69 73 74 20 66 69  [struct::list fi
09f0: 6c 74 65 72 20 5b 70 72 6f 6a 65 63 74 3a 3a 72  lter [project::r
0a00: 65 76 20 61 6c 6c 5d 20 5b 6d 79 70 72 6f 63 20  ev all] [myproc 
0a10: 49 73 42 79 53 79 6d 62 6f 6c 5d 5d 0a 09 63 79  IsBySymbol]]..cy
0a20: 63 6c 65 62 72 65 61 6b 65 72 20 64 6f 74 20 62  clebreaker dot b
0a30: 72 65 61 6b 2d 73 79 6d 2d 64 6f 6e 65 20 24 63  reak-sym-done $c
0a40: 68 61 6e 67 65 73 65 74 73 0a 0a 09 72 65 70 6f  hangesets...repo
0a50: 73 69 74 6f 72 79 20 70 72 69 6e 74 63 73 65 74  sitory printcset
0a60: 73 74 61 74 69 73 74 69 63 73 0a 09 72 65 74 75  statistics..retu
0a70: 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 74 79  rn.    }..    ty
0a80: 70 65 6d 65 74 68 6f 64 20 64 69 73 63 61 72 64  pemethod discard
0a90: 20 7b 7d 20 7b 0a 09 23 20 50 61 73 73 20 6d 61   {} {..# Pass ma
0aa0: 6e 61 67 65 72 20 69 6e 74 65 72 66 61 63 65 2e  nager interface.
0ab0: 20 45 78 65 63 75 74 65 64 20 66 6f 72 20 61 6c   Executed for al
0ac0: 6c 20 70 61 73 73 65 73 20 61 66 74 65 72 20 74  l passes after t
0ad0: 68 65 0a 09 23 20 72 75 6e 20 70 61 73 73 65 73  he..# run passes
0ae0: 2c 20 74 6f 20 72 65 6d 6f 76 65 20 61 6c 6c 20  , to remove all 
0af0: 64 61 74 61 20 6f 66 20 74 68 69 73 20 70 61 73  data of this pas
0b00: 73 20 66 72 6f 6d 20 74 68 65 20 73 74 61 74 65  s from the state
0b10: 2c 0a 09 23 20 61 73 20 62 65 69 6e 67 20 6f 75  ,..# as being ou
0b20: 74 20 6f 66 20 64 61 74 65 2e 0a 09 72 65 74 75  t of date...retu
0b30: 72 6e 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20  rn.    }..    # 
0b40: 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20 23  # ## ### ##### #
0b50: 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23  ####### ########
0b60: 23 23 23 23 23 0a 20 20 20 20 23 23 20 49 6e 74  #####.    ## Int
0b70: 65 72 6e 61 6c 20 6d 65 74 68 6f 64 73 0a 0a 20  ernal methods.. 
0b80: 20 20 20 70 72 6f 63 20 49 73 42 79 53 79 6d 62     proc IsBySymb
0b90: 6f 6c 20 7b 63 73 65 74 7d 20 7b 20 24 63 73 65  ol {cset} { $cse
0ba0: 74 20 62 79 73 79 6d 62 6f 6c 20 7d 0a 0a 20 20  t bysymbol }..  
0bb0: 20 20 23 20 23 20 23 23 20 23 23 23 20 23 23 23    # # ## ### ###
0bc0: 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23  ## ######## ####
0bd0: 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 23  #########.    ##
0be0: 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0a 0a   Configuration..
0bf0: 20 20 20 20 70 72 61 67 6d 61 20 2d 68 61 73 69      pragma -hasi
0c00: 6e 73 74 61 6e 63 65 73 20 20 20 6e 6f 20 3b 20  nstances   no ; 
0c10: 23 20 73 69 6e 67 6c 65 74 6f 6e 0a 20 20 20 20  # singleton.    
0c20: 70 72 61 67 6d 61 20 2d 68 61 73 74 79 70 65 69  pragma -hastypei
0c30: 6e 66 6f 20 20 20 20 6e 6f 20 3b 20 23 20 6e 6f  nfo    no ; # no
0c40: 20 69 6e 74 72 6f 73 70 65 63 74 69 6f 6e 0a 20   introspection. 
0c50: 20 20 20 70 72 61 67 6d 61 20 2d 68 61 73 74 79     pragma -hasty
0c60: 70 65 64 65 73 74 72 6f 79 20 6e 6f 20 3b 20 23  pedestroy no ; #
0c70: 20 69 6d 6d 6f 72 74 61 6c 0a 0a 20 20 20 20 23   immortal..    #
0c80: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20   # ## ### ##### 
0c90: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23  ######## #######
0ca0: 23 23 23 23 23 23 0a 7d 0a 0a 6e 61 6d 65 73 70  ######.}..namesp
0cb0: 61 63 65 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 66  ace eval ::vc::f
0cc0: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63  ossil::import::c
0cd0: 76 73 3a 3a 70 61 73 73 20 7b 0a 20 20 20 20 6e  vs::pass {.    n
0ce0: 61 6d 65 73 70 61 63 65 20 65 78 70 6f 72 74 20  amespace export 
0cf0: 62 72 65 61 6b 73 63 79 63 6c 65 0a 20 20 20 20  breakscycle.    
0d00: 6e 61 6d 65 73 70 61 63 65 20 65 76 61 6c 20 62  namespace eval b
0d10: 72 65 61 6b 73 63 79 63 6c 65 20 7b 0a 09 6e 61  reakscycle {..na
0d20: 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a  mespace import :
0d30: 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70  :vc::fossil::imp
0d40: 6f 72 74 3a 3a 63 76 73 3a 3a 63 79 63 6c 65 62  ort::cvs::cycleb
0d50: 72 65 61 6b 65 72 0a 09 6e 61 6d 65 73 70 61 63  reaker..namespac
0d60: 65 20 69 6d 70 6f 72 74 20 3a 3a 76 63 3a 3a 66  e import ::vc::f
0d70: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63  ossil::import::c
0d80: 76 73 3a 3a 72 65 70 6f 73 69 74 6f 72 79 0a 09  vs::repository..
0d90: 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72 74  namespace import
0da0: 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69   ::vc::fossil::i
0db0: 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 73 74 61 74  mport::cvs::stat
0dc0: 65 0a 09 6e 61 6d 65 73 70 61 63 65 20 65 76 61  e..namespace eva
0dd0: 6c 20 70 72 6f 6a 65 63 74 20 7b 0a 09 20 20 20  l project {..   
0de0: 20 6e 61 6d 65 73 70 61 63 65 20 69 6d 70 6f 72   namespace impor
0df0: 74 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a  t ::vc::fossil::
0e00: 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 72 6f  import::cvs::pro
0e10: 6a 65 63 74 3a 3a 72 65 76 0a 09 7d 0a 20 20 20  ject::rev..}.   
0e20: 20 7d 0a 7d 0a 0a 23 20 23 20 23 23 20 23 23 23   }.}..# # ## ###
0e30: 20 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20   ##### ######## 
0e40: 23 23 23 23 23 23 23 23 23 23 23 23 23 20 23 23  ############# ##
0e50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0e60: 23 23 23 0a 23 23 20 52 65 61 64 79 0a 0a 70 61  ###.## Ready..pa
0e70: 63 6b 61 67 65 20 70 72 6f 76 69 64 65 20 76 63  ckage provide vc
0e80: 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74  ::fossil::import
0e90: 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a 62 72 65  ::cvs::pass::bre
0ea0: 61 6b 73 63 79 63 6c 65 20 31 2e 30 0a 72 65 74  akscycle 1.0.ret
0eb0: 75 72 6e 0a                                      urn.