@@ -388,10 +388,94 @@
388 388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
389 389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if {!$kill} return
390 390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
trouble internal "[$self str] depends on itself"
391 391 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return
392 392 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
393 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
394 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ method pushto {sv repository date} {
395 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ upvar 1 $sv state
396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
397 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Generate and import the manifest for this changeset.
398 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Data needed:
400 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # - Commit message (-- mysrcid -> repository meta)
401 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # - User doing the commit (s.a.)
402 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
403 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # - Timestamp of when committed (command argument)
404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
405 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # - The parent changeset, if any. If there is no parent use
406 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # the empty base revision as parent.
407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # - List of the file revisions in the changeset.
409 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
410 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ struct::list assign [$myproject getmeta $mysrcid] __ branch user message
411 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ struct::list assign $branch __ lodname
412 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
413 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The parent is determined via the line-of-development (LOD)
414 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # information of each changeset, and the history of
415 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # imports. The last changeset committed to the same LOD is
416 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # taken as the parent of the current changeset. If the
417 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # changeset is the first on that LOD it can be either spawned
418 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # from another LOD, or detached. For the first case we
419 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # retrieve the parent LOD of the current LOD symbol (*) and
420 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # recheck for a committed changeset. The second case is taken
421 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # if that lookup fails as well.
422 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
423 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # (*) And this parent was found in previous passes when
424 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # determining the prefered parents of all the symbols.
425 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
426 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # NOTE: The above is incomplete and buggy. Vendor-branches and
427 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # the various possibilities of its interaction with the
428 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # trunk are not fully handled.
429 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
430 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[info exists state($lodname)]} {
431 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # LOD exists and has already been committed to.
432 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set parent $state($lodname)
433 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ } else {
434 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # LOD has not been committed to before, this is the first
435 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # time. Determine the name of the parent LOD.
436 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
437 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set plodname [[[$myproject getsymbol $lodname] parent] name]
438 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[info exists state($plodname)]} {
440 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The parental LOD has been committed to, take that
441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # last changeset as the spawnpoint for the new LOD.
442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set parent $state($plodname)
443 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ } else {
444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The parental LOD is not defined (yet). This LOD is
445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # detached. We choose as our parent the automatic
446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # empty root baseline of the target repository.
447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set parent {}
448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Perform the import. As part of that convert the list of
452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # items in the changeset into uuids and printable data.
453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set theset ('[join $myitems {','}]')
455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set uuid [$repository importrevision [$self str] \
456 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ $user $message $date $parent \
457 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ [state run [subst -nocommands -nobackslashes {
458 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SELECT U.uuid, F.name, R.rev
459 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FROM revision R, revuuid U, file F
460 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WHERE R.rid IN $theset -- All specified revisions
461 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ AND U.rid = R.rid -- get fossil uuid of revision
462 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ AND F.fid = R.fid -- get file of revision
463 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }]]]
464 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
465 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Remember the imported changeset in the state, under our LOD.
466 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
467 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set state($lodname) $uuid
468 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
469 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Remember the whole changeset / uuid mapping, for the tags.
470 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
471 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ state run {
472 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ INSERT INTO csuuid (cid, uuid)
473 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ VALUES ($myid, $uuid)
474 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
475 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return
476 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
393 477 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
394 478 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typemethod split {cset args} {
395 479 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# As part of the creation of the new changesets specified in
396 480 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# ARGS as sets of items, all subsets of CSET's item set, CSET
397 481 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# will be dropped from all databases, in and out of memory,
@@ -541,10 +625,30 @@
541 625 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typevariable mycstype -array {} ; # Map cstypes (names) to persistent
542 626 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# ids. Note that we have to keep
543 627 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# the names in the table 'cstype'
544 628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# in sync with the names of the
545 629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# helper singletons.
630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ typemethod inorder {projectid} {
632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Return all revision changesets for the specified project, in
633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # the order given to them by the sort passes. Both the
634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # filtering by project and sorting make use of 'project::rev
635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # rev' impossible.
636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set res {}
638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ foreach {cid cdate} [state run {
639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ SELECT C.cid, T.date
640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ FROM changeset C, cstimestamp T
641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ WHERE C.type = 0 -- limit to revision changesets
642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ AND C.pid = $projectid -- limit to changesets in project
643 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ AND T.cid = C.cid -- get ordering information
644 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ORDER BY T.date -- sort into commit order
645 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }] {
646 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ lappend res $myidmap($cid) $cdate
647 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
648 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return $res
649 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
546 650 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
547 651 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
typemethod getcstypes {} {
548 652 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
foreach {tid name} [state run {
549 653 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
SELECT tid, name FROM cstype;
550 654 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}] { set mycstype($name) $tid }
551 655 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!