Overview
SHA1 Hash: | f7fe15cd0cb6cc28a32cc40c13bb12b9faccd673 |
---|---|
Date: | 2007-12-08 03:39:27 |
User: | aku |
Comment: | More comments on sql statements, slight reordering of some tables and conditions. |
Timelines: | ancestors | descendants | both | trunk |
Other Links: | files | ZIP archive | manifest |
Tags And Properties
- branch=trunk inherited from [a28c83647d]
- sym-trunk inherited from [a28c83647d]
Changes
[hide diffs]Modified tools/cvs2fossil/lib/c2f_pcollsym.tcl from [50ae29e5d8] to [7383c81d45].
@@ -58,11 +58,11 @@ -- project. sid INTEGER NOT NULL PRIMARY KEY REFERENCES symbol, pid INTEGER NOT NULL REFERENCES symbol } { pid } - # Index on: pid (branch successors`) + # Index on: pid (branch successors) return } typemethod load {} { # Pass manager interface. Executed to load data computed by @@ -111,21 +111,24 @@ } # # ## ### ##### ######## ############# ## Internal methods + ## TODO: Move UnconvertedSymbols, BadSymbolTypes, BlockedIncludes, + ## InvalidTags to the integrity module? + proc UnconvertedSymbols {} { # Paranoia - Have we left symbols without conversion # information (i.e. with type 'undefined') ? set undef [project::sym undef] foreach {pname sname} [state run { SELECT P.name, S.name - FROM project P, symbol S - WHERE P.pid = S.pid - AND S.type = $undef + FROM symbol S, project P + WHERE S.type = $undef -- Restrict to undefined symbols + AND P.pid = S.pid -- Get project for symbol }] { trouble fatal "$pname : The symbol '$sname' was left undefined" } return } @@ -135,13 +138,13 @@ # information (type out of the valid range (excluded, branch, # tag)) ? foreach {pname sname} [state run { SELECT P.name, S.name - FROM project P, symbol S - WHERE P.pid = S.pid - AND S.type NOT IN (0,1,2) + FROM symbol S, project P + WHERE S.type NOT IN (0,1,2) -- Restrict to symbols with bogus type codes + AND P.pid = S.pid -- Get project of symbol }] { trouble fatal "$pname : The symbol '$sname' has no proper conversion type" } return } @@ -152,16 +155,16 @@ set excl [project::sym excluded] foreach {pname sname bname} [state run { SELECT P.name, S.name, SB.name - FROM project P, symbol S, blocker B, symbol SB - WHERE P.pid = S.pid - AND S.type = $excl - AND S.sid = B.sid - AND B.bid = SB.sid - AND SB.type != $excl + FROM symbol S, blocker B, symbol SB, project P + WHERE S.type = $excl -- Restrict to excluded symbols + AND S.sid = B.sid -- Get symbols blocking them + AND B.bid = SB.sid -- and + AND SB.type != $excl -- which are not excluded themselves + AND P.pid = S.pid -- Get project of symbol }] { trouble fatal "$pname : The symbol '$sname' cannot be excluded as the unexcluded symbol '$bname' depends on it." } return } @@ -179,13 +182,13 @@ set tag [project::sym tag] foreach {pname sname} [state run { SELECT P.name, S.name FROM project P, symbol S - WHERE P.pid = S.pid - AND S.type = $tag - AND S.commit_count > 0 + WHERE S.type = $tag -- Restrict to tag symbols + AND S.commit_count > 0 -- which have revisions committed to them + AND P.pid = S.pid -- Get project of symbol }] { trouble fatal "$pname : The symbol '$sname' cannot be forced to be converted as tag because it has commits." } return } @@ -199,15 +202,15 @@ state run { DELETE FROM blocker WHERE bid IN (SELECT sid FROM symbol - WhERE type = $excl); + WhERE type = $excl); -- Get excluded symbols DELETE FROM parent WHERE pid IN (SELECT sid FROM symbol - WhERE type = $excl); + WhERE type = $excl); -- Get excluded symbols } return } proc DeterminePreferedParents {} { @@ -224,15 +227,16 @@ # attempt to compute them. foreach {s p sname pname prname votes} [state run { SELECT S.sid, P.pid, S.name, SB.name, PR.name, P.n FROM symbol S, parent P, symbol SB, project PR - WHERE S.sid = P.sid - AND P.pid = SB.sid - AND S.pid = PR.pid - AND S.type != $excl - ORDER BY P.n ASC, P.pid DESC + WHERE S.type != $excl -- Restrict to wanted symbols + AND S.sid = P.sid -- Get possible parents of symbol + AND P.pid = SB.sid -- and + AND S.pid = PR.pid -- the project of the symbol + ORDER BY P.n ASC, P.pid DESC -- Sorting, see below + -- -- Higher votes and smaller ids (= earlier branches) last -- We simply keep the last possible parent for each -- symbol. This parent will have the max number of votes -- for its symbol and will be the earliest created branch -- possible among all with many votes. @@ -260,16 +264,17 @@ # excluded symbols, as we intentionally did not # compute a prefered parent for them, see phase I. foreach {pname sname} [state run { SELECT PR.name, S.name - FROM project PR, symbol S LEFT OUTER JOIN preferedparent P - ON S.sid = P.sid - WHERE P.pid IS NULL - AND S.name != ':trunk:' - AND S.pid = PR.pid - AND S.type != $excl + FROM symbol S LEFT OUTER JOIN preferedparent P + ON S.sid = P.sid, -- From symbol to prefered parent + project PR + WHERE P.pid IS NULL -- restrict to symbols without a preference + AND S.type != $excl -- which are not excluded + AND S.name != ':trunk:' -- and are not a trunk + AND S.pid = PR.pid -- get project of symbol }] { trouble fatal "$pname : '$sname' has no prefered parent." } # The reverse, having prefered parents for unknown symbols