Overview
Version: | e5b344f6b26dffaaaaa0c4991b39d84e6372b1e9 |
---|---|
Date: | 2007-12-04 20:25:42 |
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.
- Generate a manifest file for a list of files (paths, ids), parent manifest references, user, timestamp, log message. Could be signed or not.