aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictoria Dye <vdye@github.com>2022-08-12 20:10:11 +0000
committerJunio C Hamano <gitster@pobox.com>2022-08-12 13:20:02 -0700
commitba307a50467aa0bc588f24a95a786014b42e3054 (patch)
treef6fe4d2240344708ea4adf9508813b074e9f590a
parent91be401945a58c95a61c94bd5ab5ed25d143803d (diff)
downloadgit-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.c10
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);