summaryrefslogtreecommitdiff
path: root/README
blob: c65edd65830dbace1f7e87d709d25e9ddc21c303 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
metastore
=========

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 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.


Stored metadata
---------------

metastore stores following metadata in its files:

- owner,
- group,
- permissions,
- xattrs,
- mtime - optionally.


Usage
-----

See metastore.txt file, which is plain-text version of the manual page.

If you want to use metastore within git repository, then consider
copying exemplary scripts from examples/hooks/ directory to hooks
subdirectory in your git directory, and make them executable.
You can also tune them if it's necessary. But.
Before using, please read the warning in the comments of pre-commit hook.
Mind that merge conflicts can only be solved manually, because metastore
file is binary in its current form (there's a plan to fix it in future).
Dump action can be really helpful in such cases.


File format
-----------

See FILEFORMAT file, which describes internals of metastore file.


Requirements
------------

- Linux
- GNU make
- C99 compiler, like gcc or clang
- libbsd


Building
--------

Simply run `make` from project's root directory.

Building out-of-tree is supported out-of-the-box. Go to your chosen
build directory and run there:

    $ make -f path/to/metastore/Makefile


Installation
------------

Run `make install`.  Default settings for installation are:

     PREFIX      = /usr/local

     EXECPREFIX  = ${PREFIX}
                   (/usr/local)
     BINDIR      = ${EXECPREFIX}/bin
                   (/usr/local/bin)
     DATAROOTDIR = ${PREFIX}/share
                   (/usr/local/share)
     DOCDIR      = ${DATAROOTDIR}/doc/metastore
                   (/usr/local/share/doc/metastore)
     MANDIR      = ${DATAROOTDIR}/man
                   (/usr/local/share/man)

You can always change them, e.g.:

    $ make install PREFIX=/usr

DESTDIR is also supported.


Reporing issues
---------------

Please use the issue tracker provided by GitHub to send bug reports
or feature requests.

https://github.com/przemoc/metastore/issues


License
-------

The project is licensed under the terms of the GNU GPL v2 only license.
See LICENSE.GPLv2 file for the full license text.