Define also _DEFAULT_SOURCE where _BSD_SOURCE is already defined.
[metastore.git] / README
blob62745fc72aa0707cce13a33501a99a8a6e35c6c6
1 metastore
2 =========
4 metastore is a tool to store the metadata of files/directories/links in
5 a file tree to a separate file and to later compare and apply the stored
6 metadata to said file tree.
8 It was originally written as a supplement to git, which does not store
9 all metadata, making it unsuitable for e.g. storing /etc in a
10 repository.
12 metastore can also be helpful if you want to create a tarball of a file
13 tree and make sure that "everything" (e.g. xattrs, mtime, owner, group)
14 is stored along with the files.
17 Stored metadata
18 ---------------
20 metastore stores following metadata in its files:
22 - owner,
23 - group,
24 - permissions,
25 - xattrs,
26 - mtime - optionally.
29 Usage
30 -----
32 See metastore.txt file, which is plain-text version of the manual page.
34 If you want to use metastore within git repository, then consider
35 copying exemplary scripts from examples/hooks/ directory to hooks
36 subdirectory in your git directory, and make them executable.
37 You can also tune them if it's necessary. But.
38 Before using, please read the warning in the comments of pre-commit hook.
39 Mind that merge conflicts can only be solved manually, because metastore
40 file is binary in its current form (there's a plan to fix it in future).
41 Dump action can be really helpful in such cases.
44 File format
45 -----------
47 See FILEFORMAT file, which describes internals of metastore file.
50 Requirements
51 ------------
53 - Linux
54 - GNU make
55 - C99 compiler, like gcc or clang
56 - libbsd
59 Building
60 --------
62 Simply run `make` from project's root directory.
64 Building out-of-tree is supported out-of-the-box. Go to your chosen
65 build directory and run there:
67     $ make -f path/to/metastore/Makefile
70 Installation
71 ------------
73 Run `make install`.  Default settings for installation are:
75      PREFIX      = /usr/local
77      EXECPREFIX  = ${PREFIX}
78                    (/usr/local)
79      BINDIR      = ${EXECPREFIX}/bin
80                    (/usr/local/bin)
81      DATAROOTDIR = ${PREFIX}/share
82                    (/usr/local/share)
83      DOCDIR      = ${DATAROOTDIR}/doc/metastore
84                    (/usr/local/share/doc/metastore)
85      MANDIR      = ${DATAROOTDIR}/man
86                    (/usr/local/share/man)
88 You can always change them, e.g.:
90     $ make install PREFIX=/usr
92 DESTDIR is also supported.
95 Reporing issues
96 ---------------
98 Please use the issue tracker provided by GitHub to send bug reports
99 or feature requests.
101 https://github.com/przemoc/metastore/issues
103 If you're sending a bug report, then please provide some basic info:
105 - What system do you have?  
106   (`uname -a`, `lsb_release -drc`)
107 - What gcc version have you used for building metastore?  
108   (`gcc -v`)
109 - Do you use any custom FLAGS during build?  
110   (`set | grep FLAGS=`)
111 - What libc implementation and version are you using?
112 - What metastore version are you using?  
113   (`metastore -V`)
114 - What filesystem do you use and how it is mounted?  
115   (`mount | grep $(df . | awk 'NR==2{print$1}')`)
118 Mailing list
119 ------------
121 metastore has one official read-only mailing list dedicated to
122 announcements like new version releases or other important updates.
124 You can subscribe it using following web page:
125 https://www.freelists.org/list/metastore-announce
127 or by sending email to metastore-announce-request@freelists.org
128 with `subscribe` in the Subject field.
130 Archive for metastore-announce mailing list is available at:
131 https://www.freelists.org/archive/metastore-announce
134 License
135 -------
137 The project is licensed under the terms of the GNU GPL v2 only license.
138 See LICENSE.GPLv2 file for the full license text.