view tests/test-revlog-ancestry.py @ 15922:23921c17299a

phases: mechanism to allow extension to alter initial computation of phase This commit add a whennodata list where extension can register a callback to be called if no phase related data are found in the repository. The goal is to ensure the existing extension that move phase data in 2.1 can compute consistent phase boundary for existing repo.
author Pierre-Yves David <pierre-yves.david@logilab.fr>
date Wed, 18 Jan 2012 17:23:54 +0100
parents a1aad8333864
children 91f3ac205816
line wrap: on
line source

import os
from mercurial import hg, ui, merge

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 = 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, 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,