SHA1 Hash: | 27b15b7095e1c53df376e85a86f6348421bd31a0 |
---|---|
Date: | 2007-11-29 05:58:53 |
User: | aku |
Comment: | This commit starts a series of incremental changes not quite
completely overhauling the handling of changesets, i.e. of
project-level revisions. Actually this series of changes already
started with 8ce7ffff21 as the bug it fixes was found when the first
parts of the overhaul tripped the new integrity conditions for the
modified changesets.
Background: In the last few days I repeatedly ran against the wall of an assertion in pass 9, last of the cycle breakers, with the revision changesets coming in out of order when the symbols were added to the dependency graph. While walking to the office, and later re-reading the relevant parts of cvs2svn again I had several insights. Trigger was the realization that giving the tag changesets successor dependencies was wrong. Tags describe a state, they have no successors. This caused the re-read, and I recognized that my handling of the symbol changesets was completely wrong, that with using revisions as their data. It should have been the tags and branches. From there their actual dependencies (versus my reuse of revision dependencies) fell out naturally. I have decided to commit my rewrite of the internals incrementally to make it easier to follow them, despite leaving the sourcebase in an unusable state during the series. One big commit would be much more difficult to understand. The central change is to the changeset class, which becomes a trinity, holding either revisions, tags, or branches, with type-dependent code to retrieve their dependencies. The remainder of the changes are 'just' adaptions of the users to the changed API. First change: Add outline of the helper classes, singletons actually, to hold the type-dependent functionality. |
Timelines: | ancestors | descendants | both | trunk |
Other Links: | files | ZIP archive | manifest |
- branch=trunk inherited from [a28c83647d]
- sym-trunk inherited from [a28c83647d]
Modified tools/cvs2fossil/lib/c2f_prev.tcl from [836578d137] to [dd4e59c472]. [diff]