Hex Artifact Content
Not logged in

Artifact 561c79f2a3d2a19a167f15bf1f8892dfa607d32b:

File tools/lib/import_statistics.tcl part of check-in [18251642f3] - Moved the handling of the import statistics into its own package. Untested. by aku on 2007-09-14 23:23:48.

0000: 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  # --------------
0010: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0020: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0030: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0040: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a  ---------------.
0050: 23 20 4d 61 6e 61 67 65 6d 65 6e 74 20 6f 66 20  # Management of 
0060: 73 74 61 74 69 73 74 69 63 73 20 66 6f 72 20 61  statistics for a
0070: 6e 20 69 6d 70 6f 72 74 20 72 75 6e 2e 0a 0a 23  n import run...#
0080: 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ---------------
0090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
00a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
00b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
00c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23  --------------.#
00d0: 20 52 65 71 75 69 72 65 6d 65 6e 74 73 0a 0a 70   Requirements..p
00e0: 61 63 6b 61 67 65 20 72 65 71 75 69 72 65 20 54  ackage require T
00f0: 63 6c 20 38 2e 34 0a 70 61 63 6b 61 67 65 20 72  cl 8.4.package r
0100: 65 71 75 69 72 65 20 76 63 3a 3a 74 6f 6f 6c 73  equire vc::tools
0110: 3a 3a 6c 6f 67 20 20 3b 20 23 20 55 73 65 72 20  ::log  ; # User 
0120: 66 65 65 64 62 61 63 6b 0a 0a 6e 61 6d 65 73 70  feedback..namesp
0130: 61 63 65 20 65 76 61 6c 20 3a 3a 76 63 3a 3a 66  ace eval ::vc::f
0140: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 73  ossil::import::s
0150: 74 61 74 73 20 7b 0a 20 20 20 20 76 63 3a 3a 74  tats {.    vc::t
0160: 6f 6f 6c 73 3a 3a 6c 6f 67 3a 3a 73 79 73 74 65  ools::log::syste
0170: 6d 20 73 74 61 74 73 0a 20 20 20 20 6e 61 6d 65  m stats.    name
0180: 73 70 61 63 65 20 69 6d 70 6f 72 74 20 3a 3a 76  space import ::v
0190: 63 3a 3a 74 6f 6f 6c 73 3a 3a 6c 6f 67 3a 3a 77  c::tools::log::w
01a0: 72 69 74 65 0a 7d 0a 0a 23 20 2d 2d 2d 2d 2d 2d  rite.}..# ------
01b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
01f0: 2d 2d 2d 2d 2d 2d 2d 0a 23 20 41 50 49 0a 0a 23  -------.# API..#
0200: 20 20 20 20 20 76 63 3a 3a 66 6f 73 73 69 6c 3a       vc::fossil:
0210: 3a 69 6d 70 6f 72 74 3a 3a 73 74 61 74 73 0a 23  :import::stats.#
0220: 20 20 20 20 20 20 20 20 20 73 65 74 75 70 20 6e           setup n
0230: 20 6d 20 20 2d 20 49 6e 69 74 69 61 6c 69 7a 65   m  - Initialize
0240: 20 6d 6f 64 75 6c 65 2c 20 65 78 70 65 63 74 20   module, expect 
0250: 6e 20 63 68 61 6e 67 65 73 65 74 73 2c 20 6f 66  n changesets, of
0260: 20 6d 2e 0a 23 20 20 20 20 20 20 20 20 20 64 6f   m..#         do
0270: 6e 65 20 20 20 20 20 20 20 2d 20 57 72 69 74 65  ne       - Write
0280: 20 66 69 6e 61 6c 20 73 74 61 74 69 73 74 69 63   final statistic
0290: 73 2e 0a 23 20 20 20 20 20 20 20 20 20 63 73 62  s..#         csb
02a0: 65 67 69 6e 20 69 64 20 2d 20 49 6d 70 6f 72 74  egin id - Import
02b0: 20 6f 66 20 69 64 65 6e 74 69 66 69 65 64 20 63   of identified c
02c0: 68 61 6e 67 65 73 65 74 20 62 65 67 69 6e 73 2e  hangeset begins.
02d0: 0a 23 20 20 20 20 20 20 20 20 20 63 73 65 6e 64  .#         csend
02e0: 20 78 20 20 20 20 2d 20 49 74 20 74 6f 6f 6b 20   x    - It took 
02f0: 78 20 73 65 63 6f 6e 64 73 20 74 6f 20 69 6d 70  x seconds to imp
0300: 6f 72 74 20 74 68 65 20 63 68 61 6e 67 65 73 65  ort the changese
0310: 74 2e 0a 23 20 20 20 20 20 20 20 20 20 0a 0a 23  t..#         ..#
0320: 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d   ---------------
0330: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0340: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0350: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0360: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23  --------------.#
0370: 20 41 50 49 20 49 6d 70 6c 65 6d 65 6e 74 61 74   API Implementat
0380: 69 6f 6e 20 2d 20 46 75 6e 63 74 69 6f 6e 61 6c  ion - Functional
0390: 69 74 79 0a 0a 70 72 6f 63 20 3a 3a 76 63 3a 3a  ity..proc ::vc::
03a0: 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a  fossil::import::
03b0: 73 74 61 74 73 3a 3a 69 6e 69 74 20 7b 6e 20 6d  stats::init {n m
03c0: 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65  } {.    variable
03d0: 20 74 6f 74 61 6c 5f 63 73 65 74 73 20 20 20 24   total_csets   $
03e0: 6e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74  n.    variable t
03f0: 6f 74 61 6c 5f 72 75 6e 6e 69 6e 67 20 30 0a 20  otal_running 0. 
0400: 20 20 20 76 61 72 69 61 62 6c 65 20 74 6f 74 61     variable tota
0410: 6c 5f 73 65 63 6f 6e 64 73 20 30 2e 30 0a 0a 20  l_seconds 0.0.. 
0420: 20 20 20 76 61 72 69 61 62 6c 65 20 6e 74 66 6d     variable ntfm
0430: 74 20 25 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74  t %[string lengt
0440: 68 20 24 6e 5d 73 0a 20 20 20 20 76 61 72 69 61  h $n]s.    varia
0450: 62 6c 65 20 6e 6d 66 6d 74 20 25 5b 73 74 72 69  ble nmfmt %[stri
0460: 6e 67 20 6c 65 6e 67 74 68 20 24 6d 5d 73 0a 20  ng length $m]s. 
0470: 20 20 20 72 65 74 75 72 6e 0a 7d 0a 0a 70 72 6f     return.}..pro
0480: 63 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a  c ::vc::fossil::
0490: 69 6d 70 6f 72 74 3a 3a 73 74 61 74 73 3a 3a 64  import::stats::d
04a0: 6f 6e 65 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72  one {} {.    var
04b0: 69 61 62 6c 65 20 74 6f 74 61 6c 5f 63 73 65 74  iable total_cset
04c0: 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74  s.    variable t
04d0: 6f 74 61 6c 5f 73 65 63 6f 6e 64 73 0a 0a 20 20  otal_seconds..  
04e0: 20 20 77 72 69 74 65 20 30 20 73 74 61 74 73 20    write 0 stats 
04f0: 22 3d 3d 3d 3d 3d 3d 3d 3d 3d 20 5b 73 74 72 69  "========= [stri
0500: 6e 67 20 72 65 70 65 61 74 20 3d 20 36 31 5d 22  ng repeat = 61]"
0510: 0a 20 20 20 20 77 72 69 74 65 20 30 20 73 74 61  .    write 0 sta
0520: 74 73 20 22 49 6d 70 6f 72 74 65 64 20 24 74 6f  ts "Imported $to
0530: 74 61 6c 5f 63 73 65 74 73 20 5b 65 78 70 72 20  tal_csets [expr 
0540: 7b 28 24 74 6f 74 61 6c 5f 63 73 65 74 73 20 3d  {($total_csets =
0550: 3d 20 31 29 20 3f 20 22 63 68 61 6e 67 65 73 65  = 1) ? "changese
0560: 74 22 20 3a 20 22 63 68 61 6e 67 65 73 65 74 73  t" : "changesets
0570: 22 7d 5d 22 0a 20 20 20 20 77 72 69 74 65 20 30  "}]".    write 0
0580: 20 73 74 61 74 73 20 22 57 69 74 68 69 6e 20 5b   stats "Within [
0590: 46 20 24 74 6f 74 5d 20 73 65 63 6f 6e 64 73 20  F $tot] seconds 
05a0: 28 61 76 67 20 5b 46 20 5b 41 76 67 5d 5d 20 73  (avg [F [Avg]] s
05b0: 65 63 6f 6e 64 73 2f 63 68 61 6e 67 65 73 65 74  econds/changeset
05c0: 29 22 0a 20 20 20 20 72 65 74 75 72 6e 0a 7d 0a  )".    return.}.
05d0: 0a 70 72 6f 63 20 3a 3a 76 63 3a 3a 66 6f 73 73  .proc ::vc::foss
05e0: 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 73 74 61 74  il::import::stat
05f0: 73 3a 3a 63 73 62 65 67 69 6e 20 7b 63 73 65 74  s::csbegin {cset
0600: 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65  } {.    variable
0610: 20 6e 6d 66 6d 74 0a 20 20 20 20 76 61 72 69 61   nmfmt.    varia
0620: 62 6c 65 20 6e 74 66 6d 74 0a 20 20 20 20 77 72  ble ntfmt.    wr
0630: 69 74 65 20 30 20 73 74 61 74 73 20 22 43 68 61  ite 0 stats "Cha
0640: 6e 67 65 53 65 74 20 5b 66 6f 72 6d 61 74 20 24  ngeSet [format $
0650: 6e 6d 66 6d 74 20 24 63 73 65 74 5d 20 40 20 5b  nmfmt $cset] @ [
0660: 66 6f 72 6d 61 74 20 24 6e 74 66 6d 74 20 24 74  format $ntfmt $t
0670: 6f 74 61 6c 5f 72 75 6e 6e 69 6e 67 5d 2f 24 74  otal_running]/$t
0680: 6f 74 61 6c 5f 63 73 65 74 73 20 28 5b 46 36 20  otal_csets ([F6 
0690: 5b 65 78 70 72 20 7b 24 74 6f 74 61 6c 5f 72 75  [expr {$total_ru
06a0: 6e 6e 69 6e 67 2a 31 30 30 2e 30 2f 24 74 6f 74  nning*100.0/$tot
06b0: 61 6c 5f 63 73 65 74 73 7d 5d 5d 25 29 22 0a 20  al_csets}]]%)". 
06c0: 20 20 20 72 65 74 75 72 6e 0a 7d 0a 0a 70 72 6f     return.}..pro
06d0: 63 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a  c ::vc::fossil::
06e0: 69 6d 70 6f 72 74 3a 3a 73 74 61 74 73 3a 3a 63  import::stats::c
06f0: 73 65 6e 64 20 7b 73 65 63 6f 6e 64 73 7d 20 7b  send {seconds} {
0700: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 6f  .    variable to
0710: 74 61 6c 5f 63 73 65 74 73 0a 20 20 20 20 76 61  tal_csets.    va
0720: 72 69 61 62 6c 65 20 74 6f 74 61 6c 5f 73 65 63  riable total_sec
0730: 6f 6e 64 73 0a 20 20 20 20 76 61 72 69 61 62 6c  onds.    variabl
0740: 65 20 74 6f 74 61 6c 5f 72 75 6e 6e 69 6e 67 0a  e total_running.
0750: 0a 20 20 20 20 69 6e 63 72 20 74 6f 74 61 6c 5f  .    incr total_
0760: 72 75 6e 6e 69 6e 67 0a 20 20 20 20 73 65 74 20  running.    set 
0770: 20 74 6f 74 61 6c 5f 73 65 63 6f 6e 64 73 20 5b   total_seconds [
0780: 65 78 70 72 20 7b 24 74 6f 74 61 6c 5f 73 65 63  expr {$total_sec
0790: 6f 6e 64 73 20 2b 20 24 73 65 63 7d 5d 0a 0a 20  onds + $sec}].. 
07a0: 20 20 20 73 65 74 20 61 76 67 20 5b 41 76 67 5d     set avg [Avg]
07b0: 0a 20 20 20 20 73 65 74 20 65 6e 64 20 5b 65 78  .    set end [ex
07c0: 70 72 20 7b 24 74 6f 74 61 6c 5f 63 73 65 74 73  pr {$total_csets
07d0: 20 2a 20 24 61 76 67 7d 5d 0a 20 20 20 20 73 65   * $avg}].    se
07e0: 74 20 72 65 6d 20 5b 65 78 70 72 20 7b 24 65 6e  t rem [expr {$en
07f0: 64 20 2d 20 24 74 6f 74 61 6c 5f 73 65 63 6f 6e  d - $total_secon
0800: 64 73 7d 5d 0a 0a 20 20 20 20 77 72 69 74 65 20  ds}]..    write 
0810: 32 20 73 74 61 74 73 20 22 49 6d 70 6f 72 74 65  2 stats "Importe
0820: 64 20 69 6e 20 20 20 20 20 20 20 20 5b 46 37 20  d in        [F7 
0830: 24 73 65 63 6f 6e 64 73 5d 20 73 65 63 6f 6e 64  $seconds] second
0840: 73 22 0a 20 20 20 20 77 72 69 74 65 20 33 20 73  s".    write 3 s
0850: 74 61 74 73 20 22 41 76 65 72 61 67 65 20 54 69  tats "Average Ti
0860: 6d 65 2f 43 73 65 74 20 20 5b 46 37 20 24 61 76  me/Cset  [F7 $av
0870: 67 5d 20 73 65 63 6f 6e 64 73 22 0a 20 20 20 20  g] seconds".    
0880: 77 72 69 74 65 20 33 20 73 74 61 74 73 20 22 43  write 3 stats "C
0890: 75 72 72 65 6e 74 20 52 75 6e 74 69 6d 65 20 20  urrent Runtime  
08a0: 20 20 5b 46 54 69 6d 65 20 24 74 6f 74 61 6c 5f    [FTime $total_
08b0: 73 65 63 6f 6e 64 73 5d 22 0a 20 20 20 20 77 72  seconds]".    wr
08c0: 69 74 65 20 33 20 73 74 61 74 73 20 22 54 6f 74  ite 3 stats "Tot
08d0: 61 6c 20 52 75 6e 74 69 6d 65 20 20 28 45 29 20  al Runtime  (E) 
08e0: 5b 46 54 69 6d 65 20 24 65 6e 64 5d 22 0a 20 20  [FTime $end]".  
08f0: 20 20 77 72 69 74 65 20 33 20 73 74 61 74 73 20    write 3 stats 
0900: 22 52 65 6d 61 69 6e 69 6e 67 20 54 69 6d 65 20  "Remaining Time 
0910: 28 45 29 20 5b 46 54 69 6d 65 20 24 72 65 6d 5d  (E) [FTime $rem]
0920: 22 0a 20 20 20 20 23 20 28 45 29 20 66 6f 72 20  ".    # (E) for 
0930: 45 73 74 69 6d 61 74 65 64 2e 0a 0a 20 20 20 20  Estimated...    
0940: 72 65 74 75 72 6e 0a 7d 0a 0a 23 20 2d 2d 2d 2d  return.}..# ----
0950: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0960: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0970: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0980: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0990: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 49 6e 74 65  ---------.# Inte
09a0: 72 6e 61 6c 20 68 65 6c 70 65 72 20 63 6f 6d 6d  rnal helper comm
09b0: 61 6e 64 73 2e 0a 0a 70 72 6f 63 20 3a 3a 76 63  ands...proc ::vc
09c0: 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74  ::fossil::import
09d0: 3a 3a 73 74 61 74 73 3a 3a 46 54 69 6d 65 20 7b  ::stats::FTime {
09e0: 73 7d 20 7b 0a 20 20 20 20 73 65 74 20 6d 20 5b  s} {.    set m [
09f0: 65 78 70 72 20 7b 24 73 20 2f 20 36 30 7d 5d 0a  expr {$s / 60}].
0a00: 20 20 20 20 73 65 74 20 68 20 5b 65 78 70 72 20      set h [expr 
0a10: 7b 24 73 20 2f 20 33 36 30 30 7d 5d 0a 20 20 20  {$s / 3600}].   
0a20: 20 72 65 74 75 72 6e 20 22 5b 46 37 20 24 73 5d   return "[F7 $s]
0a30: 20 73 65 63 20 5b 46 36 20 24 6d 5d 20 6d 69 6e   sec [F6 $m] min
0a40: 20 5b 46 35 20 24 68 5d 20 68 72 22 0a 7d 0a 0a   [F5 $h] hr".}..
0a50: 70 72 6f 63 20 3a 3a 76 63 3a 3a 66 6f 73 73 69  proc ::vc::fossi
0a60: 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 73 74 61 74 73  l::import::stats
0a70: 3a 3a 46 20 20 7b 78 7d 20 7b 20 66 6f 72 6d 61  ::F  {x} { forma
0a80: 74 20 25 2e 32 66 20 20 24 78 20 7d 0a 70 72 6f  t %.2f  $x }.pro
0a90: 63 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a  c ::vc::fossil::
0aa0: 69 6d 70 6f 72 74 3a 3a 73 74 61 74 73 3a 3a 46  import::stats::F
0ab0: 35 20 7b 78 7d 20 7b 20 66 6f 72 6d 61 74 20 25  5 {x} { format %
0ac0: 35 2e 32 66 20 24 78 20 7d 0a 70 72 6f 63 20 3a  5.2f $x }.proc :
0ad0: 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70  :vc::fossil::imp
0ae0: 6f 72 74 3a 3a 73 74 61 74 73 3a 3a 46 36 20 7b  ort::stats::F6 {
0af0: 78 7d 20 7b 20 66 6f 72 6d 61 74 20 25 36 2e 32  x} { format %6.2
0b00: 66 20 24 78 20 7d 0a 70 72 6f 63 20 3a 3a 76 63  f $x }.proc ::vc
0b10: 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74  ::fossil::import
0b20: 3a 3a 73 74 61 74 73 3a 3a 46 37 20 7b 78 7d 20  ::stats::F7 {x} 
0b30: 7b 20 66 6f 72 6d 61 74 20 25 37 2e 32 66 20 24  { format %7.2f $
0b40: 78 20 7d 0a 0a 70 72 6f 63 20 3a 3a 76 63 3a 3a  x }..proc ::vc::
0b50: 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a  fossil::import::
0b60: 73 74 61 74 73 3a 3a 41 76 67 20 7b 7d 20 7b 0a  stats::Avg {} {.
0b70: 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 6f 74      variable tot
0b80: 61 6c 5f 73 65 63 6f 6e 64 73 0a 20 20 20 20 76  al_seconds.    v
0b90: 61 72 69 61 62 6c 65 20 74 6f 74 61 6c 5f 72 75  ariable total_ru
0ba0: 6e 6e 69 6e 67 0a 20 20 20 20 72 65 74 75 72 6e  nning.    return
0bb0: 20 5b 65 78 70 72 20 7b 24 74 6f 74 61 6c 5f 73   [expr {$total_s
0bc0: 65 63 6f 6e 64 73 2f 24 74 6f 74 61 6c 5f 72 75  econds/$total_ru
0bd0: 6e 6e 69 6e 67 7d 5d 0a 7d 0a 0a 23 20 2d 2d 2d  nning}].}..# ---
0be0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0bf0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0c00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0c10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0c20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 6e 61 6d 65  ----------..name
0c30: 73 70 61 63 65 20 65 76 61 6c 20 3a 3a 76 63 3a  space eval ::vc:
0c40: 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a  :fossil::import:
0c50: 3a 73 74 61 74 73 20 7b 0a 20 20 20 20 6e 61 6d  :stats {.    nam
0c60: 65 73 70 61 63 65 20 65 78 70 6f 72 74 20 73 65  espace export se
0c70: 74 75 70 20 64 6f 6e 65 20 62 65 67 69 6e 20 61  tup done begin a
0c80: 64 64 0a 7d 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d  dd.}..# --------
0c90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0ca0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0cb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0cc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0cd0: 2d 2d 2d 2d 2d 0a 23 20 52 65 61 64 79 0a 0a 70  -----.# Ready..p
0ce0: 61 63 6b 61 67 65 20 70 72 6f 76 69 64 65 20 76  ackage provide v
0cf0: 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72  c::fossil::impor
0d00: 74 3a 3a 73 74 61 74 73 20 31 2e 30 0a 72 65 74  t::stats 1.0.ret
0d10: 75 72 6e 0a                                      urn.