hg manifest

The manifest is the file that describes the contents of the repository at a particular changeset ID. It primarily contains a list of file names and revisions of those files that are present. The manifest ID identifies the version of the manifest that goes with a particular changeset. The manifest ID is a nodeid. Multiple changesets may refer to the same manifest revision.

A manifest describes the state of a project by listing each file and its nodeid to specify which version. Recreating a particular state means simply looking up its manifest and reconstructing the listed file versions from their revlogs. The manifest is conceptually a file. All of its versions, which collectively represent the entire project history, are stored in a revlog (see the file .hg/store/00manifest.d) and an associated index (.hg/store/00manifest.i).

A manifest looks something like this:

$ hg debugdata --manifest 10
.hgignore 708b3e37a5d2b260e303a6d8c0386ca0c18bf41d ecf027f3b56bf7fadf8e3dd75cfcd67d8b58deb1
PKG-INFO 9b3ed8f2b81095a13064402e930565f083346e9a
README d6f7553376154241dea40dc2af96a8b357f0e991
hg 06763db6de79098e8cdf14726ca506fdf16749be
mercurial/ b80de5d138758541c5f05265ad144ab9fa86d1db
mercurial/ 17f5a9fbd99622f31a392c33ac1e903925dc80ed
mercurial/ b6f52e23e356748c5039313d8b639cda16bf67ba
mercurial/ 1890959ebcf6b06e3e932e5e47bb35eeb30ea2ed
mercurial/ a05f65c44bfbeec6a42336cd2ff0b30217899ca3
mercurial/ edd628e83c50e15004dce0207aaab63f8ceb8c97
mercurial/ 9d180df101dc14ce3dd582fd998b36c98b3e39aa
notes.txt 703afcec5edb749cf5cec67831f554d6da13f2fb ccf3f6daf0f13101ca73631f7a1769e328b472c9
tkmerge 3c922edb43a9c143682f7bc7b00f98b3c756ebe7

The above command displays the actual contents of the manifest revision 10.

The manifest includes one line for each tracked file. Note that the two fields in each line are separated by null character ('\0'), not a space. Also note that every line ends in a linefeed ('\n'), including the last line.

hg also offers a manifest command which displays all of the tracked files in the current revision:

$ hg --debug manifest
44754b8b0fc10af6beb2e369e1ab9049f45367ba 644   .hgignore
16eb79a9f9f03fb89bcc4dc33446f11d43091674 644   .hgsigs
b76e3114c5fecfa319d62a3aaef06eeab82e193b 644   .hgtags
7c8afb9501740a450c549b4b1f002c803c45193a 644   CONTRIBUTORS
5ac863e17c7035f1d11828d848fb2ca450d89794 644   COPYING
1c2110687d65b7448b73c4a4c7c4b28f957eaf21 644   Makefile
e4907aefc8dd5710417fb9887099a83fc14f7749 644   README
73870a44b18b40b153acba2ed238d4bd305902c2 644   contrib/bash_completion
fd3294ffa3b6095ec4b77f88241f468891324dab 755 * contrib/buildrpm
dc0c4b232a1d0b5ec4f6c87f020c664b69b6cca8 755 * contrib/convert-repo
2956444ba8a357c730fb3e9801c3d054351894f2 644   contrib/dumprevlog
78f7c038716f258f451528e1e8241d895419f2ee 644   contrib/git-viz/git-cat-file
78f7c038716f258f451528e1e8241d895419f2ee 644   contrib/git-viz/git-diff-tree
78f7c038716f258f451528e1e8241d895419f2ee 644   contrib/git-viz/git-rev-list
78f7c038716f258f451528e1e8241d895419f2ee 644   contrib/git-viz/git-rev-tree
b58aa4c0ea58bb671532171ac4a2cd5957661531 644   contrib/git-viz/hg-viz
70ceb076d0e3e8d1b688d726d55ef00402d92ddc 755 * contrib/hg-relink
2943e43127ba9d2e2bdd4627a36787d0b56b5e6b 755 * contrib/hg-ssh
560cd9ba449052f0222402155ea1d7f8bb0f87d2 755 * contrib/hgdiff
1f9e835e1be5a6fb1b781b3be18967231bdb18a9 755 * contrib/hgk

Help text:

See also: Design

CategoryCommand CategoryInternals


Manifest (last edited 2013-11-07 02:08:31 by MaytagMetalark)