Differences From:
File
tools/cvs2fossil/lib/c2f_pinitcsets.tcl
part of check-in
[66235f2430]
- Updated the copyright information of all files touched in the new year.
by
aku on
2008-02-06 05:04:12.
Also file
tools/cvs2fossil/lib/c2f_pinitcsets.tcl
part of check-in
[6b78df3861]
- Merge in changes from Andreas's branch.
by
drh on
2008-02-08 21:52:21.
[view]
To:
File
tools/cvs2fossil/lib/c2f_pinitcsets.tcl
part of check-in
[27ed4f7dc3]
- Extended pass InitCsets and underlying code with more log output geared towards memory introspection, and added markers for special locations. Extended my notes with general observations from the first test runs over my example CVS repositories.
by
aku on
2008-02-16 06:46:41.
[view]
@@ -20,8 +20,9 @@
package require Tcl 8.4 ; # Required runtime.
package require snit ; # OO system.
package require vc::tools::misc ; # Text formatting.
package require vc::tools::log ; # User feedback.
+package require vc::tools::mem ; # Memory tracking.
package require vc::fossil::import::cvs::repository ; # Repository management.
package require vc::fossil::import::cvs::state ; # State storage.
package require vc::fossil::import::cvs::integrity ; # State integrity checks.
package require vc::fossil::import::cvs::project::rev ; # Project level changesets
@@ -180,19 +181,27 @@
# however would mean lots of (slow) method invokations
# on the csets. Doing it like this, late creation, means
# less such calls. None, but the creation itself.
+ log write 14 initcsets meta_begin
+ mem::mark
foreach {mid rid pid} [state run {
SELECT M.mid, R.rid, M.pid
FROM revision R, meta M -- R ==> M, using PK index of M.
WHERE R.mid = M.mid
ORDER BY M.mid, R.date
}] {
+ log write 14 initcsets meta_next
+
if {$lastmeta != $mid} {
if {[llength $revisions]} {
incr n
set p [repository projectof $lastproject]
+ log write 14 initcsets meta_cset_begin
+ mem::mark
project::rev %AUTO% $p rev $lastmeta $revisions
+ log write 14 initcsets meta_cset_done
+ mem::mark
set revisions {}
}
set lastmeta $mid
set lastproject $pid
@@ -202,17 +211,25 @@
if {[llength $revisions]} {
incr n
set p [repository projectof $lastproject]
+ log write 14 initcsets meta_cset_begin
+ mem::mark
project::rev %AUTO% $p rev $lastmeta $revisions
+ log write 14 initcsets meta_cset_done
+ mem::mark
}
+
+ log write 14 initcsets meta_done
+ mem::mark
log write 4 initcsets "Created [nsp $n {revision changeset}]"
return
}
proc CreateSymbolChangesets {} {
log write 3 initcsets {Create changesets based on symbols}
+ mem::mark
# Tags and branches induce changesets as well, containing the
# revisions they are attached to (tags), or spawned from
# (branches).
@@ -280,8 +297,9 @@
project::rev %AUTO% $p sym::branch $lastsymbol $branches
}
log write 4 initcsets "Created [nsp $n {symbol changeset}]"
+ mem::mark
return
}
proc BreakInternalDependencies {} {
@@ -293,8 +311,9 @@
# fragments. The results are changesets which have no internal
# dependencies, only external ones.
log write 3 initcsets {Break internal dependencies}
+ mem::mark
set old [llength [project::rev all]]
foreach cset [project::rev all] {
$cset breakinternaldependencies
@@ -302,8 +321,9 @@
set n [expr {[llength [project::rev all]] - $old}]
log write 4 initcsets "Created [nsp $n {additional revision changeset}]"
log write 4 initcsets Ok.
+ mem::mark
return
}
proc PersistTheChangesets {} {
@@ -334,8 +354,11 @@
namespace import ::vc::fossil::import::cvs::state
namespace import ::vc::fossil::import::cvs::integrity
namespace eval project {
namespace import ::vc::fossil::import::cvs::project::rev
+ }
+ namespace eval mem {
+ namespace import ::vc::tools::mem::mark
}
namespace import ::vc::tools::misc::*
namespace import ::vc::tools::log
log register initcsets