On 2020-03-20 08:41:42+0700, Danh Doan <congdanhqx@xxxxxxxxx> wrote: > On 2020-03-19 15:16:09-0700, Junio C Hamano <gitster@xxxxxxxxx> wrote: > > Jeff King <peff@xxxxxxxx> writes: > > > > > On Thu, Mar 19, 2020 at 09:00:06PM +0700, Đoàn Trần Công Danh wrote: > > > > > >> Since commit 6b7728db81, (t7063: work around FreeBSD's lazy mtime > > >> update feature, 2016-08-03), we started to use ls as a trick to update > > >> directory's mtime. > > >> > > >> However, `-ls` flag isn't required by POSIX's find(1), and > > >> busybox(1) doesn't implement it. > > >> > > >> Use an equivalence `-exec ls -dils {} +` instead. > > > > > > Makes sense. I wonder if we need all of "-dils", but it's not clear to > > From the original commit message, I think whichever flags that call > stat(2) would be do it. It's `-d` (to check is_directory), and `-i` > for inode number. > > This make make wonder, will it be enough to just use: > > find . -type d >/dev/null >From the conversation in: xmqqmvktakvt.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxx I think find . -type d would trigger enough lstat(2), and `-ls` was added for separated stat(2). I guess either `-exec ls -d` or `-exec ls -i` will be enough. > > > > me which syscalls actually trigger the FreeBSD lazy-update behavior. I > > > guess probably it's stat()ing the directory, so "ls -ld" would be > > > sufficient (and that's implied by the examples in 6b7728db81). > > > > > > But I doubt the extra options would create a portability problem, so I > > > think it's fine either way. > > > > Thanks. I too wondered if -dils is really needed (POSIX of course > > have all of them, but we have to deal with non-POSIX systems, too, > > and I am not sure how things like "-i" works there). > > I think "-i" asks for stat(2) to get inode number, > which will ask FreeBSD sync mtime. > > > > s/equivalence/equivalent/; perhaps? > > Will do, I've never correctly used -ence and -ent pairs of words. -- Danh