mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 08:47:12 +03:00
1d44bd2bbb
This allows us to write doctests depending on a ui object, but not on global configs. ui.load() is a class method so we can do wsgiui.load(). All ui() calls but for doctests are replaced with ui.load(). Some of them could be changed to not load configs later.
89 lines
1.9 KiB
Python
89 lines
1.9 KiB
Python
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=' ')
|