Check-in [3a00ac5aa2]
Not logged in
Overview

SHA1 Hash:3a00ac5aa2b0a4b67f043f8dd30608b6211a4053
Date: 2007-10-23 02:29:55
User: aku
Comment:Due to quickly building memory pressure for large cvs repositories (thousands of revisions and symbol object) we have to save the pertinent information of a file immediately after it has been processed and then clear the memory. Inserted the basic skeleton for this into pass and file objects.
Timelines: ancestors | descendants | both | trunk
Other Links: files | ZIP archive | manifest

Tags And Properties
Changes
[hide diffs]

Modified tools/cvs2fossil/lib/c2f_file.tcl from [55db58afdc] to [1f4a6c30ea].

@@ -66,10 +66,13 @@
     ## Persistence (pass II)
 
     method persist {} {
     }
 
+    method drop {} {
+    }
+
     # # ## ### ##### ######## #############
     ## Implement the sink
 
     method begin {} {#ignore}
 
@@ -402,11 +405,11 @@
 		}
 		unset mytags($revnr)
 	    } else {
 		set rev $myrev($revnr)
 		foreach tag $taglist {
-		    $rev addtag $tag
+		    $rev addtag    $tag
 		    $tag settagrev $rev
 		}
 	    }
 	}
 	return

Modified tools/cvs2fossil/lib/c2f_pcollrev.tcl from [47f6b87c0b] to [38ef86c838].

@@ -208,10 +208,21 @@
 		    } else {
 			global errorInfo
 			trouble internal $errorInfo
 		    }
 		}
+
+		# We persist the core of the data collected about each
+		# file immediately after it has been parsed and
+		# wrangled into shape, and then drop it from
+		# memory. This is done to keep the memory requirements
+		# within limits, i.e. without doing it this way it is
+		# easy to blow 1G of RAM with all the objects
+		# (revisions and file-level symbols).
+
+		$file persist
+		$file drop
 	    }
 	}
 
 	repository printrevstatistics
 	repository persistrev