Show More
@@ -619,9 +619,12 b' def cleanupnodes(repo, mapping, operatio' | |||
|
619 | 619 | # Also sort the node in topology order, that might be useful for |
|
620 | 620 | # some obsstore logic. |
|
621 | 621 | # NOTE: the filtering and sorting might belong to createmarkers. |
|
622 | isobs = repo.obsstore.successors.__contains__ | |
|
623 | sortfunc = lambda ns: repo.changelog.rev(ns[0]) | |
|
624 | rels = [(repo[n], (repo[m] for m in s)) | |
|
622 | # Unfiltered repo is needed since nodes in mapping might be hidden. | |
|
623 | unfi = repo.unfiltered() | |
|
624 | isobs = unfi.obsstore.successors.__contains__ | |
|
625 | torev = unfi.changelog.rev | |
|
626 | sortfunc = lambda ns: torev(ns[0]) | |
|
627 | rels = [(unfi[n], (unfi[m] for m in s)) | |
|
625 | 628 | for n, s in sorted(mapping.items(), key=sortfunc) |
|
626 | 629 | if s or not isobs(n)] |
|
627 | 630 | obsolete.createmarkers(repo, rels, operation=operation) |
@@ -10,6 +10,8 b' Enable obsolete' | |||
|
10 | 10 | > logtemplate = {rev}:{node|short} {desc}\n |
|
11 | 11 | > [experimental] |
|
12 | 12 | > evolution=createmarkers |
|
13 | > [extensions] | |
|
14 | > drawdag=$TESTDIR/drawdag.py | |
|
13 | 15 | > [alias] |
|
14 | 16 | > debugobsolete = debugobsolete -d '0 0' |
|
15 | 17 | > [phases] |
@@ -617,3 +619,48 b' successors-set. (report [A,B] not [A] + ' | |||
|
617 | 619 | 82623d38b9ba 392fd25390da |
|
618 | 620 | |
|
619 | 621 | $ cd .. |
|
622 | ||
|
623 | Use scmutil.cleanupnodes API to create divergence | |
|
624 | ||
|
625 | $ hg init cleanupnodes | |
|
626 | $ cd cleanupnodes | |
|
627 | $ hg debugdrawdag <<'EOS' | |
|
628 | > B1 B3 B4 | |
|
629 | > | \| | |
|
630 | > A Z | |
|
631 | > EOS | |
|
632 | ||
|
633 | $ hg update -q B1 | |
|
634 | $ echo 3 >> B | |
|
635 | $ hg commit --amend -m B2 | |
|
636 | $ cat > $TESTTMP/scmutilcleanup.py <<EOF | |
|
637 | > from mercurial import registrar, scmutil | |
|
638 | > cmdtable = {} | |
|
639 | > command = registrar.command(cmdtable) | |
|
640 | > @command('cleanup') | |
|
641 | > def cleanup(ui, repo): | |
|
642 | > def node(expr): | |
|
643 | > unfi = repo.unfiltered() | |
|
644 | > rev = unfi.revs(expr).first() | |
|
645 | > return unfi.changelog.node(rev) | |
|
646 | > with repo.wlock(), repo.lock(), repo.transaction('delayedstrip'): | |
|
647 | > mapping = {node('desc(B1)'): [node('desc(B3)')], | |
|
648 | > node('desc(B3)'): [node('desc(B4)')]} | |
|
649 | > scmutil.cleanupnodes(repo, mapping, 'test') | |
|
650 | > EOF | |
|
651 | ||
|
652 | $ rm .hg/localtags | |
|
653 | $ hg cleanup --config extensions.t=$TESTTMP/scmutilcleanup.py | |
|
654 | $ hg log -G -T '{rev}:{node|short} {desc} {troubles}' -r 'sort(all(), topo)' | |
|
655 | @ 5:1a2a9b5b0030 B2 divergent | |
|
656 | | | |
|
657 | | o 4:70d5a63ca112 B4 divergent | |
|
658 | | | | |
|
659 | | o 1:48b9aae0607f Z | |
|
660 | | | |
|
661 | o 0:426bada5c675 A | |
|
662 | ||
|
663 | $ hg debugobsolete | |
|
664 | a178212c3433c4e77b573f6011e29affb8aefa33 1a2a9b5b0030632400aa78e00388c20f99d3ec44 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} | |
|
665 | a178212c3433c4e77b573f6011e29affb8aefa33 ad6478fb94ecec98b86daae98722865d494ac561 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} | |
|
666 | ad6478fb94ecec98b86daae98722865d494ac561 70d5a63ca112acb3764bc1d7320ca90ea688d671 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} |
General Comments 0
You need to be logged in to leave comments.
Login now