Merge branch 'nd/fbsd-lazy-mtime' into maint
authorJunio C Hamano <gitster@pobox.com>
Wed, 10 Aug 2016 18:55:30 +0000 (11:55 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 10 Aug 2016 18:55:30 +0000 (11:55 -0700)
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

1  2 
t/t7063-status-untracked-cache.sh
index a828a5f3b4b67c3f3241a8c7522b3b9307c809fa,e0a8228f1978aa380ea49e6f094dff3de5c26529..4e1e290a9f4fd14ed40ac6f29987cd2af34537cd
@@@ -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 <<EOF &&
 -info/exclude e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
 +info/exclude $EMPTY_BLOB
  core.excludesfile 0000000000000000000000000000000000000000
  exclude_per_dir .gitignore
  flags 00000006
@@@ -137,7 -151,7 +151,7 @@@ EO
  test_expect_success 'verify untracked cache dump' '
        test-dump-untracked-cache >../actual &&
        cat >../expect <<EOF &&
 -info/exclude e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
 +info/exclude $EMPTY_BLOB
  core.excludesfile 0000000000000000000000000000000000000000
  exclude_per_dir .gitignore
  flags 00000006
@@@ -184,7 -198,7 +198,7 @@@ EO
  test_expect_success 'verify untracked cache dump' '
        test-dump-untracked-cache >../actual &&
        cat >../expect <<EOF &&
 -info/exclude e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
 +info/exclude $EMPTY_BLOB
  core.excludesfile 0000000000000000000000000000000000000000
  exclude_per_dir .gitignore
  flags 00000006
@@@ -416,7 -430,8 +430,8 @@@ test_expect_success 'create/modify file
        echo four >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' '