view tests/test-revlog-ancestry.py @ 7231:8e7130a10f3b

convert: ignore hg source errors with hg.ignoreerrors (issue 1357) This flag makes missing revlog errors to be ignored which allow broken repositories to be fixed by converting them from and to Mercurial.
author Patrick Mezard <pmezard@gmail.com>
date Tue, 21 Oct 2008 21:24:47 +0200
parents ebf1462f2145
children 284fda4cd093
line wrap: on
line source

import os
from mercurial import hg, ui, merge
from hgext import graphlog

u = ui.ui()

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 = file(name, 'w')
    f.write('%s\n' % name)
    f.close()
    repo.add([name])
    commit(name, time)

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

def merge_(rev):
    merge.update(repo, rev, True, False, 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,

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

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

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

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

    print '\nDescendants of 5 and 4'
    for r in repo.changelog.descendants(5, 4):
        print r,