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.206 Jan 2018 02:20
* Support building on systems with undefined PATH_MAX, e.g. GNU Hurd. Simple, but not ideal solution yet - PATH_MAX is assumed to be 4096.
* Stop assuming that LDFLAGS has flags only for the linker (LD). It used to be true long time ago, when these flags were passed directly to ld. Nowadays (for quite many years already) it happens differently and ld is almost never called directly during build, because it's the compiler that is used for performing linking stage (so called CCLD, practically almost always the same as CC).
The build process was already using CCLD (defaulting to CC's value), but was prefixing all unprefixed flags in LDFLAGS with -Wl, prefix, making it impossible to pass non-linker flags via LDFLAGS to CCLD. No more! Now it's assumed that LDFLAGS are meant to be passed to the compiler, so linker flags require explicit -Wl, prefix.
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.