File History

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

History of tools/cvs2fossil/lib/c2f_cyclebreaker.tcl

Fixed typo, although it did not break anything. file: [59ef48a9] check-in: [5b2d15f1] user: aku branch: trunk, size: 16845
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: [775fd1f9] check-in: [00bf8c19] user: aku branch: trunk, size: 16844
Modified loop check in cycle breaker to abort immediately on first looped changeset. file: [6e157515] check-in: [487bb1c6] user: aku branch: trunk, size: 16736
Added progress output to the code loading up the graph to traverse, nodes, and arcs. file: [c1b1baf7] check-in: [41d41c7b] user: aku branch: trunk, size: 16730
Easier name for self-referential changesets, loopcheck. Made conditional on option --loopcheck, default off, and avoided if the general checks on changesets report trouble. Reinstated the loop check in the cycle breaker core in simpler form, reusing the new command in the changeset class. file: [9dfc0b4e] check-in: [0af7a3c8] user: aku branch: trunk, size: 16574
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. file: [10b6b95c] check-in: [b42cff97] user: aku branch: trunk, size: 16225
Extended checks for looped changesets. file: [df041b57] check-in: [96064544] user: aku branch: trunk, size: 17610
Renamed changeset method to describe modified results, and updated the one invoker. Modified the sorting of time ranges. Now by max, min as tiebreaker, and object name as last tiebreaker. file: [60fbae5c] check-in: [04d76a9e] user: aku branch: trunk, size: 17309
Bugfix: Sort pending nodes fully deterministic, and moved to separate helper command. Tweaked log output. file: [be1a345c] check-in: [3e18606b] user: aku branch: trunk, size: 17224
Code cleanup. Removed trailing whitespace across the board. file: [6387ad3e] check-in: [b679ca33] user: aku branch: trunk, size: 17012
Extended cycle breaker with debug facility allowing the user to watch the neighbourhood of specific changesets during the traversal. Extended label information, highlighting of the nodes of interest. Tweaked log output a bit. file: [bc82f067] check-in: [97b4405e] user: aku branch: trunk, size: 17014
Tweaks of the log output, and reworked internals to expose not only breaking of cycles, but of paths as well. file: [20cdcc57] check-in: [54e9b0a1] user: aku branch: trunk, size: 15651
Created convenience methods to create the human readable repesentation of a changeset and lists of such, and made liberal use of them. file: [ddec7fb9] check-in: [87cf6090] user: aku branch: trunk, size: 15294
Added a number of assertions and must-not-happens with associated log output. Plus some small tweaks, and notes. file: [a02d54b2] check-in: [eabaea87] user: aku branch: trunk, size: 15381
Added missing node attributes in the Replace command. file: [675dc7f0] check-in: [a99d5798] user: aku branch: trunk, size: 14202
Modified cycle breaker API. Hook for processed nodes now takes the graph as new first argument. Extended API, exposed method for dumping the current state of the graph, including ability to dump a sub graph. file: [0d589350] check-in: [5f5620fb] user: aku branch: trunk, size: 14103
Reworked the dot export internals a bit to be more general regarding labeling and attribute writing. Updated the cycle breaker to define proper labels. file: [00c265eb] check-in: [f2848471] user: aku branch: trunk, size: 13926
Reworked the cycle breaker internals, moving the code handling the replacement of a changset (= node) with its fragments into a separate command. Extended the API, exposing the replacement operation, for use by passes. Added debugging code showing the set of consumable nodes for each iteration. file: [0fd2ab83] check-in: [ad7d5c2d] user: aku branch: trunk, size: 13878
Fixed typo in cycle breaker logging. Extended pass 8, wrote the outline with all the relevant custom callbacks. file: [f2e71127] check-in: [1f600181] user: aku branch: trunk, size: 13378
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. file: [999857d4] check-in: [2a0ec504] user: aku branch: trunk, size: 13377
Cycle breaker, API extension. Added a hook to process the graph between setup and regular consummation. This will be used by pass 8. file: [674bdc4e] check-in: [1e177a4c] user: aku branch: trunk, size: 13052
Cycle breaker, API change. Routing the core cycle breaking through a callback so that users can choose their own algorithms. Updated passes 6 and 7. Moven changesets selection in pass 7 to separate command. file: [af14f4e1] check-in: [2cf0462b] user: aku branch: trunk, size: 12547
API change cycle breaker. The save callback command is now specified through a separate configuration command. Moved callback invokation to helper command. Updated pass 6. Moved changeset selection to helper command. file: [9c7c5175] check-in: [d58423cd] user: aku branch: trunk, size: 11799
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: [7d4b8496] check-in: [7f15be90] user: aku branch: trunk, size: 11413
Bugfix. Destroy graph object after use. file: [41093323] check-in: [7b392868] user: aku branch: trunk, size: 9207
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: [b193a65e] check-in: [770a9b57] user: aku branch: trunk, size: 9194 Added