Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/commands.py @ 30523:625ccc95fa96
debugcommands: move 'debugdag' into the new module
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Wed, 17 Aug 2016 20:41:54 -0700 |
parents | a0878bc87379 |
children | cdd1885d0f2f |
comparison
equal
deleted
inserted
replaced
30522:ff7df4bb75de | 30523:625ccc95fa96 |
---|---|
34 bookmarks, | 34 bookmarks, |
35 bundle2, | 35 bundle2, |
36 changegroup, | 36 changegroup, |
37 cmdutil, | 37 cmdutil, |
38 copies, | 38 copies, |
39 dagparser, | |
40 dagutil, | 39 dagutil, |
41 destutil, | 40 destutil, |
42 dirstateguard, | 41 dirstateguard, |
43 discovery, | 42 discovery, |
44 encoding, | 43 encoding, |
1864 Returns 0 on success, 1 if errors are encountered. | 1863 Returns 0 on success, 1 if errors are encountered. |
1865 """ | 1864 """ |
1866 with repo.wlock(False): | 1865 with repo.wlock(False): |
1867 return cmdutil.copy(ui, repo, pats, opts) | 1866 return cmdutil.copy(ui, repo, pats, opts) |
1868 | 1867 |
1869 @command('debugdag', | |
1870 [('t', 'tags', None, _('use tags as labels')), | |
1871 ('b', 'branches', None, _('annotate with branch names')), | |
1872 ('', 'dots', None, _('use dots for runs')), | |
1873 ('s', 'spaces', None, _('separate elements by spaces'))], | |
1874 _('[OPTION]... [FILE [REV]...]'), | |
1875 optionalrepo=True) | |
1876 def debugdag(ui, repo, file_=None, *revs, **opts): | |
1877 """format the changelog or an index DAG as a concise textual description | |
1878 | |
1879 If you pass a revlog index, the revlog's DAG is emitted. If you list | |
1880 revision numbers, they get labeled in the output as rN. | |
1881 | |
1882 Otherwise, the changelog DAG of the current repo is emitted. | |
1883 """ | |
1884 spaces = opts.get('spaces') | |
1885 dots = opts.get('dots') | |
1886 if file_: | |
1887 rlog = revlog.revlog(scmutil.opener(os.getcwd(), audit=False), file_) | |
1888 revs = set((int(r) for r in revs)) | |
1889 def events(): | |
1890 for r in rlog: | |
1891 yield 'n', (r, list(p for p in rlog.parentrevs(r) | |
1892 if p != -1)) | |
1893 if r in revs: | |
1894 yield 'l', (r, "r%i" % r) | |
1895 elif repo: | |
1896 cl = repo.changelog | |
1897 tags = opts.get('tags') | |
1898 branches = opts.get('branches') | |
1899 if tags: | |
1900 labels = {} | |
1901 for l, n in repo.tags().items(): | |
1902 labels.setdefault(cl.rev(n), []).append(l) | |
1903 def events(): | |
1904 b = "default" | |
1905 for r in cl: | |
1906 if branches: | |
1907 newb = cl.read(cl.node(r))[5]['branch'] | |
1908 if newb != b: | |
1909 yield 'a', newb | |
1910 b = newb | |
1911 yield 'n', (r, list(p for p in cl.parentrevs(r) | |
1912 if p != -1)) | |
1913 if tags: | |
1914 ls = labels.get(r) | |
1915 if ls: | |
1916 for l in ls: | |
1917 yield 'l', (r, l) | |
1918 else: | |
1919 raise error.Abort(_('need repo for changelog dag')) | |
1920 | |
1921 for line in dagparser.dagtextlines(events(), | |
1922 addspaces=spaces, | |
1923 wraplabels=True, | |
1924 wrapannotations=True, | |
1925 wrapnonlinear=dots, | |
1926 usedots=dots, | |
1927 maxlinewidth=70): | |
1928 ui.write(line) | |
1929 ui.write("\n") | |
1930 | |
1931 @command('debugdata', debugrevlogopts, _('-c|-m|FILE REV')) | 1868 @command('debugdata', debugrevlogopts, _('-c|-m|FILE REV')) |
1932 def debugdata(ui, repo, file_, rev=None, **opts): | 1869 def debugdata(ui, repo, file_, rev=None, **opts): |
1933 """dump the contents of a data file revision""" | 1870 """dump the contents of a data file revision""" |
1934 if opts.get('changelog') or opts.get('manifest') or opts.get('dir'): | 1871 if opts.get('changelog') or opts.get('manifest') or opts.get('dir'): |
1935 if rev is not None: | 1872 if rev is not None: |