Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Renamed state table 'csrevision' to 'csitem' to reflect the new internals of changesets. Updated all places where it is used. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
80b1e8936fad7ce85fc2af156031b93d |
| User & Date: | aku 2007-11-29 09:16:33.000 |
Context
|
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. ... (check-in: b42cff97e3 user: aku tags: trunk) | |
|
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. ... (check-in: 80b1e8936f user: aku tags: trunk) | |
| 09:15 | Fix bad variable name. ... (check-in: 4859304926 user: aku tags: trunk) | |
Changes
Changes to tools/cvs2fossil/lib/c2f_integrity.tcl.
| ︙ | ︙ | |||
323 324 325 326 327 328 329 |
-- file (name) for display.
SELECT F.name, R.rev
FROM revision R, file F
WHERE R.rid IN (SELECT rid
FROM revision -- All revisions
EXCEPT -- subtract
| | | | | | | | | | | | | | | | | | | | 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 |
-- file (name) for display.
SELECT F.name, R.rev
FROM revision R, file F
WHERE R.rid IN (SELECT rid
FROM revision -- All revisions
EXCEPT -- subtract
SELECT CI.iid
FROM csitem CI, changeset C -- revisions used
WHERE C.cid = CI.cid -- by any revision
AND C.type = 0) -- changeset
AND R.fid = F.fid -- get file of unused revision
}
# Find all revisions which are used by more than one
# changeset.
CheckRev \
{All revisions have to be used by at most one changeset} \
{is used by multiple changesets} {
-- Principle of operation: Get all revision/changeset
-- pairs for all revision changesets, group by
-- revision to aggregate the changeset, counting
-- them. From the resulting revision/count table
-- select those with more than one user, and get their
-- associated file (name) for display.
SELECT F.name, R.rev
FROM revision R, file F,
(SELECT CI.iid AS rid, count(CI.cid) AS count
FROM csitem CI, changeset C
WHERE C.type = 0
AND C.cid = CI.cid
GROUP BY CI.iid) AS U
WHERE U.count > 1
AND R.rid = U.rid
AND R.fid = F.fid
}
# All revisions have to refer to the same meta information as
# their changeset.
CheckRevCS \
{All revisions have to agree with their changeset about the used meta information} \
{disagrees with its changeset @ about the meta information} {
SELECT CT.name, C.cid, F.name, R.rev
FROM changeset C, cstype CT, revision R, file F, csitem CI
WHERE C.type = 0 -- revision changesets only
AND C.cid = CI.cid -- changeset --> its revisions
AND R.rid = CI.iid -- look at them
AND R.mid != C.src -- Only those which disagree with changeset about the meta
AND R.fid = F.fid -- get file of the revision
AND CT.tid = C.type -- get changeset type, for labeling
}
# All revisions have to agree on the LOD their changeset
# belongs to. In other words, all revisions in a changeset
# have to refer to the same line of development.
#
# Instead of looking at all pairs of revisions in all
# changesets we generate the distinct set of all LODs
# referenced by the revisions of a changeset, look for those
# with cardinality > 1, and get the identifying information
# for the changesets found thusly.
CheckCS \
{All revisions in a changeset have to belong to the same LOD} \
{: Its revisions disagree about the LOD they belong to} {
SELECT T.name, C.cid
FROM changeset C, cstype T
WHERE C.cid IN (SELECT U.cid
FROM (SELECT DISTINCT CI.cid AS cid, R.lod AS lod
FROM csitem CI, changeset C, revision R
WHERE CI.iid = R.rid
AND C.cid = CI.cid
AND C.type = 0) AS U
GROUP BY U.cid HAVING COUNT(U.lod) > 1)
AND T.tid = C.type
}
# All revisions have to agree on the project their changeset
# belongs to. In other words, all revisions in a changeset
# have to refer to the same project.
#
# Instead of looking at all pairs of revisions in all
# changesets we generate the distinct set of all projects
# referenced by the revisions of a changeset, look for those
# with cardinality > 1, and get the identifying information
# for the changesets found thusly.
CheckCS \
{All revisions in a changeset have to belong to the same project} \
{: Its revisions disagree about the project they belong to} {
SELECT T.name, C.cid
FROM changeset C, cstype T
WHERE C.cid IN (SELECT U.cid
FROM (SELECT DISTINCT CI.cid AS cid, F.pid AS pid
FROM csitem CI, changeset C, revision R, file F
WHERE CI.iid = R.rid
AND C.cid = CI.cid
AND C.type = 0
AND F.fid = R.fid) AS U
GROUP BY U.cid HAVING COUNT(U.pid) > 1)
AND T.tid = C.type
}
# All revisions in a single changeset have to belong to
# different files. Conversely: No two revisions of a single
|
| ︙ | ︙ | |||
430 431 432 433 434 435 436 |
CheckCS \
{All revisions in a changeset have to belong to different files} \
{: Its revisions share files} {
SELECT T.name, C.cid
FROM changeset C, cstype T
WHERE C.cid IN (SELECT VV.cid
FROM (SELECT U.cid as cid, COUNT (U.fid) AS fcount
| | | | | | | | 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 |
CheckCS \
{All revisions in a changeset have to belong to different files} \
{: Its revisions share files} {
SELECT T.name, C.cid
FROM changeset C, cstype T
WHERE C.cid IN (SELECT VV.cid
FROM (SELECT U.cid as cid, COUNT (U.fid) AS fcount
FROM (SELECT DISTINCT CI.cid AS cid, R.fid AS fid
FROM csitem CI, changeset C, revision R
WHERE CI.iid = R.rid
AND C.cid = CI.cid
AND C.type = 0
) AS U
GROUP BY U.cid) AS UU,
(SELECT V.cid AS cid, COUNT (V.iid) AS rcount
FROM csitem V, changeset X
WHERE X.cid = V.cid
AND X.type = 0
GROUP BY V.cid) AS VV
WHERE VV.cid = UU.cid
AND UU.fcount < VV.rcount)
AND T.tid = C.type
}
|
| ︙ | ︙ | |||
473 474 475 476 477 478 479 |
-- file (name) for display.
SELECT P.name, S.name
FROM project P, tag T, symbol S
WHERE T.tid IN (SELECT tid -- All tags
FROM tag
EXCEPT -- subtract
| | | | | | | | | | 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 |
-- file (name) for display.
SELECT P.name, S.name
FROM project P, tag T, symbol S
WHERE T.tid IN (SELECT tid -- All tags
FROM tag
EXCEPT -- subtract
SELECT CI.iid -- tags used
FROM csitem CI, changeset C
WHERE C.cid = CI.cid -- by any tag
AND C.type = 1) -- changeset
AND S.sid = T.sid -- get symbol of tag
AND P.pid = S.pid -- get project of symbol
}
# Find all tags which are used by more than one changeset.
CheckRev \
{All tags have to be used by at most one changeset} \
{is used by multiple changesets} {
-- Principle of operation: Get all tag/changeset pairs
-- for all tag changesets, group by tag to aggregate
-- the changeset, counting them. From the resulting
-- tag/count table select those with more than one
-- user, and get their associated file (name) for
-- display.
SELECT P.name, S.name
FROM tag T, project P, symbol S,
(SELECT CI.iid AS iid, count(CI.cid) AS count
FROM csitem CI, changeset C
WHERE C.type = 1
AND C.cid = CI.cid
GROUP BY CI.iid) AS U
WHERE U.count > 1
AND T.tid = U.iid
AND S.sid = T.sid -- get symbol of tag
AND P.pid = S.pid -- get project of symbol
}
if 0 {
# This check is disabled for the moment. Apparently tags
# can cross lines of development, at least if the involved
# LODs are the trunk, and the NTDB. That makes sense, as
|
| ︙ | ︙ | |||
527 528 529 530 531 532 533 |
# information for the changesets found thusly.
CheckCS \
{All tags in a changeset have to belong to the same LOD} \
{: Its tags disagree about the LOD they belong to} {
SELECT T.name, C.cid
FROM changeset C, cstype T
WHERE C.cid IN (SELECT U.cid
| | | | | | | | | | 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 |
# information for the changesets found thusly.
CheckCS \
{All tags in a changeset have to belong to the same LOD} \
{: Its tags disagree about the LOD they belong to} {
SELECT T.name, C.cid
FROM changeset C, cstype T
WHERE C.cid IN (SELECT U.cid
FROM (SELECT DISTINCT CI.cid AS cid, T.lod AS lod
FROM csitem CI, changeset C, tag T
WHERE CI.iid = T.tid
AND C.cid = CI.cid
AND C.type = 1) AS U
GROUP BY U.cid HAVING COUNT(U.lod) > 1)
AND T.tid = C.type
}
}
# All tags have to agree on the project their changeset
# belongs to. In other words, all tags in a changeset have to
# refer to the same project.
#
# Instead of looking at all pairs of tags in all changesets we
# generate the distinct set of all projects referenced by the
# tags of a changeset, look for those with cardinality > 1,
# and get the identifying information for the changesets found
# thusly.
CheckCS \
{All tags in a changeset have to belong to the same project} \
{: Its tags disagree about the project they belong to} {
SELECT T.name, C.cid
FROM changeset C, cstype T
WHERE C.cid IN (SELECT U.cid
FROM (SELECT DISTINCT CI.cid AS cid, F.pid AS pid
FROM csitem CI, changeset C, tag T, file F
WHERE CI.iid = T.tid
AND C.cid = CI.cid
AND C.type = 1
AND F.fid = T.fid) AS U
GROUP BY U.cid HAVING COUNT(U.pid) > 1)
AND T.tid = C.type
}
# All tags in a single changeset have to belong to different
# files. Conversely: No two tags of a single file are allowed
|
| ︙ | ︙ | |||
576 577 578 579 580 581 582 |
CheckCS \
{All tags in a changeset have to belong to different files} \
{: Its tags share files} {
SELECT T.name, C.cid
FROM changeset C, cstype T
WHERE C.cid IN (SELECT VV.cid
FROM (SELECT U.cid as cid, COUNT (U.fid) AS fcount
| | | | | | | | 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 |
CheckCS \
{All tags in a changeset have to belong to different files} \
{: Its tags share files} {
SELECT T.name, C.cid
FROM changeset C, cstype T
WHERE C.cid IN (SELECT VV.cid
FROM (SELECT U.cid as cid, COUNT (U.fid) AS fcount
FROM (SELECT DISTINCT CI.cid AS cid, T.fid AS fid
FROM csitem CI, changeset C, tag T
WHERE CI.iid = T.tid
AND C.cid = CI.cid
AND C.type = 1
) AS U
GROUP BY U.cid) AS UU,
(SELECT V.cid AS cid, COUNT (V.iid) AS rcount
FROM csitem V, changeset X
WHERE X.cid = V.cid
AND X.type = 1
GROUP BY V.cid) AS VV
WHERE VV.cid = UU.cid
AND UU.fcount < VV.rcount)
AND T.tid = C.type
}
|
| ︙ | ︙ | |||
620 621 622 623 624 625 626 |
-- file (name) for display.
SELECT P.name, S.name
FROM project P, branch B, symbol S
WHERE B.bid IN (SELECT bid -- All branches
FROM branch
EXCEPT -- subtract
| | | | | | | | | | | | | | | | | | 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 |
-- file (name) for display.
SELECT P.name, S.name
FROM project P, branch B, symbol S
WHERE B.bid IN (SELECT bid -- All branches
FROM branch
EXCEPT -- subtract
SELECT CI.iid -- branches used
FROM csitem CI, changeset C
WHERE C.cid = CI.cid -- by any branch
AND C.type = 2) -- changeset
AND S.sid = B.sid -- get symbol of branch
AND P.pid = S.pid -- get project of symbol
}
# Find all branches which are used by more than one changeset.
CheckRev \
{All branches have to be used by at most one changeset} \
{is used by multiple changesets} {
-- Principle of operation: Get all branch/changeset
-- pairs for all branch changesets, group by tag to
-- aggregate the changeset, counting them. From the
-- resulting branch/count table select those with more
-- than one user, and get their associated file (name)
-- for display.
SELECT P.name, S.name
FROM branch B, project P, symbol S,
(SELECT CI.iid AS iid, count(CI.cid) AS count
FROM csitem CI, changeset C
WHERE C.type = 2
AND C.cid = CI.cid
GROUP BY CI.iid ) AS U
WHERE U.count > 1
AND B.bid = U.iid
AND S.sid = B.sid -- get symbol of branch
AND P.pid = S.pid -- get project of symbol
}
# All branches have to agree on the LOD their changeset
# belongs to. In other words, all branches in a changeset have
# to refer to the same line of development.
#
# Instead of looking at all pairs of branches in all
# changesets we generate the distinct set of all LODs
# referenced by the branches of a changeset, look for those
# with cardinality > 1, and get the identifying information
# for the changesets found thusly.
CheckCS \
{All branches in a changeset have to belong to the same LOD} \
{: Its branches disagree about the LOD they belong to} {
SELECT T.name, C.cid
FROM changeset C, cstype T
WHERE C.cid IN (SELECT U.cid
FROM (SELECT DISTINCT CI.cid AS cid, B.lod AS lod
FROM csitem CI, changeset C, branch B
WHERE CI.iid = B.bid
AND C.cid = CI.cid
AND C.type = 2) AS U
GROUP BY U.cid HAVING COUNT(U.lod) > 1)
AND T.tid = C.type
}
# All branches have to agree on the project their changeset
# belongs to. In other words, all branches in a changeset have
# to refer to the same project.
#
# Instead of looking at all pairs of branches in all
# changesets we generate the distinct set of all projects
# referenced by the branches of a changeset, look for those
# with cardinality > 1, and get the identifying information
# for the changesets found thusly.
CheckCS \
{All branches in a changeset have to belong to the same project} \
{: Its branches disagree about the project they belong to} {
SELECT T.name, C.cid
FROM changeset C, cstype T
WHERE C.cid IN (SELECT U.cid
FROM (SELECT DISTINCT CI.cid AS cid, F.pid AS pid
FROM csitem CI, changeset C, branch B, file F
WHERE CI.iid = B.bid
AND C.cid = CI.cid
AND C.type = 2
AND F.fid = B.fid) AS U
GROUP BY U.cid HAVING COUNT(U.pid) > 1)
AND T.tid = C.type
}
# All branches in a single changeset have to belong to
# different files. Conversely: No two branches of a single
|
| ︙ | ︙ | |||
714 715 716 717 718 719 720 |
CheckCS \
{All branches in a changeset have to belong to different files} \
{: Its branches share files} {
SELECT T.name, C.cid
FROM changeset C, cstype T
WHERE C.cid IN (SELECT VV.cid
FROM (SELECT U.cid as cid, COUNT (U.fid) AS fcount
| | | | | | | | 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 |
CheckCS \
{All branches in a changeset have to belong to different files} \
{: Its branches share files} {
SELECT T.name, C.cid
FROM changeset C, cstype T
WHERE C.cid IN (SELECT VV.cid
FROM (SELECT U.cid as cid, COUNT (U.fid) AS fcount
FROM (SELECT DISTINCT CI.cid AS cid, B.fid AS fid
FROM csitem CI, changeset C, branch B
WHERE CI.iid = B.bid
AND C.cid = CI.cid
AND C.type = 2
) AS U
GROUP BY U.cid) AS UU,
(SELECT V.cid AS cid, COUNT (V.iid) AS rcount
FROM csitem V, changeset X
WHERE X.cid = V.cid
AND X.type = 2
GROUP BY V.cid) AS VV
WHERE VV.cid = UU.cid
AND UU.fcount < VV.rcount)
AND T.tid = C.type
}
|
| ︙ | ︙ | |||
755 756 757 758 759 760 761 |
# All revisions used by tag symbol changesets have to have the
# changeset's tag associated with them.
CheckRevCS \
{All revisions used by tag symbol changesets have to have the changeset's tag attached to them} \
{does not have the tag of its symbol changeset @ attached to it} {
SELECT CT.name, C.cid, F.name, R.rev
| | | | | | | | 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 |
# All revisions used by tag symbol changesets have to have the
# changeset's tag associated with them.
CheckRevCS \
{All revisions used by tag symbol changesets have to have the changeset's tag attached to them} \
{does not have the tag of its symbol changeset @ attached to it} {
SELECT CT.name, C.cid, F.name, R.rev
FROM changeset C, cstype CT, revision R, file F, csitem CI, tag T
WHERE C.type = 1 -- symbol changesets only
AND C.src = T.sid -- tag only, linked by symbol id
AND C.cid = CI.cid -- changeset --> its revisions
AND R.rid = CI.iid -- look at the revisions
-- and look for the tag among the attached ones.
AND T.sid NOT IN (SELECT TB.sid
FROM tag TB
WHERE TB.rev = R.rid)
AND R.fid = F.fid -- get file of revision
}
# All revisions used by branch symbol changesets have to have
# the changeset's branch associated with them.
CheckRevCS \
{All revisions used by branch symbol changesets have to have the changeset's branch attached to them} \
{does not have the branch of its symbol changeset @ attached to it} {
SELECT CT.name, C.cid, F.name, R.rev, C.cid
FROM changeset C, cstype CT, revision R, file F, csitem CI, branch B
WHERE C.type = 1 -- symbol changesets only
AND C.src = B.sid -- branches only
AND C.cid = CI.cid -- changeset --> its revisions
AND R.rid = CI.iid -- look at the revisions
-- and look for the branch among the attached ones.
AND B.sid NOT IN (SELECT BB.sid
FROM branch BB
WHERE BB.root = R.rid)
AND R.fid = F.fid -- get file of revision
}
|
| ︙ | ︙ |
Changes to tools/cvs2fossil/lib/c2f_pbreakacycle.tcl.
| ︙ | ︙ | |||
48 49 50 51 52 53 54 |
## Public API
typemethod setup {} {
# Define the names and structure of the persistent state of
# this pass.
state reading changeset
| | | 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
## Public API
typemethod setup {} {
# Define the names and structure of the persistent state of
# this pass.
state reading changeset
state reading csitem
state reading csorder
return
}
typemethod load {} {
# Pass manager interface. Executed to load data computed by
# this pass into memory when this pass is skipped instead of
|
| ︙ | ︙ |
Changes to tools/cvs2fossil/lib/c2f_pbreakrcycle.tcl.
| ︙ | ︙ | |||
45 46 47 48 49 50 51 |
typemethod setup {} {
# Define the names and structure of the persistent state of
# this pass.
state reading revision
state reading changeset
| | | 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
typemethod setup {} {
# Define the names and structure of the persistent state of
# this pass.
state reading revision
state reading changeset
state reading csitem
return
}
typemethod load {} {
# Pass manager interface. Executed to load data computed by
# this pass into memory when this pass is skipped instead of
# executed.
|
| ︙ | ︙ |
Changes to tools/cvs2fossil/lib/c2f_pbreakscycle.tcl.
| ︙ | ︙ | |||
44 45 46 47 48 49 50 |
typemethod setup {} {
# Define the names and structure of the persistent state of
# this pass.
state reading revision
state reading changeset
| | | 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
typemethod setup {} {
# Define the names and structure of the persistent state of
# this pass.
state reading revision
state reading changeset
state reading csitem
return
}
typemethod load {} {
# Pass manager interface. Executed to load data computed by
# this pass into memory when this pass is skipped instead of
# executed.
|
| ︙ | ︙ |
Changes to tools/cvs2fossil/lib/c2f_pinitcsets.tcl.
| ︙ | ︙ | |||
85 86 87 88 89 90 91 | # changeset. The items are in principle unique, if we were # looking only at relevant changesets. However as they come # from disparate sources the same id may have different # meaning, be in different changesets and so is formally not # unique. So we can only say that it is unique within the # changeset. The integrity module has stronger checks. | | | | | | | | | 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# changeset. The items are in principle unique, if we were
# looking only at relevant changesets. However as they come
# from disparate sources the same id may have different
# meaning, be in different changesets and so is formally not
# unique. So we can only say that it is unique within the
# changeset. The integrity module has stronger checks.
state writing csitem {
cid INTEGER NOT NULL REFERENCES changeset,
pos INTEGER NOT NULL,
iid INTEGER NOT NULL, -- REFERENCES revision|tag|branch
UNIQUE (cid, pos),
UNIQUE (cid, iid)
}
project::rev getcstypes
return
}
typemethod load {} {
# Pass manager interface. Executed to load data computed by
# this pass into memory when this pass is skipped instead of
# executed.
state reading changeset
state reading csitem
state reading cstype
# Need the types first, the constructor in the loop below uses
# them to assert the correctness of type names.
project::rev getcstypes
foreach {id pid cstype srcid} [state run {
SELECT C.cid, C.pid, CS.name, C.src
FROM changeset C, cstype CS
WHERE C.type = CS.tid
ORDER BY C.cid
}] {
set r [project::rev %AUTO% [repository projectof $pid] $cstype $srcid [state run {
SELECT C.iid
FROM csitem C
WHERE C.cid = $id
ORDER BY C.pos
}] $id]
}
project::rev loadcounter
return
}
|
| ︙ | ︙ | |||
151 152 153 154 155 156 157 |
typemethod discard {} {
# Pass manager interface. Executed for all passes after the
# run passes, to remove all data of this pass from the state,
# as being out of date.
state discard changeset
state discard cstype
| | | 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 |
typemethod discard {} {
# Pass manager interface. Executed for all passes after the
# run passes, to remove all data of this pass from the state,
# as being out of date.
state discard changeset
state discard cstype
state discard csitem
return
}
# # ## ### ##### ######## #############
## Internal methods
proc CreateRevisionChangesets {} {
|
| ︙ | ︙ |
Changes to tools/cvs2fossil/lib/c2f_prev.tcl.
| ︙ | ︙ | |||
299 300 301 302 303 304 305 |
state run {
INSERT INTO changeset (cid, pid, type, src)
VALUES ($myid, $pid, $tid, $mysrcid);
}
foreach iid $myitems {
state run {
| | | | | | 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 |
state run {
INSERT INTO changeset (cid, pid, type, src)
VALUES ($myid, $pid, $tid, $mysrcid);
}
foreach iid $myitems {
state run {
INSERT INTO csitem (cid, pos, iid)
VALUES ($myid, $pos, $iid);
}
incr pos
}
}
return
}
method timerange {} { return [$mytypeobj timerange $myitems] }
method drop {} {
state transaction {
state run {
DELETE FROM changeset WHERE cid = $myid;
DELETE FROM csitem WHERE cid = $myid;
}
}
foreach iid $myitems {
set key [list $mytype $iid]
unset myitemmap($key)
}
set pos [lsearch -exact $mychangesets $self]
|
| ︙ | ︙ |
Changes to tools/cvs2fossil/lib/c2f_prtopsort.tcl.
| ︙ | ︙ | |||
43 44 45 46 47 48 49 |
typemethod setup {} {
# Define the names and structure of the persistent state of
# this pass.
state reading revision
state reading changeset
| | | 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
typemethod setup {} {
# Define the names and structure of the persistent state of
# this pass.
state reading revision
state reading changeset
state reading csitem
state writing csorder {
-- Commit order of the revision changesets based on their
-- dependencies
cid INTEGER NOT NULL REFERENCES changeset,
pos INTEGER NOT NULL,
|
| ︙ | ︙ |