Overview
Version: | b261253ccef6558a1bcf5a653efa9687b1fa5b02 |
---|---|
Date: | 2007-12-04 20:24:13 |
Original User: | anonymous |
Commands: | history | raw-text |
Content
Spiritual ancestor: cvs2svn.
Similarities:
- Using identical highlevel architecture (pass-based)
- Using some specific algorithms (graph traversal).
Differences:
- Not using any code (Different languages for one thing, Python there, Tclhere.).
- Persistent state completely different, using sqlite database for all things.
Status:
- Pass CollAr: Collect archives - ok.
- Pass CollRev: Collect revisions, tags, branches (file level) - ok.
- Pass CollSym: Collate symbol (project level) from the file level data - ok.
- Pass FilterSym: Filter symbols, exclude symbols and lines of development - ok.
- Pass InitCsets: Create initial changesets - ok. Memory Hog, Slow commit
- Pass CsetDeps: Compute changeset dependencies from revision dependencies - ok.
- Pass BreakRCycle: Break cycles among revision changesets - ok.
- Pass RevTopSort: Topologically sort revision changesets - ok.
- Pass BreakSCycle: Break cycles among symbol changesets - ok.
- Pass BreakACycle: Break cycles over all changesets - May still change the order of revision changesets over the result of pass 7.
- Pass ATopSort: Should be ok.
Passes to do:
- Put changeset order from the top.sort passes and tree of symbols from the coll|FilterSym passes together into a tree of changesets. Note that it might not be a tree if there is an NTDB around. * Perform the actual import.
Notes regarding the actual import:
- cvs2svn is either slow, or hungry for diskspace. The reason: It is importing changeset by changeset and so has to either regenerate the needed revisions of the files on-demand over and over, or it caches the needed revisions when created until the last user is gone.
- We can do better, if we get help from fossil. We would need commands to perform the following actions:
- Import a file as blob, return its internal id.
- Deltify a known file respective to a second known file.