Age | Commit message (Collapse) | Author |
|
If you're storing metadata in a version control system with multiple
branches, mtime differences are going to produce a whole bunch of
conflicts that you likely don't care about. This allows you to not
save mtime and avoid those.
Note that we use a sentinel value of -1 for the mentry `mtimensec` field
to indicate this in the data, as all values of `mtime` are theoretically
valid, but `mtimensec` must always be between 0 and 999,999,999 in the
real world.
I'm not 100% sure about the mechanism for selecting this feature. The
legacy behaviour for metastore was to save mtimes in the metadata files,
but ignore them for compare/apply by default, with a `--mtime` option to
use the mtime data.
Keeping the legacy behaviour for backwards compatibility, but adding a
`--no-mtime` option to ignore mtimes when saving felt like a reasonable
way of making this happen, but something about it doesn't feel great.
Maybe I just didn't figure out how to make the documentation clear
enough. ¯\_(ツ)_/¯
|
|
This ensures that the files are stable, and not subject to the order in
which the OS returns directory entries. This should prevent unnecessary
changes, and therefore unnecessary merge conflicts.
|
|
|
|
|
|
Only version 0 is supported here.
|
|
|
|
|
|
|
|
|
|
|
|
Previously metastore would fail if running from / and paths were given:
$ pwd
/
$ metastore -d bin
lstat failed for .bin: No such file or directory
Now it works properly:
$ metastore -d bin | head -1
lrwxrwxrwx root root 2018-08-17 16:31:23.120322532 +0200 ./bin/hostname
Signed-off-by: Przemyslaw Pawelczyk <przemoc@gmail.com>
|
|
|
|
|
|
|
|
Support building with no extended attributes support when NO_XATTR
macro is predefined to non-0 value (e.g. put -DNO_XATTR in CFLAGS).
|
|
|
|
|
|
Also change level of usage message shown after critical one to error,
so it can be suppressed without hiding critical one if desired (-qqq).
|
|
|
|
The Software Package Data Exchange (SPDX) is a good initiative, it has
matured over time and deserves accelerated adoption in open-source.
https://spdx.org/learn
https://spdx.org/using-spdx
https://spdx.org/license-list
|
|
Reformat second paragraph for better look. It had awkward line wrap.
Modernize third paragraph. No need to send letters to FSF in Boston.
|
|
David misdocumented read/write int functions back in commit
5fed2f9169fdd0585cc83ff0fa8210d97da77cb2 (2007-05-19) and later it
probably got copy-pasted to the documentation of file format.
|
|
Avoid using VLAs when it is not really needed, especially in cases like
this one here, when possible array size is very limited (1-8 bytes).
|
|
Declare file-scope objects or functions that do not need external
linkage as static.
|
|
Explicitly specify void when a function accepts no arguments.
|
|
PATH_MAX is not guaranteed by POSIX to be present and some systems, like
GNU Hurd, indeed does not define it.
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html
https://www.gnu.org/software/hurd/hurd/porting/guidelines.html
For now let's define PATH_MAX as 4096 (if it is not already defined),
because that's how Linux defines it and it seems quite reasonable.
In future dependence on PATH_MAX can be removed.
|
|
Wrong type has been used for calculating size of requested memory.
Underallocation happened in mentries_fromfile() code path if
sizeof(ssize_t) > sizeof(int), which is true on 64-bit platforms.
Reading metadata file with extended attributes entries led to corruption
of metadata represented in memory on such platforms, so applying could
led to corruption of metadata on disk too.
Reported-by: Uros Juvan <asmpro@gmail.com>
|
|
That way we can avoid possible (yet not feasible in current code)
NULL pointer dereference.
|
|
It's required to avoid getting warnings w/ glibc >= 2.20.
|
|
|
|
|
|
|
|
getxattr() call can fail in mentry_create(), so NULL-initialize
mentry->xattr_values[i] and update mentry->xattrs upon error, so there
is no attempt in mentry_free() to free unitialized xattr_names[i] and
xattr_values[i] pointers.
Fixes #38.
|
|
|
|
Fixes #36.
|
|
As a bonus you can build out-of-tree now via make -f.
It's part of the work related to issue #22.
|