From: Jeff King <firstname.lastname@example.org> To: Elijah Newren <email@example.com> Cc: "brian m. carlson" <firstname.lastname@example.org>, Jason Gore <Jason.Gore@microsoft.com>, "email@example.com" <firstname.lastname@example.org> Subject: Re: Git clean enumerates ignored directories (since 2.27) Date: Thu, 6 May 2021 23:25:54 -0400 [thread overview] Message-ID: <YJSzQm2p5bCAd8Fv@coredump.intra.peff.net> (raw) In-Reply-To: <CABPp-BH3tbTyA9gj=2vb878d1MQVCTqT7=kS5U+sB6CoDX0Jww@mail.gmail.com> On Thu, May 06, 2021 at 07:31:40PM -0700, Elijah Newren wrote: > On alpine linux-musl, I get an "error: Tests passed but test cleanup > failed; aborting", which makes it report as a failed build. I'm not > sure how to fix it and am asking for ideas. > > Apparently the deeply nested directory hierarchy cannot be removed on > that platform with a simple "rm -rf $dirname". It throws a "rm: can't > stat '/__w/git/git/t/trash > directory.t7300-clean/avoid-traversing-deep-hierarchy/directory400/directory399/directory398/.....(you > get the idea)....': Filename too long" error message. > > Adding a "test_when_finished find directory400 -delete" also gives a > "Filename too long" message followed by a lot of "Directory not empty" > messages. > > Anyone have any bright ideas about how to tweak this test? See  > for the current incarnation of the code, which was basically taken > from Brian's sample testcase. My guess is that that version of "rm" is trying to feed the entire pathname directly to unlink() and rmdir(), and it exceeds PATH_MAX. Even with GNU tools, for instance, I get: $ rmdir $(find avoid-traversing-deep-hierarchy -type d | tail -1) rmdir: failed to remove 'avoid-traversing-deep-hierarchy/directory400/ [...and so on...]/directory1': File name too long because it feeds the whole to a single rmdir() call. Whereas stracing GNU "rm -rf", it uses unlinkat() and openat() to delete each level individually (probably to avoid this exact problem). Is the actual path length important, or just the depth? If the latter, then calling it "d400/d399/.../d2/d1" would likely help, as that's less than 2000 bytes. -Peff
next prev parent reply other threads:[~2021-05-07 3:25 UTC|newest] Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-04-14 17:17 Jason Gore 2021-04-14 22:56 ` brian m. carlson 2021-04-15 8:51 ` Jeff King 2021-04-22 17:18 ` Jason Gore 2021-04-22 17:24 ` Elijah Newren 2021-05-07 4:08 ` Elijah Newren 2021-05-07 2:31 ` Elijah Newren 2021-05-07 3:25 ` Jeff King [this message] 2021-05-07 3:43 ` Jeff King 2021-05-07 3:44 ` Elijah Newren
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=YJSzQm2p5bCAd8Fv@coredump.intra.peff.net \ --email@example.com \ --cc=Jason.Gore@microsoft.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --subject='Re: Git clean enumerates ignored directories (since 2.27)' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).