Diff
Not logged in

Differences From:

File tools/cvs2fossil/lib/c2f_prev.tcl part of check-in [911d56a8c8] - Changesets, extended human readable representation, and tweaking of log output. by aku on 2007-11-27 09:03:07. [view]

To:

File tools/cvs2fossil/lib/c2f_prev.tcl part of check-in [47d52d1efd] - Added convenience method for assertions and used it in place of the existing if/trouble internal constructions. Changed API of 'log write' so that we can defer substituation of the message to when the write actually happen, and converted all places which would be hit by double-substitution. The remaining 'log write' calls will be converted incrementally. by aku on 2007-11-28 05:39:49. [view]

@@ -21,8 +21,9 @@
 package require vc::tools::misc                       ; # Text formatting
 package require vc::tools::trouble                    ; # Error reporting.
 package require vc::tools::log                        ; # User feedback.
 package require vc::fossil::import::cvs::state        ; # State storage.
+package require vc::fossil::import::cvs::integrity    ; # State integrity checks.
 package require vc::fossil::import::cvs::project::sym ; # Project level symbols
 
 # # ## ### ##### ######## ############# #####################
 ##
@@ -201,11 +202,11 @@
 
 	while {$at < [llength $pending]} {
 	    set current [lindex $pending $at]
 
-	    log write 6 csets ". . .. ... ..... ........ ............."
-	    log write 6 csets "Scheduled   [join [PRs [lrange $pending $at end]] { }]"
-	    log write 6 csets "Considering [PR $current] \[$at/[llength $pending]\]"
+	    log write 6 csets {. . .. ... ..... ........ .............}
+	    log write 6 csets {Scheduled   [join [PRs [lrange $pending $at end]] { }]}
+	    log write 6 csets {Considering [PR $current] \[$at/[llength $pending]\]}
 
 	    set best [FindBestBreak $current]
 
 	    if {$best < 0} {
@@ -234,14 +235,10 @@
 		set fragafter  [lrange $current $bnext end]
 
 		log write 6 csets "New pieces  [PR $fragbefore] [PR $fragafter]"
 
-		if {![llength $fragbefore]} {
-		    trouble internal "Tried to split off a zero-length fragment at the beginning"
-		}
-		if {![llength $fragafter]} {
-		    trouble internal "Tried to split off a zero-length fragment at the end"
-		}
+		integrity assert {[llength $fragbefore]} {Found zero-length fragment at the beginning}
+		integrity assert {[llength $fragafter]}  {Found zero-length fragment at the end}
 
 		lappend pending $fragbefore $fragafter
 		CutAt $best
 	    }
@@ -267,18 +264,14 @@
 	#puts \t.[join [PRs $fragments] .\n\t.].
 
 	Border [lindex $fragments 0] firsts firste
 
-	if {$firsts != 0} {
-	    trouble internal "Bad fragment start @ $firsts, gap, or before beginning of the range"
-	}
+	integrity assert {$firsts == 0} {Bad fragment start @ $firsts, gap, or before beginning of the range}
 
 	set laste $firste
 	foreach fragment [lrange $fragments 1 end] {
 	    Border $fragment s e
-	    if {$laste != ($s - 1)} {
-		trouble internal "Bad fragment border <$laste | $s>, gap or overlap"
-	    }
+	    integrity assert {$laste == ($s - 1)} {Bad fragment border <$laste | $s>, gap or overlap}
 
 	    set new [$type %AUTO% $myproject $mytype $mysrcid [lrange $myrevisions $s $e]]
 
             log write 4 csets "Breaking [$self str ] @ $laste, new [$new str], cutting $breaks($laste)"
@@ -285,11 +278,11 @@
 
 	    set laste $e
 	}
 
-	if {$laste != ([llength $myrevisions]-1)} {
-	    trouble internal "Bad fragment end @ $laste, gap, or beyond end of the range"
-	}
+	integrity assert {
+	    $laste == ([llength $myrevisions]-1)
+	} {Bad fragment end @ $laste, gap, or beyond end of the range}
 
 	# Put the first fragment into the current changeset, and
 	# update the in-memory index. We can simply (re)add the
 	# revisions because we cleared the previously existing
@@ -366,11 +359,11 @@
 	$cset destroy
 
 	set newcsets {}
 	foreach fragmentrevisions $args {
-	    if {![llength $fragmentrevisions]} {
-		trouble internal "Attempted to create an empty changeset, i.e. without revisions"
-	    }
+	    integrity assert {
+		[llength $fragmentrevisions]
+	    } {Attempted to create an empty changeset, i.e. without revisions}
 	    lappend newcsets [$type %AUTO% $project $cstype $cssrc $fragmentrevisions]
 	}
 
 	foreach c $newcsets { $c persist }
@@ -465,11 +458,9 @@
 	    AND   RA.child IS NOT NULL    -- Has primary child.
             AND   RA.child IN $theset     -- Which is also of interest
 	"] {
 	    # Consider moving this to the integrity module.
-	    if {$rid == $child} {
-		trouble internal "Revision $rid depends on itself."
-	    }
+	    integrity assert {$rid != $child} {Revision $rid depends on itself.}
 	    lappend dependencies($rid) $child
 	    set dep($rid,$child) .
 	}
 
@@ -565,11 +556,9 @@
 	    AND   RA.rid = R.dbchild      -- Go directly to trunk root
 	    AND   RA.child IS NOT NULL    -- Has primary child.
 	"] {
 	    # Consider moving this to the integrity module.
-	    if {$rid == $child} {
-		trouble internal "Revision $rid depends on itself."
-	    }
+	    integrity assert {$rid != $child} {Revision $rid depends on itself.}
 	    lappend dependencies($rid) $child
 	}
 	return
     }
@@ -612,11 +601,9 @@
 	    AND RA.rid = R.parent        -- go to their parent
 	    AND RA.dbparent IS NOT NULL  -- which has to refer to NTDB's root
 	"] {
 	    # Consider moving this to the integrity module.
-	    if {$rid == $parent} {
-		trouble internal "Revision $rid depends on itself."
-	    }
+	    integrity assert {$rid != $parent} {Revision $rid depends on itself.}
 	    lappend dependencies($rid) $parent
 	}
 	return
     }
@@ -861,8 +848,9 @@
 namespace eval ::vc::fossil::import::cvs::project {
     namespace export rev
     namespace eval rev {
 	namespace import ::vc::fossil::import::cvs::state
+	namespace import ::vc::fossil::import::cvs::integrity
 	namespace eval project {
 	    namespace import ::vc::fossil::import::cvs::project::sym
 	}
 	::variable mybranchcode [project::sym branch]