From 7292804c1bafd43389defc0d7b4352ada666d626 Mon Sep 17 00:00:00 2001 From: Adam Spragg Date: Wed, 18 May 2022 16:35:35 +0100 Subject: Add ability to not save mtime in metadata files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. ¯\_(ツ)_/¯ --- src/metastore.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/metastore.h') diff --git a/src/metastore.h b/src/metastore.h index bd79416..de51292 100644 --- a/src/metastore.h +++ b/src/metastore.h @@ -28,6 +28,9 @@ #define VERSION_1 "00000001" #define VERSIONLEN 8 +/* Sentinel value to determine if mtime is not in use */ +#define MTIME_NONE -1 + /* Default filename */ #define METAFILE "./.metadata" -- cgit v1.2.1