Diff
Not logged in

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