Fossil

File History
Login

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

History of tools/cvs2fossil/lib/c2f_pbreakrcycle.tcl

2007-12-02
23:47
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. file: [9b0d3d53] check-in: [e288af39] user: aku branch: trunk, size: 4018
20:04
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: [3c073e95] check-in: [00bf8c19] user: aku branch: trunk, size: 3970
2007-11-30
03:57
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: [0b1951c1] check-in: [b42cff97] user: aku branch: trunk, size: 4023
2007-11-29
09:16
Renamed state table 'csrevision' to 'csitem' to reflect the new internals of changesets. Updated all places where it is used. file: [4ea6d532] check-in: [80b1e893] user: aku branch: trunk, size: 4004
2007-11-27
04:26
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). file: [630bffc4] check-in: [8c6488de] user: aku branch: trunk, size: 4008
02:37
Outline for more integrity checks, focusing on the changesets. file: [685d23fe] check-in: [bf83201c] user: aku branch: trunk, size: 4016
2007-11-25
07:54
Code cleanup. Removed trailing whitespace across the board. file: [f27a20d7] check-in: [b679ca33] user: aku branch: trunk, size: 3845
03:00
Moved the parts taken over by the top. sort passes out the breaker passes, and renumbered them (comments). file: [21b55594] check-in: [b6b7ff79] user: aku branch: trunk, size: 3846
2007-11-24
05:31
Created convenience methods to create the human readable repesentation of a changeset and lists of such, and made liberal use of them. file: [e139c81d] check-in: [87cf6090] user: aku branch: trunk, size: 4461
03:56
Updated passes 6 and 8 for to the changtes in the cycle breaker API (changed signature of save callback). file: [956cfdff] check-in: [7ed2f29d] user: aku branch: trunk, size: 4450
2007-11-21
04:36
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: [9bec773f] check-in: [2a0ec504] user: aku branch: trunk, size: 4444
04:05
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: [1228cf67] check-in: [2cf0462b] user: aku branch: trunk, size: 4559
03:46
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: [d4b18e16] check-in: [d58423cd] user: aku branch: trunk, size: 4487
2007-11-20
06:59
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: [4f907e01] check-in: [7f15be90] user: aku branch: trunk, size: 4489
2007-11-16
08:32
Added convenience command to the state package when the sql returns a single row. Added more statistics about revisions, tags, branches, symbols, changesets to various passes. file: [03010036] check-in: [96b7bfb8] user: aku branch: trunk, size: 4291
06:55
Moved out-of-place state declarations to the proper phase (setup, not run). file: [95b71ab7] check-in: [ce7fb48e] user: aku branch: trunk, size: 4117
04:17
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: [7f124d81] check-in: [770a9b57] user: aku branch: trunk, size: 4117
03:59
Bugfix. When setting up or extended the changeset graph a changeset's successor may lay outside of the set of changesets under consideration, i.e. without a node in the graph. Ignore these. This did not (or only rarely) happen before the bugfix to the successor computation of changesets in project::rev (list instead of single). file: [bcbf738b] check-in: [de64c94f] user: aku branch: trunk, size: 10292
2007-11-14
05:11
Completed pass 6, wrote the code performing the breaking of cycles. Done by analysing each triple of changesets in the cycle at the file dependency level to see which revisions can be sorted apart. Added some additional utility routines. Extended the changeset class with the accessors required by the cycle breaker. file: [b471ab73] check-in: [94c39d63] user: aku branch: trunk, size: 10025
2007-11-13
07:22
Continued work on pass 6. Completed creation of changeset graph (nodes, dependencies), started on topological iteration and breaking cycles. Basic iteration is complete, fiding a cycle ditto. Not yet done is to actually break a found cycle. Extended the changeset class with the necessary accessor methods (getting cset type, successors, time range). Note: Looking at my code it may be that my decision to save the cset order caused this pass to subsume the RevisionTopologicalSortPass of cvs2svn. Check again when I am done. Note 2: The test case (tcl repository, tcl project) had no cycles. file: [0d583672] check-in: [85bd219d] user: aku branch: trunk, size: 8244
2007-11-11
00:08
Started on pass 6, breaking cycles between revision based changesets. Added skeleton files. file: [fd1c3960] check-in: [2a01d504] user: aku branch: trunk, size: 2659 Added