File History

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

History of tools/cvs2fossil/lib/pkgIndex.tcl

Split the current import pass into three, for files, changesets, and finalization (fossil rebuild). file: [b810fde7] check-in: [31b15fcf] user: aku branch: trunk, size: 4908
Created a memory tracking subsystem to investigate memory consumption of the system in general, and pass InitCsets in particular. getmemory series is a postprocessor pulling the data out of the log and into a tables gnuplot is able to handle. file: [73c4287b] check-in: [8287044e] user: aku branch: trunk, size: 4671
Added classes to track the state of a workspace, and of the whole revision import. file: [8e64440f] check-in: [d011e0b0] user: aku branch: trunk, size: 4568
Extended the collection of revisions for a file with a separate blob store to manage the text ranges of revisions and their dependencies separate from the revisions. This will be used later (upcoming) to properly expand a file even if revisions were removed as irrelevant during the collection and filter passes. file: [a73808ac] check-in: [aa04ac9d] user: aku branch: trunk, size: 4346
Removed two unused classes. file: [bb5f385c] check-in: [97e0e9dd] user: aku branch: trunk, size: 4233
Created new pass for the import of files and changesets. Uses the new file method and fossil accessor class to handle the file import. Changeset -> manifest conversion is _not_ covered yet. file: [fde79c66] check-in: [d9fc75e5] user: aku branch: trunk, size: 4455
Added helper class managing access to fossil repositories. Already has a basic method to import and delta-compress a series of files. Used 'test' commands of fossil to get the necessary low-level access. file: [c5fb9bac] check-in: [b6bf21e2] user: aku branch: trunk, size: 4344
Put the graph traversal core of the cycle breaker core into a separate class, for use in other parts of the system. TODO: Rewrite the cycle breaker core in terms of this class. file: [0a082ba7] check-in: [e7013137] user: aku branch: trunk, size: 4234
The performance was still not satisfying, even with faster recomputing of successors. Doing it multiple times (Building the graph in each breaker and sort passes) eats time. Caching in memory blows the memory. Chosen solution: Cache this information in the database.    Created a new pass 'CsetDeps' which is run between 'InitCsets' and 'BreakRevCsetCycles' (i.e. changeset creation and first breaker pass). It computes the changeset dependencies from the file-level dependencies once and saves the result in the state, in the new table 'cssuccessor'. Now the breaker and sort passes can get the information quickly, with virtually no effort. The dependencies are recomputed incrementally when a changeset is split by one of the breaker passes, for its fragments and its predecessors.    The loop check is now trivial, and integrated into the successor computation, with the heavy lifting for the detailed analysis and reporting moved down into the type-dependent SQL queries. The relevant new method is 'loops'. Now that the loop check is incremental the pass based checks have been removed from the integrity module, and the option '--loopcheck' has been eliminated. For paranoia the graph setup and modification code got its loop check reinstated as an assert, redusing the changeset report code.    Renumbered the breaker and sort passes. A number of places, like graph setup and traversal, loading of changesets, etc. got feedback indicators to show their progress.    The selection of revision and symbol changesets for the associated breaker passes was a bit on the slow side. We now keep changeset lists sorted by type (during loading or general construction) and access them directly. file: [bba80efc] check-in: [00bf8c19] user: aku branch: trunk, size: 4124
Investigation of changeset order differences between running passes 1 to 6 and pass 6 alone show why the topological sort passes are separate in cvs2svn. The breaking of cycles can change the order of things due to different timeranges and dependencies of the broken changesets. Created two new passes for the sorting. The break passes 7 and 8 are now passes 8 and 9, and the new sort passes are 7 and 10. file: [d37efe5d] check-in: [66c85b4d] user: aku branch: trunk, size: 4011
Added the ability to export the changeset graphs processed by the passes 6 to 8 using GraphViz's dot-format. This is activated by using the switch '--dots'. Bugfixes in the cycle breaker. First corrected variable names, I forgot to use the standard 'myXXX' format for the typevariables. Second, fixed a bug uncovered by looking at the exported graphs, which caused the system to loose arcs, possibly breaking cycles without actually breaking them, leaving them in the dependencies. file: [48c25458] check-in: [7f15be90] user: aku branch: trunk, size: 3785
Added skeleton of pass 8, the final pass for the breaking of dependency cycles. This pass will handle the remaining cycles crossing revision and symbol changesets. file: [326b42f7] check-in: [e7c805f1] user: aku branch: trunk, size: 3682
Completed pass 7, breaking dependency cycles over symbol changesets. Moved the bulk of the cycle breaker code into its own class as it was common to the passes 6 and 7, and updated the two passes accordingly. Added code to load the changeset counter from the state to start properly. file: [e9e0ed3b] check-in: [770a9b57] user: aku branch: trunk, size: 3566
Added skeleton files for pass 7, the breaking of dependency cycles over symbol-based changesets. file: [f2f4cb7b] check-in: [258366a3] user: aku branch: trunk, size: 3450
Completed pass 6, wrote the code performing the breaking of cycles. Done by analysing each triple of changesets in the cycle at the file dependency level to see which revisions can be sorted apart. Added some additional utility routines. Extended the changeset class with the accessors required by the cycle breaker. file: [a937f1cd] check-in: [94c39d63] user: aku branch: trunk, size: 3334
Started on pass 6, breaking cycles between revision based changesets. Added skeleton files. file: [dbfdadaf] check-in: [2a01d504] user: aku branch: trunk, size: 3222
Started on pass 5, computing the initial approximate set of project level revisions, aka 'ChangeSets'. Skeleton of the pass added. file: [183f520c] check-in: [54d1e353] user: aku branch: trunk, size: 3054
Moved the paranoid integrity checks of pass 2 into a separate package for use by other passes, and changed pass 4 to also run these checks, albeit in a (slightly) relaxed form. See the comments at the point of call for the reason. This completes pass 4. file: [9cd7a5dc] check-in: [131f0518] user: aku branch: trunk, size: 2942
Started on pass 4, 'FilterSymbols'. Skeleton. file: [d11a0332] check-in: [11e5d7ce] user: aku branch: trunk, size: 2831
Skeleton for pass 3 added, collating the symbols. file: [1cffea0d] check-in: [6d4eb247] user: aku branch: trunk, size: 2719
Created a separate common class for the id databases used by the repository, and updated the repository code to use it. file: [94c8694e] check-in: [99e165d5] user: aku branch: trunk, size: 2609
Added a lot of skeleton files for the revision and symbol data structures, for both project and file level. file: [4291c23a] check-in: [84de38d7] user: aku branch: trunk, size: 2510
Fleshed out pass II, added skeleton of rcs archive class, started integration of rcs parser. file: [94d43620] check-in: [8a93ffa9] user: aku branch: trunk, size: 1626
Bringing back in the old parser for rcs archives. file: [96ca91f4] check-in: [860f533e] user: aku branch: trunk, size: 1522
Added pass II (collection of revision and symbols), basic skeleton and state definitions, and integrated into the pass manager. file: [da1f72a6] check-in: [fdbc01df] user: aku branch: trunk, size: 1417
Added the basic parts of the state manager and integrated it with option processor and pass manager. file: [f6ad9cb7] check-in: [eb656de7] user: aku branch: trunk, size: 1299
Continued work on pass I. Filled in the repository management, and basic implementation of project objects. Missing are persistence and the foundation for that (cache database). file: [e327e448] check-in: [52f22540] user: aku branch: trunk, size: 1195
Added stub for repository management, added most of pass I, collecting archives in the repository. file: [2c710991] check-in: [47740cc1] user: aku branch: trunk, size: 989
Added the pass management, integrated with application and option processor. file: [d90ebe99] check-in: [59115153] user: aku branch: trunk, size: 744
Re-added the user feedback and error reporting utilities, with modifications, and completed the handling of the informational options. file: [6725ddc0] check-in: [d57b7b4a] user: aku branch: trunk, size: 647
Third attempt at getting a cvs importer which can handle branches. Using cvs2svn code and design notes as a guide. file: [5b7b4433] check-in: [2a98ac44] user: aku branch: trunk, size: 459 Added