Don't care about st_dev in the index file
Thomas Glanzmann points out that it doesn't work well with different
clients accessing the repository over NFS - they have different views
on what the "device" for the filesystem is.
Of course, other filesystems may not even have stable inode numbers.
But we don't care. At least for now.
diff --git a/read-cache.c b/read-cache.c
index 24ebe38..34c040a 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -17,7 +17,7 @@
{
ce->ce_ctime.sec = htonl(st->st_ctime);
ce->ce_mtime.sec = htonl(st->st_mtime);
-#ifdef NSEC
+#ifdef USE_NSEC
ce->ce_ctime.nsec = htonl(st->st_ctim.tv_nsec);
ce->ce_mtime.nsec = htonl(st->st_mtim.tv_nsec);
#endif
@@ -50,7 +50,7 @@
if (ce->ce_ctime.sec != htonl(st->st_ctime))
changed |= CTIME_CHANGED;
-#ifdef NSEC
+#ifdef USE_NSEC
/*
* nsec seems unreliable - not all filesystems support it, so
* as long as it is in the inode cache you get right nsec
@@ -65,9 +65,19 @@
if (ce->ce_uid != htonl(st->st_uid) ||
ce->ce_gid != htonl(st->st_gid))
changed |= OWNER_CHANGED;
- if (ce->ce_dev != htonl(st->st_dev) ||
- ce->ce_ino != htonl(st->st_ino))
+ if (ce->ce_ino != htonl(st->st_ino))
changed |= INODE_CHANGED;
+
+#ifdef USE_STDEV
+ /*
+ * st_dev breaks on network filesystems where different
+ * clients will have different views of what "device"
+ * the filesystem is on
+ */
+ if (ce->ce_dev != htonl(st->st_dev))
+ changed |= INODE_CHANGED;
+#endif
+
if (ce->ce_size != htonl(st->st_size))
changed |= DATA_CHANGED;
return changed;