view tests/test-revlog-ancestry.py @ 43617:697c2e32c490

packaging: ship all help .txt files on WiX These are technically not needed. But it is easier to ship all files than to cherry-pick. A `make install` will copy these files, so the new behavior is consistent with that. This also makes WiX consistent with Inno, which is my main reason for doing this. If we don't want to ship the files (which is a valid argument), I think we can do that in a follow up. Differential Revision: https://phab.mercurial-scm.org/D7166
author Gregory Szorc <gregory.szorc@gmail.com>
date Mon, 11 Nov 2019 18:51:55 -0800
parents 2372284d9457
children 0e5e192adb6f
line wrap: on
line source

from __future__ import absolute_import, print_function
import os
from mercurial import (
    hg,
    merge,
    ui as uimod,
)

u = uimod.ui.load()

repo = hg.repository(u, b'test1', create=1)
os.chdir('test1')


def commit(text, time):
    repo.commit(text=text, date=b"%d 0" % time)


def addcommit(name, time):
    f = open(name, 'wb')
    f.write(b'%s\n' % name)
    f.close()
    repo[None].add([name])
    commit(name, time)


def update(rev):
    merge.update(repo, rev, branchmerge=False, force=True)


def merge_(rev):
    merge.update(repo, rev, branchmerge=True, force=False)


if __name__ == '__main__':
    addcommit(b"A", 0)
    addcommit(b"B", 1)

    update(0)
    addcommit(b"C", 2)

    merge_(1)
    commit(b"D", 3)

    update(2)
    addcommit(b"E", 4)
    addcommit(b"F", 5)

    update(3)
    addcommit(b"G", 6)

    merge_(5)
    commit(b"H", 7)

    update(5)
    addcommit(b"I", 8)

    # Ancestors
    print('Ancestors of 5')
    for r in repo.changelog.ancestors([5]):
        print(r, end=' ')

    print('\nAncestors of 6 and 5')
    for r in repo.changelog.ancestors([6, 5]):
        print(r, end=' ')

    print('\nAncestors of 5 and 4')
    for r in repo.changelog.ancestors([5, 4]):
        print(r, end=' ')

    print('\nAncestors of 7, stop at 6')
    for r in repo.changelog.ancestors([7], 6):
        print(r, end=' ')

    print('\nAncestors of 7, including revs')
    for r in repo.changelog.ancestors([7], inclusive=True):
        print(r, end=' ')

    print('\nAncestors of 7, 5 and 3, including revs')
    for r in repo.changelog.ancestors([7, 5, 3], inclusive=True):
        print(r, end=' ')

    # Descendants
    print('\n\nDescendants of 5')
    for r in repo.changelog.descendants([5]):
        print(r, end=' ')

    print('\nDescendants of 5 and 3')
    for r in repo.changelog.descendants([5, 3]):
        print(r, end=' ')

    print('\nDescendants of 5 and 4')
    print(*repo.changelog.descendants([5, 4]), sep=' ')