Hex Artifact Content
Not logged in

Artifact aa215e83ab0d99d2badb25987102602565e62679:

File tools/lib/import_statistics.tcl part of check-in [b504674c5f] - Fixed problems with the untested statistics module. Moved cset <-> uuid map out of cvs to control layer, separate package. Currently not really useful, will be needed when handling cvs branches. Moved some user feedback around, and the import control too. by aku on 2007-09-15 03:18:31.

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 73 65 74 75 70 20 7b 6e 20  stats::setup {n 
03c0: 6d 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c  m} {.    variabl
03d0: 65 20 72 75 6e 5f 66 6f 72 6d 61 74 20 20 20 20  e run_format    
03e0: 25 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20  %[string length 
03f0: 24 6e 5d 73 0a 20 20 20 20 76 61 72 69 61 62 6c  $n]s.    variabl
0400: 65 20 6d 61 78 5f 66 6f 72 6d 61 74 20 20 20 20  e max_format    
0410: 25 5b 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 20  %[string length 
0420: 24 6d 5d 73 0a 20 20 20 20 76 61 72 69 61 62 6c  $m]s.    variabl
0430: 65 20 74 6f 74 61 6c 5f 63 73 65 74 73 20 20 20  e total_csets   
0440: 24 6e 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20  $n.    variable 
0450: 74 6f 74 61 6c 5f 72 75 6e 6e 69 6e 67 20 30 0a  total_running 0.
0460: 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 6f 74      variable tot
0470: 61 6c 5f 73 65 63 6f 6e 64 73 20 30 2e 30 0a 20  al_seconds 0.0. 
0480: 20 20 20 72 65 74 75 72 6e 0a 7d 0a 0a 70 72 6f     return.}..pro
0490: 63 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a  c ::vc::fossil::
04a0: 69 6d 70 6f 72 74 3a 3a 73 74 61 74 73 3a 3a 64  import::stats::d
04b0: 6f 6e 65 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72  one {} {.    var
04c0: 69 61 62 6c 65 20 74 6f 74 61 6c 5f 63 73 65 74  iable total_cset
04d0: 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74  s.    variable t
04e0: 6f 74 61 6c 5f 73 65 63 6f 6e 64 73 0a 0a 20 20  otal_seconds..  
04f0: 20 20 77 72 69 74 65 20 30 20 73 74 61 74 73 20    write 0 stats 
0500: 22 3d 3d 3d 3d 3d 3d 3d 3d 3d 20 5b 73 74 72 69  "========= [stri
0510: 6e 67 20 72 65 70 65 61 74 20 3d 20 36 31 5d 22  ng repeat = 61]"
0520: 0a 20 20 20 20 77 72 69 74 65 20 30 20 73 74 61  .    write 0 sta
0530: 74 73 20 22 49 6d 70 6f 72 74 65 64 20 24 74 6f  ts "Imported $to
0540: 74 61 6c 5f 63 73 65 74 73 20 5b 65 78 70 72 20  tal_csets [expr 
0550: 7b 28 24 74 6f 74 61 6c 5f 63 73 65 74 73 20 3d  {($total_csets =
0560: 3d 20 31 29 20 3f 20 22 63 68 61 6e 67 65 73 65  = 1) ? "changese
0570: 74 22 20 3a 20 22 63 68 61 6e 67 65 73 65 74 73  t" : "changesets
0580: 22 7d 5d 22 0a 20 20 20 20 77 72 69 74 65 20 30  "}]".    write 0
0590: 20 73 74 61 74 73 20 22 57 69 74 68 69 6e 20 5b   stats "Within [
05a0: 46 20 24 74 6f 74 61 6c 5f 73 65 63 6f 6e 64 73  F $total_seconds
05b0: 5d 20 73 65 63 6f 6e 64 73 20 28 61 76 67 20 5b  ] seconds (avg [
05c0: 46 20 5b 41 76 67 5d 5d 20 73 65 63 6f 6e 64 73  F [Avg]] seconds
05d0: 2f 63 68 61 6e 67 65 73 65 74 29 22 0a 20 20 20  /changeset)".   
05e0: 20 72 65 74 75 72 6e 0a 7d 0a 0a 70 72 6f 63 20   return.}..proc 
05f0: 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d  ::vc::fossil::im
0600: 70 6f 72 74 3a 3a 73 74 61 74 73 3a 3a 63 73 62  port::stats::csb
0610: 65 67 69 6e 20 7b 63 73 65 74 7d 20 7b 0a 20 20  egin {cset} {.  
0620: 20 20 76 61 72 69 61 62 6c 65 20 6d 61 78 5f 66    variable max_f
0630: 6f 72 6d 61 74 0a 20 20 20 20 76 61 72 69 61 62  ormat.    variab
0640: 6c 65 20 72 75 6e 5f 66 6f 72 6d 61 74 0a 20 20  le run_format.  
0650: 20 20 76 61 72 69 61 62 6c 65 20 74 6f 74 61 6c    variable total
0660: 5f 72 75 6e 6e 69 6e 67 0a 20 20 20 20 76 61 72  _running.    var
0670: 69 61 62 6c 65 20 74 6f 74 61 6c 5f 63 73 65 74  iable total_cset
0680: 73 0a 0a 20 20 20 20 77 72 69 74 65 20 30 20 73  s..    write 0 s
0690: 74 61 74 73 20 22 43 68 61 6e 67 65 53 65 74 20  tats "ChangeSet 
06a0: 5b 66 6f 72 6d 61 74 20 24 6d 61 78 5f 66 6f 72  [format $max_for
06b0: 6d 61 74 20 24 63 73 65 74 5d 20 40 20 5b 66 6f  mat $cset] @ [fo
06c0: 72 6d 61 74 20 24 72 75 6e 5f 66 6f 72 6d 61 74  rmat $run_format
06d0: 20 24 74 6f 74 61 6c 5f 72 75 6e 6e 69 6e 67 5d   $total_running]
06e0: 2f 24 74 6f 74 61 6c 5f 63 73 65 74 73 20 28 5b  /$total_csets ([
06f0: 46 36 20 5b 65 78 70 72 20 7b 24 74 6f 74 61 6c  F6 [expr {$total
0700: 5f 72 75 6e 6e 69 6e 67 2a 31 30 30 2e 30 2f 24  _running*100.0/$
0710: 74 6f 74 61 6c 5f 63 73 65 74 73 7d 5d 5d 25 29  total_csets}]]%)
0720: 22 0a 20 20 20 20 72 65 74 75 72 6e 0a 7d 0a 0a  ".    return.}..
0730: 70 72 6f 63 20 3a 3a 76 63 3a 3a 66 6f 73 73 69  proc ::vc::fossi
0740: 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 73 74 61 74 73  l::import::stats
0750: 3a 3a 63 73 65 6e 64 20 7b 73 65 63 6f 6e 64 73  ::csend {seconds
0760: 7d 20 7b 0a 20 20 20 20 76 61 72 69 61 62 6c 65  } {.    variable
0770: 20 74 6f 74 61 6c 5f 63 73 65 74 73 0a 20 20 20   total_csets.   
0780: 20 76 61 72 69 61 62 6c 65 20 74 6f 74 61 6c 5f   variable total_
0790: 73 65 63 6f 6e 64 73 0a 20 20 20 20 76 61 72 69  seconds.    vari
07a0: 61 62 6c 65 20 74 6f 74 61 6c 5f 72 75 6e 6e 69  able total_runni
07b0: 6e 67 0a 0a 20 20 20 20 69 6e 63 72 20 74 6f 74  ng..    incr tot
07c0: 61 6c 5f 72 75 6e 6e 69 6e 67 0a 20 20 20 20 73  al_running.    s
07d0: 65 74 20 20 74 6f 74 61 6c 5f 73 65 63 6f 6e 64  et  total_second
07e0: 73 20 5b 65 78 70 72 20 7b 24 74 6f 74 61 6c 5f  s [expr {$total_
07f0: 73 65 63 6f 6e 64 73 20 2b 20 24 73 65 63 6f 6e  seconds + $secon
0800: 64 73 7d 5d 0a 0a 20 20 20 20 73 65 74 20 61 76  ds}]..    set av
0810: 67 20 5b 41 76 67 5d 0a 20 20 20 20 73 65 74 20  g [Avg].    set 
0820: 65 6e 64 20 5b 65 78 70 72 20 7b 24 74 6f 74 61  end [expr {$tota
0830: 6c 5f 63 73 65 74 73 20 2a 20 24 61 76 67 7d 5d  l_csets * $avg}]
0840: 0a 20 20 20 20 73 65 74 20 72 65 6d 20 5b 65 78  .    set rem [ex
0850: 70 72 20 7b 24 65 6e 64 20 2d 20 24 74 6f 74 61  pr {$end - $tota
0860: 6c 5f 73 65 63 6f 6e 64 73 7d 5d 0a 0a 20 20 20  l_seconds}]..   
0870: 20 77 72 69 74 65 20 32 20 73 74 61 74 73 20 22   write 2 stats "
0880: 49 6d 70 6f 72 74 65 64 20 69 6e 20 20 20 20 20  Imported in     
0890: 20 20 20 5b 46 37 20 24 73 65 63 6f 6e 64 73 5d     [F7 $seconds]
08a0: 20 73 65 63 6f 6e 64 73 22 0a 20 20 20 20 77 72   seconds".    wr
08b0: 69 74 65 20 33 20 73 74 61 74 73 20 22 41 76 65  ite 3 stats "Ave
08c0: 72 61 67 65 20 54 69 6d 65 2f 43 73 65 74 20 20  rage Time/Cset  
08d0: 5b 46 37 20 24 61 76 67 5d 20 73 65 63 6f 6e 64  [F7 $avg] second
08e0: 73 22 0a 20 20 20 20 77 72 69 74 65 20 33 20 73  s".    write 3 s
08f0: 74 61 74 73 20 22 43 75 72 72 65 6e 74 20 52 75  tats "Current Ru
0900: 6e 74 69 6d 65 20 20 20 20 5b 46 54 69 6d 65 20  ntime    [FTime 
0910: 24 74 6f 74 61 6c 5f 73 65 63 6f 6e 64 73 5d 22  $total_seconds]"
0920: 0a 20 20 20 20 77 72 69 74 65 20 33 20 73 74 61  .    write 3 sta
0930: 74 73 20 22 54 6f 74 61 6c 20 52 75 6e 74 69 6d  ts "Total Runtim
0940: 65 20 20 28 45 29 20 5b 46 54 69 6d 65 20 24 65  e  (E) [FTime $e
0950: 6e 64 5d 22 0a 20 20 20 20 77 72 69 74 65 20 33  nd]".    write 3
0960: 20 73 74 61 74 73 20 22 52 65 6d 61 69 6e 69 6e   stats "Remainin
0970: 67 20 54 69 6d 65 20 28 45 29 20 5b 46 54 69 6d  g Time (E) [FTim
0980: 65 20 24 72 65 6d 5d 22 0a 20 20 20 20 23 20 28  e $rem]".    # (
0990: 45 29 20 66 6f 72 20 45 73 74 69 6d 61 74 65 64  E) for Estimated
09a0: 2e 0a 0a 20 20 20 20 72 65 74 75 72 6e 0a 7d 0a  ...    return.}.
09b0: 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .# -------------
09c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
09d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
09e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
09f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0a00: 0a 23 20 49 6e 74 65 72 6e 61 6c 20 68 65 6c 70  .# Internal help
0a10: 65 72 20 63 6f 6d 6d 61 6e 64 73 2e 0a 0a 70 72  er commands...pr
0a20: 6f 63 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a  oc ::vc::fossil:
0a30: 3a 69 6d 70 6f 72 74 3a 3a 73 74 61 74 73 3a 3a  :import::stats::
0a40: 46 54 69 6d 65 20 7b 73 7d 20 7b 0a 20 20 20 20  FTime {s} {.    
0a50: 73 65 74 20 6d 20 5b 65 78 70 72 20 7b 24 73 20  set m [expr {$s 
0a60: 2f 20 36 30 7d 5d 0a 20 20 20 20 73 65 74 20 68  / 60}].    set h
0a70: 20 5b 65 78 70 72 20 7b 24 73 20 2f 20 33 36 30   [expr {$s / 360
0a80: 30 7d 5d 0a 20 20 20 20 72 65 74 75 72 6e 20 22  0}].    return "
0a90: 5b 46 37 20 24 73 5d 20 73 65 63 20 5b 46 36 20  [F7 $s] sec [F6 
0aa0: 24 6d 5d 20 6d 69 6e 20 5b 46 35 20 24 68 5d 20  $m] min [F5 $h] 
0ab0: 68 72 22 0a 7d 0a 0a 70 72 6f 63 20 3a 3a 76 63  hr".}..proc ::vc
0ac0: 3a 3a 66 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74  ::fossil::import
0ad0: 3a 3a 73 74 61 74 73 3a 3a 46 20 20 7b 78 7d 20  ::stats::F  {x} 
0ae0: 7b 20 66 6f 72 6d 61 74 20 25 2e 32 66 20 20 24  { format %.2f  $
0af0: 78 20 7d 0a 70 72 6f 63 20 3a 3a 76 63 3a 3a 66  x }.proc ::vc::f
0b00: 6f 73 73 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 73  ossil::import::s
0b10: 74 61 74 73 3a 3a 46 35 20 7b 78 7d 20 7b 20 66  tats::F5 {x} { f
0b20: 6f 72 6d 61 74 20 25 35 2e 32 66 20 24 78 20 7d  ormat %5.2f $x }
0b30: 0a 70 72 6f 63 20 3a 3a 76 63 3a 3a 66 6f 73 73  .proc ::vc::foss
0b40: 69 6c 3a 3a 69 6d 70 6f 72 74 3a 3a 73 74 61 74  il::import::stat
0b50: 73 3a 3a 46 36 20 7b 78 7d 20 7b 20 66 6f 72 6d  s::F6 {x} { form
0b60: 61 74 20 25 36 2e 32 66 20 24 78 20 7d 0a 70 72  at %6.2f $x }.pr
0b70: 6f 63 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a  oc ::vc::fossil:
0b80: 3a 69 6d 70 6f 72 74 3a 3a 73 74 61 74 73 3a 3a  :import::stats::
0b90: 46 37 20 7b 78 7d 20 7b 20 66 6f 72 6d 61 74 20  F7 {x} { format 
0ba0: 25 37 2e 32 66 20 24 78 20 7d 0a 0a 70 72 6f 63  %7.2f $x }..proc
0bb0: 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69   ::vc::fossil::i
0bc0: 6d 70 6f 72 74 3a 3a 73 74 61 74 73 3a 3a 41 76  mport::stats::Av
0bd0: 67 20 7b 7d 20 7b 0a 20 20 20 20 76 61 72 69 61  g {} {.    varia
0be0: 62 6c 65 20 74 6f 74 61 6c 5f 73 65 63 6f 6e 64  ble total_second
0bf0: 73 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 74  s.    variable t
0c00: 6f 74 61 6c 5f 72 75 6e 6e 69 6e 67 0a 20 20 20  otal_running.   
0c10: 20 72 65 74 75 72 6e 20 5b 65 78 70 72 20 7b 24   return [expr {$
0c20: 74 6f 74 61 6c 5f 73 65 63 6f 6e 64 73 2f 24 74  total_seconds/$t
0c30: 6f 74 61 6c 5f 72 75 6e 6e 69 6e 67 7d 5d 0a 7d  otal_running}].}
0c40: 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ..# ------------
0c50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0c60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0c70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0c80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0c90: 2d 0a 0a 6e 61 6d 65 73 70 61 63 65 20 65 76 61  -..namespace eva
0ca0: 6c 20 3a 3a 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a  l ::vc::fossil::
0cb0: 69 6d 70 6f 72 74 3a 3a 73 74 61 74 73 20 7b 0a  import::stats {.
0cc0: 20 20 20 20 76 61 72 69 61 62 6c 65 20 74 6f 74      variable tot
0cd0: 61 6c 5f 63 73 65 74 73 20 20 20 30 20 3b 20 23  al_csets   0 ; #
0ce0: 20 4e 75 6d 62 65 72 20 6f 66 20 63 68 61 6e 67   Number of chang
0cf0: 65 73 65 74 73 20 74 6f 20 65 78 70 65 63 74 20  esets to expect 
0d00: 74 6f 20 62 65 20 69 6d 70 6f 72 74 65 64 0a 20  to be imported. 
0d10: 20 20 20 76 61 72 69 61 62 6c 65 20 74 6f 74 61     variable tota
0d20: 6c 5f 72 75 6e 6e 69 6e 67 20 30 20 3b 20 23 20  l_running 0 ; # 
0d30: 4e 75 6d 62 65 72 20 6f 66 20 63 68 61 6e 67 65  Number of change
0d40: 73 65 74 73 20 77 68 69 63 68 20 68 61 76 65 20  sets which have 
0d50: 62 65 65 6e 20 69 6d 70 6f 72 74 65 64 20 73 6f  been imported so
0d60: 20 66 61 72 0a 20 20 20 20 76 61 72 69 61 62 6c   far.    variabl
0d70: 65 20 74 6f 74 61 6c 5f 73 65 63 6f 6e 64 73 20  e total_seconds 
0d80: 30 20 3b 20 23 20 43 75 72 72 65 6e 74 20 72 75  0 ; # Current ru
0d90: 6e 74 69 6d 65 20 69 6e 20 73 65 63 6f 6e 64 73  ntime in seconds
0da0: 0a 20 20 20 20 76 61 72 69 61 62 6c 65 20 6d 61  .    variable ma
0db0: 78 5f 66 6f 72 6d 61 74 20 20 20 25 73 20 3b 20  x_format   %s ; 
0dc0: 23 20 46 6f 72 6d 61 74 20 74 6f 20 70 72 69 6e  # Format to prin
0dd0: 74 20 63 68 61 6e 67 65 73 65 74 20 69 64 2c 20  t changeset id, 
0de0: 62 61 73 65 64 20 6f 6e 20 74 68 65 20 6c 61 72  based on the lar
0df0: 67 65 73 74 20 69 64 2e 0a 20 20 20 20 76 61 72  gest id..    var
0e00: 69 61 62 6c 65 20 72 75 6e 5f 66 6f 72 6d 61 74  iable run_format
0e10: 20 20 20 25 73 20 3b 20 23 20 46 6f 72 6d 61 74     %s ; # Format
0e20: 20 74 6f 20 70 72 69 6e 74 20 74 68 65 20 6e 75   to print the nu
0e30: 6d 62 65 72 20 6f 66 20 69 6d 70 6f 72 74 65 64  mber of imported
0e40: 20 63 73 65 74 73 2e 0a 0a 20 20 20 20 6e 61 6d   csets...    nam
0e50: 65 73 70 61 63 65 20 65 78 70 6f 72 74 20 73 65  espace export se
0e60: 74 75 70 20 64 6f 6e 65 20 63 73 62 65 67 69 6e  tup done csbegin
0e70: 20 63 73 65 6e 64 0a 7d 0a 0a 23 20 2d 2d 2d 2d   csend.}..# ----
0e80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0e90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0ea0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0eb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0ec0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 52 65 61 64  ---------.# Read
0ed0: 79 0a 0a 70 61 63 6b 61 67 65 20 70 72 6f 76 69  y..package provi
0ee0: 64 65 20 76 63 3a 3a 66 6f 73 73 69 6c 3a 3a 69  de vc::fossil::i
0ef0: 6d 70 6f 72 74 3a 3a 73 74 61 74 73 20 31 2e 30  mport::stats 1.0
0f00: 0a 72 65 74 75 72 6e 0a                          .return.