mercurial/commands.py
changeset 14323 a79fea6b3e77
parent 14322 a90131b85fd8
child 14326 6078a99af433
--- a/mercurial/commands.py	Fri May 13 14:58:24 2011 -0500
+++ b/mercurial/commands.py	Sat May 14 00:30:32 2011 +0200
@@ -1502,17 +1502,17 @@
         ui.write(line)
         ui.write("\n")
 
-@command('debugdata', [], _('FILE REV'))
-def debugdata(ui, repo, file_, rev):
+@command('debugdata',
+    [('c', 'changelog', False, _('open changelog')),
+     ('m', 'manifest', False, _('open manifest'))],
+    _('-c|-m|FILE REV'))
+def debugdata(ui, repo, file_, rev = None, **opts):
     """dump the contents of a data file revision"""
-    r = None
-    if repo:
-        filelog = repo.file(file_)
-        if len(filelog):
-            r = filelog
-    if not r:
-        r = revlog.revlog(scmutil.opener(os.getcwd(), audit=False),
-                          file_[:-2] + ".i")
+    if opts.get('changelog') or opts.get('manifest'):
+        file_, rev = None, file_
+    elif rev is None:
+        raise error.CommandError('debugdata', _('invalid arguments'))
+    r = cmdutil.openrevlog(repo, 'debugdata', file_, opts)
     try:
         ui.write(r.revision(r.lookup(rev)))
     except KeyError:
@@ -1645,23 +1645,17 @@
         raise util.Abort(_("no ignore patterns found"))
 
 @command('debugindex',
-    [('f', 'format', 0, _('revlog format'), _('FORMAT'))],
-    _('FILE'))
-def debugindex(ui, repo, file_, **opts):
+    [('c', 'changelog', False, _('open changelog')),
+     ('m', 'manifest', False, _('open manifest')),
+     ('f', 'format', 0, _('revlog format'), _('FORMAT'))],
+    _('[-f FORMAT] -c|-m|FILE'))
+def debugindex(ui, repo, file_ = None, **opts):
     """dump the contents of an index file"""
-    r = None
-    if repo:
-        filelog = repo.file(file_)
-        if len(filelog):
-            r = filelog
-
+    r = cmdutil.openrevlog(repo, 'debugindex', file_, opts)
     format = opts.get('format', 0)
     if format not in (0, 1):
         raise util.Abort(_("unknown format %d") % format)
 
-    if not r:
-        r = revlog.revlog(scmutil.opener(os.getcwd(), audit=False), file_)
-
     generaldelta = r.version & revlog.REVLOGGENERALDELTA
     if generaldelta:
         basehdr = ' delta'
@@ -1855,17 +1849,13 @@
         else:
             ui.write(_("%s not renamed\n") % rel)
 
-@command('debugrevlog', [], _('FILE'))
-def debugrevlog(ui, repo, file_):
+@command('debugrevlog',
+    [('c', 'changelog', False, _('open changelog')),
+     ('m', 'manifest', False, _('open manifest'))],
+     _('-c|-m|FILE'))
+def debugrevlog(ui, repo, file_ = None, **opts):
     """show data and statistics about a revlog"""
-    r = None
-    if repo:
-        filelog = repo.file(file_)
-        if len(filelog):
-            r = filelog
-    if not r:
-        r = revlog.revlog(scmutil.opener(os.getcwd(), audit=False), file_)
-
+    r = cmdutil.openrevlog(repo, 'debugrevlog', file_, opts)
     v = r.version
     format = v & 0xFFFF
     flags = []
@@ -5019,4 +5009,4 @@
           " debugdate debuginstall debugfsinfo debugpushkey debugwireargs"
           " debugknown debuggetbundle debugbundle")
 optionalrepo = ("identify paths serve showconfig debugancestor debugdag"
-                " debugdata debugindex debugindexdot")
+                " debugdata debugindex debugindexdot debugrevlog")