During a git clean, some other process might be deleting files as
well. If this happens, make git clean no longer die.
Signed-off-by: David Turner <redacted>
---
builtin/clean.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/builtin/clean.c b/builtin/clean.c
index 98c103f..3ae44c2 100644
--- a/builtin/clean.c
+++ b/builtin/clean.c
@@ -941,8 +941,16 @@ int cmd_clean(int argc, const char **argv, const char *prefix)
if (!cache_name_is_other(ent->name, ent->len))
continue;
- if (lstat(ent->name, &st))
- die_errno("Cannot lstat '%s'", ent->name);
+ /*
+ * Some concurrent process might have already removed
+ * ent->name.
+ */
+ if (lstat(ent->name, &st)) {
+ if (errno == ENOENT || errno == ENOTDIR)
+ continue;
+ else
+ die_errno("Cannot lstat '%s'", ent->name);
+ }
if (pathspec.nr)
matches = dir_path_match(ent, &pathspec, 0, NULL);--
2.0.4.315.gad8727a-twtrsrc