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.