mercurial/debugcommands.py
changeset 30956 db30c6bfeb70
parent 30955 8e38fa360a12
child 30957 14794735faa8
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):