Diff
Not logged in

Differences From:

File tools/cvs2fossil/lib/c2f_integrity.tcl part of check-in [80b1e8936f] - Renamed state table 'csrevision' to 'csitem' to reflect the new internals of changesets. Updated all places where it is used. by aku on 2007-11-29 09:16:33. [view]

To:

File tools/cvs2fossil/lib/c2f_integrity.tcl 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. [view]

@@ -52,15 +52,16 @@
 	AllButMeta
 	return
     }
 
-    typemethod changesets {} {
+    typemethod changesets {csets} {
 	log write 4 integrity {Check database consistency}
 
 	set n 0
 	RevisionChangesets
 	TagChangesets
 	BranchChangesets
+	Selfreferentiality $csets
 	return
     }
 
     # # ## ### ##### ######## #############
@@ -733,8 +734,19 @@
 				 WHERE VV.cid = UU.cid
 				 AND   UU.fcount < VV.rcount)
 		AND    T.tid = C.type
 	    }
+	return
+    }
+
+    proc Selfreferentiality {csets} {
+	log write 4 integrity {Checking changesets for self-references}
+
+	foreach cset $csets {
+	    if {[$cset selfreferential]} {
+		trouble fatal "[$cset str] depends on itself"
+	    }
+	}
 	return
     }
 
     proc ___UnusedChangesetChecks___ {} {