Hex Artifact Content
Not logged in

Artifact fb15e077e1d7048710b1d0a26c540bdf2aa6c4d9:

File tools/cvs2fossil/lib/cvs2fossil.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 4d 61 69  ########..## Mai
0200: 6e 20 70 61 63 6b 61 67 65 20 6f 66 20 74 68 65  n package of the
0210: 20 63 76 73 20 63 6f 6e 76 65 72 73 69 6f 6e 2f   cvs conversion/
0220: 69 6d 70 6f 72 74 20 66 61 63 69 6c 69 74 79 2e  import facility.
0230: 20 4c 6f 61 64 73 20 74 68 65 0a 23 23 20 72 65   Loads the.## re
0240: 71 75 69 72 65 64 20 70 69 65 63 65 73 20 61 6e  quired pieces an
0250: 64 20 63 6f 6e 74 72 6f 6c 73 20 74 68 65 69 72  d controls their
0260: 20 69 6e 74 65 72 61 63 74 69 6f 6e 2e 0a 0a 23   interaction...#
0270: 20 23 20 23 23 20 23 23 23 20 23 23 23 23 23 20   # ## ### ##### 
0280: 23 23 23 23 23 23 23 23 20 23 23 23 23 23 23 23  ######## #######
0290: 23 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23  ###### #########
02a0: 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 23 20  ############.## 
02b0: 52 65 71 75 69 72 65 6d 65 6e 74 73 0a 0a 70 61  Requirements..pa
02c0: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 54 63  ckage require Tc
02d0: 6c 20 38 2e 34 20 20 20 20 20 20 20 20 20 20 20  l 8.4           
02e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20                ; 
02f0: 23 20 52 65 71 75 69 72 65 64 20 72 75 6e 74 69  # Required runti
0300: 6d 65 2e 0a 70 61 63 6b 61 67 65 20 72 65 71 75  me..package requ
0310: 69 72 65 20 73 6e 69 74 20 20 20 20 20 20 20 20  ire snit        
0320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0330: 20 20 20 20 3b 20 23 20 4f 4f 20 73 79 73 74 65      ; # OO syste
0340: 6d 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23 23  m..# # ## ### ##
0350: 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23  ### ######## ###
0360: 23 23 23 23 23 23 23 23 23 23 20 23 23 23 23 23  ########## #####
0370: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0380: 0a 23 23 20 50 61 73 73 65 73 2e 20 54 68 65 20  .## Passes. The 
0390: 6f 72 64 65 72 20 69 6e 20 77 68 69 63 68 20 74  order in which t
03a0: 68 65 20 76 61 72 69 6f 75 73 20 70 61 73 73 65  he various passe
03b0: 73 20 61 72 65 20 6c 6f 61 64 65 64 20 69 73 0a  s are loaded is.
03c0: 23 23 20 20 20 20 20 20 20 20 20 69 6d 70 6f 72  ##         impor
03d0: 74 61 6e 74 2e 20 49 74 20 69 73 20 74 68 65 20  tant. It is the 
03e0: 73 61 6d 65 20 6f 72 64 65 72 20 69 6e 20 77 68  same order in wh
03f0: 69 63 68 20 74 68 65 79 20 77 69 6c 6c 0a 23 23  ich they will.##
0400: 20 20 20 20 20 20 20 20 20 72 65 67 69 73 74 65           registe
0410: 72 2c 20 61 6e 64 20 74 68 65 6e 20 62 65 20 72  r, and then be r
0420: 75 6e 20 69 6e 2e 0a 0a 70 61 63 6b 61 67 65 20  un in...package 
0430: 72 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 73  require vc::foss
0440: 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a  il::import::cvs:
0450: 3a 70 61 73 73 3a 3a 63 6f 6c 6c 61 72 20 20 20  :pass::collar   
0460: 20 20 20 3b 20 23 20 43 6f 6c 6c 27 65 63 74 20     ; # Coll'ect 
0470: 41 72 27 63 68 69 76 65 73 2e 0a 70 61 63 6b 61  Ar'chives..packa
0480: 67 65 20 72 65 71 75 69 72 65 20 76 63 3a 3a 66  ge require vc::f
0490: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63  ossil::import::c
04a0: 76 73 3a 3a 70 61 73 73 3a 3a 63 6f 6c 6c 72 65  vs::pass::collre
04b0: 76 20 20 20 20 20 3b 20 23 20 43 6f 6c 6c 27 65  v     ; # Coll'e
04c0: 63 74 20 52 65 76 27 69 73 69 6f 6e 73 2e 0a 70  ct Rev'isions..p
04d0: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 76  ackage require v
04e0: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72  c::fossil::impor
04f0: 74 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a 63 6f  t::cvs::pass::co
0500: 6c 6c 73 79 6d 20 20 20 20 20 3b 20 23 20 43 6f  llsym     ; # Co
0510: 6c 6c 27 61 74 65 20 53 79 6d 27 62 6f 6c 73 0a  ll'ate Sym'bols.
0520: 70 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20  package require 
0530: 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f  vc::fossil::impo
0540: 72 74 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a 66  rt::cvs::pass::f
0550: 69 6c 74 65 72 73 79 6d 20 20 20 3b 20 23 20 46  iltersym   ; # F
0560: 69 6c 74 65 72 27 20 20 53 79 6d 27 62 6f 6c 73  ilter'  Sym'bols
0570: 0a 0a 23 20 4e 6f 74 65 3a 20 63 76 73 32 73 76  ..# Note: cvs2sv
0580: 6e 27 73 20 53 6f 72 74 52 65 76 69 73 69 6f 6e  n's SortRevision
0590: 53 75 6d 6d 61 72 79 50 61 73 73 20 61 6e 64 20  SummaryPass and 
05a0: 53 6f 72 74 53 79 6d 62 6f 6c 53 75 6d 6d 61 72  SortSymbolSummar
05b0: 79 50 61 73 73 0a 23 20 20 20 20 20 20 20 61 72  yPass.#       ar
05c0: 65 20 6e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65  e not implemente
05d0: 64 20 62 79 20 75 73 2e 20 54 68 65 79 20 61 72  d by us. They ar
05e0: 65 20 69 72 72 65 6c 65 76 61 6e 74 20 64 75 65  e irrelevant due
05f0: 20 74 6f 20 6f 75 72 20 75 73 65 0a 23 20 20 20   to our use.#   
0600: 20 20 20 20 6f 66 20 61 20 72 65 6c 61 74 69 6f      of a relatio
0610: 6e 61 6c 20 64 61 74 61 62 61 73 65 20 70 72 6f  nal database pro
0620: 70 65 72 20 66 6f 72 20 74 68 65 20 70 65 72 73  per for the pers
0630: 69 73 74 65 6e 74 20 73 74 61 74 65 2c 0a 23 20  istent state,.# 
0640: 20 20 20 20 20 20 61 6c 6c 6f 77 69 6e 67 20 75        allowing u
0650: 73 20 74 6f 20 73 6f 72 74 20 74 68 65 20 64 61  s to sort the da
0660: 74 61 20 6f 6e 20 74 68 65 20 66 6c 79 20 61 73  ta on the fly as
0670: 20 77 65 20 6e 65 65 64 20 69 74 2e 0a 0a 70 61   we need it...pa
0680: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 76 63  ckage require vc
0690: 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74  ::fossil::import
06a0: 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a 69 6e 69  ::cvs::pass::ini
06b0: 74 63 73 65 74 73 20 20 20 3b 20 23 20 49 6e 69  tcsets   ; # Ini
06c0: 74 27 69 61 6c 69 7a 65 20 43 27 68 61 6e 67 65  t'ialize C'hange
06d0: 27 53 65 74 73 0a 70 61 63 6b 61 67 65 20 72 65  'Sets.package re
06e0: 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 73 69 6c  quire vc::fossil
06f0: 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70  ::import::cvs::p
0700: 61 73 73 3a 3a 63 73 65 74 64 65 70 73 20 20 20  ass::csetdeps   
0710: 20 3b 20 23 20 43 27 68 61 6e 67 65 27 53 65 74   ; # C'hange'Set
0720: 20 44 65 70 27 65 6e 64 65 6e 63 69 65 73 0a 70   Dep'endencies.p
0730: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 76  ackage require v
0740: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72  c::fossil::impor
0750: 74 3a 3a 63 76 73 3a 3a 70 61 73 73 3a 3a 62 72  t::cvs::pass::br
0760: 65 61 6b 72 63 79 63 6c 65 20 3b 20 23 20 42 72  eakrcycle ; # Br
0770: 65 61 6b 27 20 52 27 65 76 69 73 69 6f 6e 20 43  eak' R'evision C
0780: 79 63 6c 65 27 73 0a 70 61 63 6b 61 67 65 20 72  ycle's.package r
0790: 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73 73 69  equire vc::fossi
07a0: 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a  l::import::cvs::
07b0: 70 61 73 73 3a 3a 72 74 6f 70 73 6f 72 74 20 20  pass::rtopsort  
07c0: 20 20 3b 20 23 20 52 27 65 76 69 73 69 6f 6e 20    ; # R'evision 
07d0: 54 6f 70 27 6f 6c 6f 67 69 63 61 6c 20 53 6f 72  Top'ological Sor
07e0: 74 27 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69  t'.package requi
07f0: 72 65 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69  re vc::fossil::i
0800: 6d 70 6f 72 74 3a 3a 63 76 73 3a 3a 70 61 73 73  mport::cvs::pass
0810: 3a 3a 62 72 65 61 6b 73 63 79 63 6c 65 20 3b 20  ::breakscycle ; 
0820: 23 20 42 72 65 61 6b 27 20 53 27 79 6d 62 6f 6c  # Break' S'ymbol
0830: 20 43 79 63 6c 65 27 73 0a 70 61 63 6b 61 67 65   Cycle's.package
0840: 20 72 65 71 75 69 72 65 20 76 63 3a 3a 66 6f 73   require vc::fos
0850: 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 63 76 73  sil::import::cvs
0860: 3a 3a 70 61 73 73 3a 3a 62 72 65 61 6b 61 63 79  ::pass::breakacy
0870: 63 6c 65 20 3b 20 23 20 42 72 65 61 6b 27 20 41  cle ; # Break' A
0880: 27 6c 6c 20 43 79 63 6c 65 27 73 0a 70 61 63 6b  'll Cycle's.pack
0890: 61 67 65 20 72 65 71 75 69 72 65 20 76 63 3a 3a  age require vc::
08a0: 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a  fossil::import::
08b0: 63 76 73 3a 3a 70 61 73 73 3a 3a 61 74 6f 70 73  cvs::pass::atops
08c0: 6f 72 74 20 20 20 20 3b 20 23 20 41 27 6c 6c 20  ort    ; # A'll 
08d0: 54 6f 70 27 6f 6c 6f 67 69 63 61 6c 20 53 6f 72  Top'ological Sor
08e0: 74 27 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23  t'..# # ## ### #
08f0: 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23  #### ######## ##
0900: 23 23 23 23 23 23 23 23 23 23 23 20 23 23 23 23  ########### ####
0910: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0920: 23 0a 23 23 20 53 75 70 70 6f 72 74 20 66 6f 72  #.## Support for
0930: 20 70 61 73 73 65 73 20 65 74 63 2e 0a 0a 70 61   passes etc...pa
0940: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 76 63  ckage require vc
0950: 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74  ::fossil::import
0960: 3a 3a 63 76 73 3a 3a 6f 70 74 69 6f 6e 20 3b 20  ::cvs::option ; 
0970: 23 20 43 6d 64 20 6c 69 6e 65 20 70 61 72 73 69  # Cmd line parsi
0980: 6e 67 20 26 20 64 61 74 61 62 61 73 65 0a 70 61  ng & database.pa
0990: 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 76 63  ckage require vc
09a0: 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74  ::fossil::import
09b0: 3a 3a 63 76 73 3a 3a 70 61 73 73 20 20 20 3b 20  ::cvs::pass   ; 
09c0: 23 20 50 61 73 73 20 6d 61 6e 61 67 65 6d 65 6e  # Pass managemen
09d0: 74 0a 70 61 63 6b 61 67 65 20 72 65 71 75 69 72  t.package requir
09e0: 65 20 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6c 6f 67  e vc::tools::log
09f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0a00: 20 20 3b 20 23 20 55 73 65 72 20 66 65 65 64 62    ; # User feedb
0a10: 61 63 6b 0a 0a 23 20 23 20 23 23 20 23 23 23 20  ack..# # ## ### 
0a20: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23  ##### ######## #
0a30: 23 23 23 23 23 23 23 23 23 23 23 23 20 23 23 23  ############ ###
0a40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0a50: 23 23 0a 23 23 0a 0a 73 6e 69 74 3a 3a 74 79 70  ##.##..snit::typ
0a60: 65 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a  e ::vc::fossil::
0a70: 69 6d 70 6f 72 74 3a 3a 63 76 73 20 7b 0a 20 20  import::cvs {.  
0a80: 20 20 23 20 23 20 23 23 20 23 23 23 20 23 23 23    # # ## ### ###
0a90: 23 23 20 23 23 23 23 23 23 23 23 20 23 23 23 23  ## ######## ####
0aa0: 23 23 23 23 23 23 23 23 23 0a 20 20 20 20 23 23  #########.    ##
0ab0: 20 50 75 62 6c 69 63 20 41 50 49 2c 20 4d 65 74   Public API, Met
0ac0: 68 6f 64 73 0a 0a 20 20 20 20 74 79 70 65 6d 65  hods..    typeme
0ad0: 74 68 6f 64 20 72 75 6e 20 7b 61 72 67 75 6d 65  thod run {argume
0ae0: 6e 74 73 7d 20 7b 0a 09 23 20 52 75 6e 20 61 20  nts} {..# Run a 
0af0: 73 65 72 69 65 73 20 6f 66 20 70 61 73 73 65 73  series of passes
0b00: 20 6f 76 65 72 20 74 68 65 20 63 76 73 20 72 65   over the cvs re
0b10: 70 6f 73 69 74 6f 72 79 20 74 6f 20 65 78 74 72  pository to extr
0b20: 61 63 74 2c 0a 09 23 20 66 69 6c 74 65 72 2c 20  act,..# filter, 
0b30: 61 6e 64 20 6f 72 64 65 72 20 69 74 73 20 68 69  and order its hi
0b40: 73 74 6f 72 69 63 61 6c 20 69 6e 66 6f 72 6d 61  storical informa
0b50: 74 69 6f 6e 2e 20 57 68 69 63 68 20 70 61 73 73  tion. Which pass
0b60: 65 73 0a 09 23 20 61 72 65 20 61 63 74 75 61 6c  es..# are actual
0b70: 6c 79 20 72 75 6e 20 69 73 20 64 65 74 65 72 6d  ly run is determ
0b80: 69 6e 65 64 20 74 68 72 6f 75 67 68 20 74 68 65  ined through the
0b90: 20 73 70 65 63 69 66 69 65 64 20 6f 70 74 69 6f   specified optio
0ba0: 6e 73 0a 09 23 20 61 6e 64 20 74 68 65 69 72 20  ns..# and their 
0bb0: 64 65 66 61 75 6c 74 73 2e 0a 0a 09 6f 70 74 69  defaults....opti
0bc0: 6f 6e 20 70 72 6f 63 65 73 73 20 24 61 72 67 75  on process $argu
0bd0: 6d 65 6e 74 73 0a 09 70 61 73 73 20 72 75 6e 0a  ments..pass run.
0be0: 0a 09 76 63 3a 3a 74 6f 6f 6c 73 3a 3a 6c 6f 67  ..vc::tools::log
0bf0: 20 77 72 69 74 65 20 30 20 63 76 73 32 66 6f 73   write 0 cvs2fos
0c00: 73 69 6c 20 44 6f 6e 65 0a 09 72 65 74 75 72 6e  sil Done..return
0c10: 0a 20 20 20 20 7d 0a 0a 20 20 20 20 23 20 23 20  .    }..    # # 
0c20: 23 23 20 23 23 23 20 23 23 23 23 23 20 23 23 23  ## ### ##### ###
0c30: 23 23 23 23 23 20 23 23 23 23 23 23 23 23 23 23  ##### ##########
0c40: 23 23 23 0a 20 20 20 20 23 23 20 43 6f 6e 66 69  ###.    ## Confi
0c50: 67 75 72 61 74 69 6f 6e 0a 0a 20 20 20 20 70 72  guration..    pr
0c60: 61 67 6d 61 20 2d 68 61 73 69 6e 73 74 61 6e 63  agma -hasinstanc
0c70: 65 73 20 20 20 6e 6f 20 3b 20 23 20 73 69 6e 67  es   no ; # sing
0c80: 6c 65 74 6f 6e 0a 20 20 20 20 70 72 61 67 6d 61  leton.    pragma
0c90: 20 2d 68 61 73 74 79 70 65 69 6e 66 6f 20 20 20   -hastypeinfo   
0ca0: 20 6e 6f 20 3b 20 23 20 6e 6f 20 69 6e 74 72 6f   no ; # no intro
0cb0: 73 70 65 63 74 69 6f 6e 0a 20 20 20 20 70 72 61  spection.    pra
0cc0: 67 6d 61 20 2d 68 61 73 74 79 70 65 64 65 73 74  gma -hastypedest
0cd0: 72 6f 79 20 6e 6f 20 3b 20 23 20 69 6d 6d 6f 72  roy no ; # immor
0ce0: 74 61 6c 0a 0a 20 20 20 20 23 20 23 20 23 23 20  tal..    # # ## 
0cf0: 23 23 23 20 23 23 23 23 23 20 23 23 23 23 23 23  ### ##### ######
0d00: 23 23 20 23 23 23 23 23 23 23 23 23 23 23 23 23  ## #############
0d10: 0a 7d 0a 0a 23 20 23 20 23 23 20 23 23 23 20 23  .}..# # ## ### #
0d20: 23 23 23 23 20 23 23 23 23 23 23 23 23 20 23 23  #### ######## ##
0d30: 23 23 23 23 23 23 23 23 23 23 23 20 23 23 23 23  ########### ####
0d40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23  ################
0d50: 23 0a 23 23 20 52 65 61 64 79 0a 0a 70 61 63 6b  #.## Ready..pack
0d60: 61 67 65 20 70 72 6f 76 69 64 65 20 76 63 3a 3a  age provide vc::
0d70: 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a  fossil::import::
0d80: 63 76 73 20 31 2e 30 0a 72 65 74 75 72 6e 0a     cvs 1.0.return.