History for tools/cvs2fossil/lib/c2f_pbreakacycle.tcl

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

History for tools/cvs2fossil/lib/c2f_pbreakacycle.tcl

[4f1e51a0] part of check-in [e757cd3d] Let's bring down the number of eol-spaces someswhat more. No functional changes. (check-in: [e757cd3d] user: jan.nijtmans branch: trunk, size: 14077)
[6d6903cd] part of check-in [83ecb5b9] Fix comment typo, and add comment about possible simplification. (check-in: [83ecb5b9] user: aku branch: trunk, size: 14078)
[9de68fa9] part of check-in [f637d422] Updated my notes regarding memory usage. Converted more locations to incremental query processing via 'state foreachrow', now throughout the importer. (check-in: [f637d422] user: aku branch: trunk, size: 14078)
[3f3d02eb] part of check-in [22905072] Fixed log progress use in last breaker pass. Disabled the check regarding revision order. It still triggers and I can't see anything wrong. Pressing forward for now, i.e. get the remaining passes done, then revisit this issue. (check-in: [22905072] user: aku branch: trunk, size: 14084)
[4af95179] part of check-in [711e0002] Reworked ComputeLimits in the last breaker pass. Moved the heavy computation of the max predecessor / min successor data down to the sql in the changeset class. (check-in: [711e0002] user: aku branch: trunk, size: 13960)
[7e073778] part of check-in [e288af39] Fluff: Renamed state methods use/reading/writing to usedb/use/extend for clarity. Updated all callers. Extended state module with code to dump the SQL statements it receives to a file for analysis. Extended the 'use' declarations of several passes. (check-in: [e288af39] user: aku branch: trunk, size: 13679)
[9244bb5c] part of check-in [00bf8c19] 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. (check-in: [00bf8c19] user: aku branch: trunk, size: 13616)

[f65b1a93] part of check-in [a437da48] Added progress output to the breaking of backward branches. (check-in: [a437da48] user: aku branch: trunk, size: 13570)
[2c3ba3a1] part of check-in [b42cff97] Replaced the checks for self-referential changesets in the cycle breaker with a scheme in the changeset class doing checks when splitting a changeset, which is also called by the general changeset integrity code, after each pass. Extended log output at high verbosity levels. Thorough checking of the fragments a changeset is to be split into. (check-in: [b42cff97] user: aku branch: trunk, size: 13478)
[da5cab23] part of check-in [80b1e893] Renamed state table 'csrevision' to 'csitem' to reflect the new internals of changesets. Updated all places where it is used. (check-in: [80b1e893] user: aku branch: trunk, size: 13459)
[a5b0f59e] part of check-in [af5904e6] Updated commentary regarding cycles at this point, items instead of comments, etc. (check-in: [af5904e6] user: aku branch: trunk, size: 13463)
[72b7ac3d] part of check-in [2c9c2681] Added missing state declarations. (check-in: [2c9c2681] user: aku branch: trunk, size: 14230)
[143b6f64] part of check-in [47d52d1e] Added convenience method for assertions and used it in place of the existing if/trouble internal constructions. Changed API of 'log write' so that we can defer substituation of the message to when the write actually happen, and converted all places which would be hit by double-substitution. The remaining 'log write' calls will be converted incrementally. (check-in: [47d52d1e] user: aku branch: trunk, size: 14179)
[7ef64f53] part of check-in [6b520e7d] Modified to break all backward symbols, not only branches, removed the other custom circle breaking code, should not be needed any longer (See comments for proof). (check-in: [6b520e7d] user: aku branch: trunk, size: 14217)
[642a0a9f] part of check-in [8c6488de] Continued work on the integrity checks for changesets. Moved callers out of transactions. Two checks are already tripping on bad changesets made by InitCSets (pass 5). (check-in: [8c6488de] user: aku branch: trunk, size: 17551)
[94928921] part of check-in [bf83201c] Outline for more integrity checks, focusing on the changesets. (check-in: [bf83201c] user: aku branch: trunk, size: 17559)
[6aba1b2f] part of check-in [b679ca33] Code cleanup. Removed trailing whitespace across the board. (check-in: [b679ca33] user: aku branch: trunk, size: 17388)
[2eea5c9c] part of check-in [1ea319fb] Another helper, textual, write changeset data to stdout. (check-in: [1ea319fb] user: aku branch: trunk, size: 17389)
[456c81fc] part of check-in [d743f04b] Moved more parts taken over by the top. sort passes out the breaker passes, and renumbered them. (check-in: [d743f04b] user: aku branch: trunk, size: 11304)
[c41eb33d] part of check-in [87cf6090] Created convenience methods to create the human readable repesentation of a changeset and lists of such, and made liberal use of them. (check-in: [87cf6090] user: aku branch: trunk, size: 11668)
[42309dff] part of check-in [6d636343] Tweaked log output a bit. Bugfixes: Forgot to propagate the border information into SplitRevisions, and a varname typo. (check-in: [6d636343] user: aku branch: trunk, size: 11424)
[ba2a0b84] part of check-in [7ed2f29d] Updated passes 6 and 8 for to the changtes in the cycle breaker API (changed signature of save callback). (check-in: [7ed2f29d] user: aku branch: trunk, size: 11400)
[2878f839] part of check-in [e50f9ed5] Continued work on pass 8. Completed the handling of backward branches, file level analysis and splitting them. Extended changesets with the necessary methods to the predecessor data and proper per-revision maps. (check-in: [e50f9ed5] user: aku branch: trunk, size: 11394)
[2f61c9c5] part of check-in [4f1b60dd] Continued work on pass 8. Renamed 'retrograde' to 'Backward Branch', should be easier to understand, and completed the predicate testing if a branch changeset is backward or not. (check-in: [4f1b60dd] user: aku branch: trunk, size: 7567)
[a4b4de49] part of check-in [4866889e] Continued work on pass 8, added outline for handling of retrograde branches, extended changesets with predicate allowing us to find the branch changesets. (check-in: [4866889e] user: aku branch: trunk, size: 6021)
[5bbb1492] part of check-in [de4cff41] Extended changeset class with in-memory database mapping from changeset ids to the proper object, and extended the objects with position information and associated accessors. Extended pass 8 to load the commit order computed in pass 6, this is stored in the new position slot of changesets, and an inverted index mapping from position to changeset at that position. (check-in: [de4cff41] user: aku branch: trunk, size: 4789)
[20494b63] part of check-in [1f600181] Fixed typo in cycle breaker logging. Extended pass 8, wrote the outline with all the relevant custom callbacks. (check-in: [1f600181] user: aku branch: trunk, size: 4110)
[dbc8fff9] part of check-in [2a0ec504] Cycle breaker, API change. The changesets are now communicated via a retrieval callback instead of directly. Updated passes 6 and 7. This allowed us to move the start/done graph exports into the cyclebreaker as well. Changeset selection in pass 8 now in separate command too for this. (check-in: [2a0ec504] user: aku branch: trunk, size: 3513)
[c92253ed] part of check-in [7f15be90] 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. (check-in: [7f15be90] user: aku branch: trunk, size: 3467)
[9a96d449] part of check-in [e7c805f1] 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. (check-in: [e7c805f1] user: aku branch: trunk, size: 3384) Added