| | @@ -3,19 +3,21 @@ |
| 3 | 3 | |
| 4 | 4 | # ----------------------------------------------------------------------------- |
| 5 | 5 | # Requirements |
| 6 | 6 | |
| 7 | 7 | package require Tcl 8.4 |
| 8 | | -package require vc::cvs::ws ; # Frontend, reading from source repository |
| 9 | | -package require vc::fossil::ws ; # Backend, writing to destination repository. |
| 10 | | -package require vc::tools::log ; # User feedback |
| 8 | +package require vc::cvs::ws ; # Frontend, reading from source repository |
| 9 | +package require vc::fossil::ws ; # Backend, writing to destination repository. |
| 10 | +package require vc::tools::log ; # User feedback |
| 11 | +package require vc::fossil::import::stats ; # Import Statistics |
| 11 | 12 | |
| 12 | 13 | namespace eval ::vc::fossil::import::cvs { |
| 13 | 14 | vc::tools::log::system import |
| 14 | 15 | namespace import ::vc::tools::log::write |
| 15 | 16 | namespace eval cvs { namespace import ::vc::cvs::ws::* } |
| 16 | 17 | namespace eval fossil { namespace import ::vc::fossil::ws::* } |
| 18 | + namespace eval stats { namespace import ::vc::fossil::import::stats::* } |
| 17 | 19 | |
| 18 | 20 | fossil::configure -appname cvs2fossil |
| 19 | 21 | fossil::configure -ignore ::vc::cvs::ws::wsignore |
| 20 | 22 | } |
| 21 | 23 | |
| | @@ -59,73 +61,46 @@ |
| 59 | 61 | cvs::at $src ; # Define location of CVS repository |
| 60 | 62 | cvs::scan ; # Gather revision data from the archives |
| 61 | 63 | cvs::csets ; # Group changes into sets |
| 62 | 64 | cvs::rtree ; # Build revision tree (trunk only right now). |
| 63 | 65 | |
| 64 | | - set tot 0.0 |
| 65 | | - set nto 0 |
| 66 | | - |
| 67 | 66 | write 0 import {Begin conversion} |
| 68 | 67 | write 0 import {Setting up workspaces} |
| 69 | 68 | |
| 70 | 69 | cvs::workspace ; # cd's to workspace |
| 71 | 70 | fossil::begin [pwd] ; # Uses cwd as workspace to connect to. |
| 72 | | - |
| 73 | | - set ntrunk [cvs::ntrunk] ; set ntfmt %[string length $ntrunk]s |
| 74 | | - set nmax [cvs::ncsets] ; set nmfmt %[string length $nmax]s |
| 75 | | - |
| 76 | | - cvs::foreach_cset cset [cvs::root] { |
| 77 | | - write 0 import "ChangeSet [format $nmfmt $cset] @ [format $ntfmt $nto]/$ntrunk ([format %6.2f [expr {$nto*100.0/$ntrunk}]]%)" |
| 78 | | - Statistics [OneChangeSet $cset] |
| 79 | | - } |
| 80 | | - |
| 81 | | - write 0 import "========= [string repeat = 61]" |
| 82 | | - write 0 import "Imported $nto [expr {($nto == 1) ? "changeset" : "changesets"}]" |
| 83 | | - write 0 import "Within [format %.2f $tot] seconds (avg [format %.2f [expr {$tot/$nto}]] seconds/changeset)" |
| 84 | | - |
| 85 | | - cvs::wsclear |
| 86 | | - fossil::close $dst |
| 71 | + stats::setup [cvs::ntrunk] [cvs::ncsets] |
| 72 | + |
| 73 | + cvs::foreach_cset cset [cvs::root] { |
| 74 | + OneChangeSet $cset |
| 75 | + } |
| 76 | + |
| 77 | + stats::done |
| 78 | + cvs::wsclear |
| 79 | + fossil::close $dst |
| 80 | + |
| 87 | 81 | write 0 import Ok. |
| 88 | 82 | return |
| 89 | 83 | } |
| 90 | 84 | |
| 91 | 85 | # ----------------------------------------------------------------------------- |
| 92 | 86 | # Internal operations - Import a single changeset. |
| 93 | 87 | |
| 94 | | -proc ::vc::fossil::import::cvs::Statistics {sec} { |
| 95 | | - upvar 1 tot tot nto nto ntrunk ntrunk |
| 96 | | - |
| 97 | | - # No statistics if the commit was stopped before it was run |
| 98 | | - if {$sec eq ""} return |
| 99 | | - |
| 100 | | - incr nto |
| 101 | | - |
| 102 | | - set tot [expr {$tot + $sec}] |
| 103 | | - set avg [expr {$tot/$nto}] |
| 104 | | - set max [expr {$ntrunk * $avg}] |
| 105 | | - set rem [expr {$max - $tot}] |
| 106 | | - |
| 107 | | - write 3 import "st avg [format %.2f $avg] sec" |
| 108 | | - write 3 import "st run [format %7.2f $tot] sec [format %6.2f [expr {$tot/60}]] min [format %5.2f [expr {$tot/3600}]] hr" |
| 109 | | - write 3 import "st end [format %7.2f $max] sec [format %6.2f [expr {$max/60}]] min [format %5.2f [expr {$max/3600}]] hr" |
| 110 | | - write 3 import "st rem [format %7.2f $rem] sec [format %6.2f [expr {$rem/60}]] min [format %5.2f [expr {$rem/3600}]] hr" |
| 111 | | - return |
| 112 | | -} |
| 113 | | - |
| 114 | 88 | proc ::vc::fossil::import::cvs::OneChangeSet {cset} { |
| 115 | | - set usec [lindex [time { |
| 89 | + stats::csbegin $cset |
| 90 | + |
| 91 | + set microseconds [lindex [time { |
| 116 | 92 | foreach {user message timestamp} [cvs::wssetup $cset] break |
| 117 | 93 | foreach {uuid ad rm ch} [fossil::commit $cset $user $timestamp $message] break |
| 118 | 94 | } 1] 0] |
| 119 | | - cvs::uuid $cset $uuid |
| 95 | + set seconds [expr {$microseconds/1e6}] |
| 120 | 96 | |
| 121 | | - set sec [expr {$usec/1e6}] |
| 122 | | - |
| 97 | + cvs::uuid $cset $uuid |
| 123 | 98 | write 2 import "== $uuid +${ad}-${rm}*${ch}" |
| 124 | | - write 2 import "st in [format %.2f $sec] sec" |
| 125 | 99 | |
| 126 | | - return $sec |
| 100 | + stats::csend $seconds |
| 101 | + return |
| 127 | 102 | } |
| 128 | 103 | |
| 129 | 104 | # ----------------------------------------------------------------------------- |
| 130 | 105 | |
| 131 | 106 | namespace eval ::vc::fossil::import::cvs { |
| 132 | 107 | |