diff --git a/erp5/util/testnode/Updater.py b/erp5/util/testnode/Updater.py
index 5aff5d3c8160a6883bfdf2f3329c37aec1ed24a3..f77c74790755df9d5809b58398fc85067bd38690 100644
--- a/erp5/util/testnode/Updater.py
+++ b/erp5/util/testnode/Updater.py
@@ -188,6 +188,12 @@ class Updater(object):
           h = revision[1]
         if h != self._git('rev-parse', 'HEAD'):
           self.deletePycFiles('.')
+          # For performance reasons, 'reset --merge' only looks at mtime & ctime
+          # to check is the index is correct and conflicts immediately if
+          # contents or metadata changed. Even hardlinking a file changes its
+          # ctime, so at least for buildout (local download), we need to
+          # refresh index first.
+          self._git('update-index', '--refresh')
           self._git('reset', '--merge', h)
       else:
         self.deletePycFiles('.')