metastore is a tool to store the metadata of files/directories/links in a file tree to a separate file and to later compare and apply the stored metadata to said file tree.
It was originally written as a supplement to git, which does not store all metadata, making it unsuitable for e.g. storing /etc in a repository.
metastore can also be helpful if you want to create a tarball of a file tree and make sure that "everything" (e.g. xattrs, mtime, owner, group) is stored along with the files.
1.1.104 Dec 2017 04:24
* BUGFIX: Reading metadata file with extended attributes entries led to corruption of metadata represented in memory on 64-bit platforms, so applying could led to corruption of metadata on disk too. Bug discovered thanks to Uros Juvan.
1.1.002 Feb 2016 20:49
* BUGFIX: Applying metadata with extended attribute having null byte in value zeroed all following bytes of this xattr value.
* BUGFIX: Reading extended attributes while not having permissions resulted in crash.
* Empty directories not present in metadata can be now removed when applying stored metadata if -E / --remove-empty-dirs option is used.
* Stored metadata (in .metadata file by default) and real metadata (from filesystem) can be now dumped in human-readable form using new action: -d / --dump. Please do not rely on its current format!
* Scripts in example/ directory do not require bash anymore and there is a new example for post checkout hook.
* Dependency on libattr's xattr.h header has been removed. As long as your libc provides sys/xattr.h (glibc does it since v2.3), everything should be fine.
* Dependency on libbsd has been added. It's used by dump action.