|
25 | 25 | #include "pathspec.h" |
26 | 26 | #include "help.h" |
27 | 27 | #include "prompt.h" |
| 28 | +#include "advice.h" |
28 | 29 |
|
29 | 30 | static int require_force = -1; /* unset */ |
30 | 31 | static int interactive; |
@@ -220,6 +221,9 @@ static int remove_dirs(struct strbuf *path, const char *prefix, int force_flag, |
220 | 221 | quote_path(path->buf, prefix, "ed, 0); |
221 | 222 | errno = saved_errno; |
222 | 223 | warning_errno(_(msg_warn_remove_failed), quoted.buf); |
| 224 | + if (saved_errno == ENAMETOOLONG) { |
| 225 | + advise_if_enabled(ADVICE_NAME_TOO_LONG, _("Setting `core.longPaths` may allow the deletion to succeed.")); |
| 226 | + } |
223 | 227 | *dir_gone = 0; |
224 | 228 | } |
225 | 229 | ret = res; |
@@ -255,6 +259,9 @@ static int remove_dirs(struct strbuf *path, const char *prefix, int force_flag, |
255 | 259 | quote_path(path->buf, prefix, "ed, 0); |
256 | 260 | errno = saved_errno; |
257 | 261 | warning_errno(_(msg_warn_remove_failed), quoted.buf); |
| 262 | + if (saved_errno == ENAMETOOLONG) { |
| 263 | + advise_if_enabled(ADVICE_NAME_TOO_LONG, _("Setting `core.longPaths` may allow the deletion to succeed.")); |
| 264 | + } |
258 | 265 | *dir_gone = 0; |
259 | 266 | ret = 1; |
260 | 267 | } |
@@ -298,6 +305,9 @@ static int remove_dirs(struct strbuf *path, const char *prefix, int force_flag, |
298 | 305 | quote_path(path->buf, prefix, "ed, 0); |
299 | 306 | errno = saved_errno; |
300 | 307 | warning_errno(_(msg_warn_remove_failed), quoted.buf); |
| 308 | + if (saved_errno == ENAMETOOLONG) { |
| 309 | + advise_if_enabled(ADVICE_NAME_TOO_LONG, _("Setting `core.longPaths` may allow the deletion to succeed.")); |
| 310 | + } |
301 | 311 | *dir_gone = 0; |
302 | 312 | ret = 1; |
303 | 313 | } |
@@ -1110,6 +1120,9 @@ int cmd_clean(int argc, |
1110 | 1120 | qname = quote_path(item->string, NULL, &buf, 0); |
1111 | 1121 | errno = saved_errno; |
1112 | 1122 | warning_errno(_(msg_warn_remove_failed), qname); |
| 1123 | + if (saved_errno == ENAMETOOLONG) { |
| 1124 | + advise_if_enabled(ADVICE_NAME_TOO_LONG, _("Setting `core.longPaths` may allow the deletion to succeed.")); |
| 1125 | + } |
1113 | 1126 | errors++; |
1114 | 1127 | } else if (!quiet) { |
1115 | 1128 | qname = quote_path(item->string, NULL, &buf, 0); |
|
0 commit comments