diff options
| author | Victoria Dye <vdye@github.com> | 2022-08-12 20:10:11 +0000 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2022-08-12 13:20:02 -0700 |
| commit | ba307a50467aa0bc588f24a95a786014b42e3054 (patch) | |
| tree | f6fe4d2240344708ea4adf9508813b074e9f590a | |
| parent | 91be401945a58c95a61c94bd5ab5ed25d143803d (diff) | |
| download | git-ba307a50467aa0bc588f24a95a786014b42e3054.tar.xz | |
scalar-diagnose: add directory to archiver more gently
If a directory added to the 'scalar diagnose' archiver does not exist, warn
and return 0 from 'add_directory_to_archiver()' rather than failing with a
fatal error. This handles a failure edge case where the '.git/logs' has not
yet been created when running 'scalar diagnose', but extends to any
situation where a directory may be missing in the '.git' dir.
Now, when a directory is missing a warning is captured in the diagnostic
logs. This provides a user with more complete information than if 'scalar
diagnose' simply failed with an error.
Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Victoria Dye <vdye@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
| -rw-r--r-- | contrib/scalar/scalar.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/contrib/scalar/scalar.c b/contrib/scalar/scalar.c index 0404645228..b9092f0b61 100644 --- a/contrib/scalar/scalar.c +++ b/contrib/scalar/scalar.c @@ -266,14 +266,20 @@ static int add_directory_to_archiver(struct strvec *archiver_args, const char *path, int recurse) { int at_root = !*path; - DIR *dir = opendir(at_root ? "." : path); + DIR *dir; struct dirent *e; struct strbuf buf = STRBUF_INIT; size_t len; int res = 0; - if (!dir) + dir = opendir(at_root ? "." : path); + if (!dir) { + if (errno == ENOENT) { + warning(_("could not archive missing directory '%s'"), path); + return 0; + } return error_errno(_("could not open directory '%s'"), path); + } if (!at_root) strbuf_addf(&buf, "%s/", path); |
