File History
Not logged in

History of tools/cvs2fossil/lib/c2f_cyclebreaker.tcl

2007-12-05
02:25:30 [59ef48a9b8] part of check-in [5b2d15f183] Fixed typo, although it did not break anything. (By: aku on 2007-12-05 02:25:30) [diff] [annotate]
2007-12-02
20:04:40 [775fd1f9e5] part of check-in [00bf8c198e] 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. (By: aku on 2007-12-02 20:04:40) [diff] [annotate]
06:18:42 [6e157515ed] part of check-in [487bb1c619] Modified loop check in cycle breaker to abort immediately on first looped changeset. (By: aku on 2007-12-02 06:18:42) [diff] [annotate]
03:41:33 [c1b1baf75a] part of check-in [41d41c7b57] Added progress output to the code loading up the graph to traverse, nodes, and arcs. (By: aku on 2007-12-02 03:41:33) [diff] [annotate]
2007-11-30
06:57:19 [9dfc0b4e4f] part of check-in [0af7a3c8ac] 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. (By: aku on 2007-11-30 06:57:19) [diff] [annotate]
03:57:19 [10b6b95ceb] part of check-in [b42cff97e3] 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. (By: aku on 2007-11-30 03:57:19) [diff] [annotate]
2007-11-29
09:13:07 [df041b5731] part of check-in [960645443b] Extended checks for looped changesets. (By: aku on 2007-11-29 09:13:07) [diff] [annotate]
07:55:01 [60fbae5ce7] part of check-in [04d76a9e79] 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. (By: aku on 2007-11-29 07:55:01) [diff] [annotate]
2007-11-27
09:05:45 [be1a345cb2] part of check-in [3e18606b5c] Bugfix: Sort pending nodes fully deterministic, and moved to separate helper command. Tweaked log output. (By: aku on 2007-11-27 09:05:45) [diff] [annotate]
2007-11-25
07:54:09 [6387ad3ed8] part of check-in [b679ca3356] Code cleanup. Removed trailing whitespace across the board. (By: aku on 2007-11-25 07:54:09) [diff] [annotate]
07:35:30 [bc82f06795] part of check-in [97b4405ecf] 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. (By: aku on 2007-11-25 07:35:30) [diff] [annotate]
02:51:50 [20cdcc5766] part of check-in [54e9b0a143] Tweaks of the log output, and reworked internals to expose not only breaking of cycles, but of paths as well. (By: aku on 2007-11-25 02:51:50) [diff] [annotate]
2007-11-24
05:31:30 [ddec7fb99c] part of check-in [87cf609021] Created convenience methods to create the human readable repesentation of a changeset and lists of such, and made liberal use of them. (By: aku on 2007-11-24 05:31:30) [diff] [annotate]
04:15:46 [a02d54b2ad] part of check-in [eabaea870a] Added a number of assertions and must-not-happens with associated log output. Plus some small tweaks, and notes. (By: aku on 2007-11-24 04:15:46) [diff] [annotate]
03:59:55 [675dc7f03b] part of check-in [a99d5798f6] Added missing node attributes in the Replace command. (By: aku on 2007-11-24 03:59:55) [diff] [annotate]
2007-11-23
05:43:25 [0d5893505c] part of check-in [5f5620fbd2] 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. (By: aku on 2007-11-23 05:43:25) [diff] [annotate]
2007-11-22
07:22:38 [00c265ebb6] part of check-in [f284847134] Reworked the dot export internals a bit to be more general regarding labeling and attribute writing. Updated the cycle breaker to define proper labels. (By: aku on 2007-11-22 07:22:38) [diff] [annotate]
03:03:44 [0fd2ab8302] part of check-in [ad7d5c2d10] 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. (By: aku on 2007-11-22 03:03:44) [diff] [annotate]
2007-11-21
04:44:13 [f2e71127d5] part of check-in [1f60018119] Fixed typo in cycle breaker logging. Extended pass 8, wrote the outline with all the relevant custom callbacks. (By: aku on 2007-11-21 04:44:13) [diff] [annotate]
04:36:13 [999857d4f3] part of check-in [2a0ec504c5] 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. (By: aku on 2007-11-21 04:36:13) [diff] [annotate]
04:11:59 [674bdc4eb4] part of check-in [1e177a4c91] Cycle breaker, API extension. Added a hook to process the graph between setup and regular consummation. This will be used by pass 8. (By: aku on 2007-11-21 04:11:59) [diff] [annotate]
04:05:53 [af14f4e127] part of check-in [2cf0462b82] 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. (By: aku on 2007-11-21 04:05:53) [diff] [annotate]
03:46:22 [9c7c517526] part of check-in [d58423cdc4] 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. (By: aku on 2007-11-21 03:46:22) [diff] [annotate]
2007-11-20
06:59:03 [7d4b849665] part of check-in [7f15be9078] 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. (By: aku on 2007-11-20 06:59:03) [diff] [annotate]
2007-11-17
00:29:42 [41093323e5] part of check-in [38b967dcf5] Merge aku's CVS import changes into the main line. Fix a small bug in diff.c. (By: drh on 2007-11-17 00:29:42) [annotate]
2007-11-16
06:51:25 [41093323e5] part of check-in [7b3928681e] Bugfix. Destroy graph object after use. (By: aku on 2007-11-16 06:51:25) [diff] [annotate]
04:17:30 [b193a65e99] part of check-in [770a9b576a] 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. (By: aku on 2007-11-16 04:17:30) [annotate]