comparison mercurial/debugcommands.py @ 30956:db30c6bfeb70

debugcommands: move 'debugsuccessorssets' in the new module
author Pierre-Yves David <pierre-yves.david@ens-lyon.org>
date Thu, 02 Feb 2017 10:05:22 +0100
parents 8e38fa360a12
children 14794735faa8
comparison
equal deleted inserted replaced
30955:8e38fa360a12 30956:db30c6bfeb70
1893 for k, v in sorted(ctx.substate.items()): 1893 for k, v in sorted(ctx.substate.items()):
1894 ui.write(('path %s\n') % k) 1894 ui.write(('path %s\n') % k)
1895 ui.write((' source %s\n') % v[0]) 1895 ui.write((' source %s\n') % v[0])
1896 ui.write((' revision %s\n') % v[1]) 1896 ui.write((' revision %s\n') % v[1])
1897 1897
1898 @command('debugsuccessorssets',
1899 [],
1900 _('[REV]'))
1901 def debugsuccessorssets(ui, repo, *revs):
1902 """show set of successors for revision
1903
1904 A successors set of changeset A is a consistent group of revisions that
1905 succeed A. It contains non-obsolete changesets only.
1906
1907 In most cases a changeset A has a single successors set containing a single
1908 successor (changeset A replaced by A').
1909
1910 A changeset that is made obsolete with no successors are called "pruned".
1911 Such changesets have no successors sets at all.
1912
1913 A changeset that has been "split" will have a successors set containing
1914 more than one successor.
1915
1916 A changeset that has been rewritten in multiple different ways is called
1917 "divergent". Such changesets have multiple successor sets (each of which
1918 may also be split, i.e. have multiple successors).
1919
1920 Results are displayed as follows::
1921
1922 <rev1>
1923 <successors-1A>
1924 <rev2>
1925 <successors-2A>
1926 <successors-2B1> <successors-2B2> <successors-2B3>
1927
1928 Here rev2 has two possible (i.e. divergent) successors sets. The first
1929 holds one element, whereas the second holds three (i.e. the changeset has
1930 been split).
1931 """
1932 # passed to successorssets caching computation from one call to another
1933 cache = {}
1934 ctx2str = str
1935 node2str = short
1936 if ui.debug():
1937 def ctx2str(ctx):
1938 return ctx.hex()
1939 node2str = hex
1940 for rev in scmutil.revrange(repo, revs):
1941 ctx = repo[rev]
1942 ui.write('%s\n'% ctx2str(ctx))
1943 for succsset in obsolete.successorssets(repo, ctx.node(), cache):
1944 if succsset:
1945 ui.write(' ')
1946 ui.write(node2str(succsset[0]))
1947 for node in succsset[1:]:
1948 ui.write(' ')
1949 ui.write(node2str(node))
1950 ui.write('\n')
1951
1898 @command('debugupgraderepo', [ 1952 @command('debugupgraderepo', [
1899 ('o', 'optimize', [], _('extra optimization to perform'), _('NAME')), 1953 ('o', 'optimize', [], _('extra optimization to perform'), _('NAME')),
1900 ('', 'run', False, _('performs an upgrade')), 1954 ('', 'run', False, _('performs an upgrade')),
1901 ]) 1955 ])
1902 def debugupgraderepo(ui, repo, run=False, optimize=None): 1956 def debugupgraderepo(ui, repo, run=False, optimize=None):