tests/test-revlog-ancestry.py
author Matt Harbison <matt_harbison@yahoo.com>
Sun, 08 Jan 2017 14:37:44 -0500
changeset 30733 66448a53bdac
parent 30559 d83ca854fa21
child 36482 14d2371216ba
permissions -rw-r--r--
test-obsolete: stabilize output on platforms without 'serve' support The conditional was updating the repository, which wasn't reflected in subsequent logs on Windows, so the conditional is narrowed to just the serve commands. The serve operation generates log files, so those are deleted to keep the output of summary consistent.

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, 'test1', create=1)
os.chdir('test1')

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

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

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

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

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

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

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

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

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

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

    update(5)
    addcommit("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=' ')