Search code examples
mercurialinternals

tool to inspect mercurial's internal files


Git has the cat-file command to inspect internal files, e.g. git cat-file blob 557db03 will show the contents of the object whose hash starts with 557db03.

Are there similar tools for mercurial that allow me to look at all the different data files that merfcurial uses internally?


Solution

  • Try hg --debug help and you can see the list of all the debug commands:

     debugancestor:
          find the ancestor revision of two revisions in a given index
     debugbuilddag:
          builds a repo with a given DAG from scratch in the current empty repo
     debugbundle:
          lists the contents of a bundle
     debugcheckstate:
          validate the correctness of the current dirstate
     debugcommands:
          list all available commands and options
     debugcomplete:
          returns the completion list associated with the given command
     debugdag:
          format the changelog or an index DAG as a concise textual description
     debugdata:
          dump the contents of a data file revision
     debugdate:
          parse and display a date
     debugdiscovery:
          runs the changeset discovery protocol in isolation
     debugfileset:
          parse and apply a fileset specification
     debugfsinfo:
          show information detected about current filesystem
     debuggetbundle:
          retrieves a bundle from a repo
     debugignore:
          display the combined ignore pattern
     debugindex:
          dump the contents of an index file
     debugindexdot:
          dump an index DAG as a graphviz dot file
     debuginstall:
          test Mercurial installation
     debugknown:
          test whether node ids are known to a repo
     debugpushkey:
          access the pushkey key/value protocol
     debugrebuildstate:
          rebuild the dirstate as it would look like for the given revision
     debugrename:
          dump rename information
     debugrevlog:
          show data and statistics about a revlog
     debugrevspec:
          parse and apply a revision specification
     debugsetparents:
          manually set the parents of the current working directory
     debugstate:
          show the contents of the current dirstate
     debugsub:
          (no help text available)
     debugwalk:
          show how files match on given patterns
     debugwireargs:
          (no help text available)
    

    There are a lot of them, and they pretty much expose everything.