From: Junio C Hamano Date: Mon, 8 Aug 2016 21:48:42 +0000 (-0700) Subject: Merge branch 'nd/fbsd-lazy-mtime' X-Git-Tag: v2.10.0-rc0~36 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/17501ba1cd56d4774e59c797bc048ee813dee235?ds=inline;hp=-c Merge branch 'nd/fbsd-lazy-mtime' FreeBSD can lie when asked mtime of a directory, which made the untracked cache code to fall back to a slow-path, which in turn caused tests in t7063 to fail because it wanted to verify the behaviour of the fast-path. * nd/fbsd-lazy-mtime: t7063: work around FreeBSD's lazy mtime update feature --- 17501ba1cd56d4774e59c797bc048ee813dee235 diff --combined t/t7063-status-untracked-cache.sh index c23a21cb74,e0a8228f19..0667bd9dd3 --- a/t/t7063-status-untracked-cache.sh +++ b/t/t7063-status-untracked-cache.sh @@@ -4,6 -4,20 +4,20 @@@ test_description='test untracked cache . ./test-lib.sh + # On some filesystems (e.g. FreeBSD's ext2 and ufs) directory mtime + # is updated lazily after contents in the directory changes, which + # forces the untracked cache code to take the slow path. A test + # that wants to make sure that the fast path works correctly should + # call this helper to make mtime of the containing directory in sync + # with the reality before checking the fast path behaviour. + # + # See <20160803174522.5571-1-pclouds@gmail.com> if you want to know + # more. + + sync_mtime () { + find . -type d -ls >/dev/null + } + avoid_racy() { sleep 1 } @@@ -53,7 -67,7 +67,7 @@@ A tw EOF cat >../dump.expect <../actual && cat >../expect <../actual && cat >../expect <done/four && # four is gitignored at a higher level echo five >done/five && # five is not gitignored echo test >base && #we need to ensure that the root dir is touched - rm base + rm base && + sync_mtime ' test_expect_success 'test sparse status with untracked cache' ' @@@ -643,7 -658,7 +658,7 @@@ test_expect_success 'test ident field i cp -R done dthree dtwo four three ../other_worktree && GIT_WORK_TREE=../other_worktree git status 2>../err && echo "warning: Untracked cache is disabled on this system or location." >../expect && - test_cmp ../expect ../err + test_i18ncmp ../expect ../err ' test_done