Thread (6 messages) flat view 6 messages, 4 authors, 2016-06-15
DORMANTno replies

[PATCH 1/2] Silence diffs due to use by non-C code.

From: Robin Rosenberg <hidden>
Date: 2016-06-15 22:46:40
Subsystem: the rest · Maintainer: Linus Torvalds

In particular, some of the stat info, is not available to Java programs.
JGit sets the uid, gid, dev and ino to all ones to indicate this. Recognose
this special value and ignore changes in those values when the on-disk
value has all bits set.
---
 read-cache.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

This patch is needed for previous one to apply. This approach to silencing
index stats diff when JGit has been used does not require special options and
one could perhaps argue that any other language without portable access to
these fields should set the fields just like JGit does.

The the flag approach is selected, then these patches should be squashed
together.
diff --git a/read-cache.c b/read-cache.c
index 3f58711..45083ab 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -210,10 +210,10 @@ static int ce_match_stat_basic(struct cache_entry *ce, struct stat *st)
 		changed |= CTIME_CHANGED;
 #endif
 
-	if (ce->ce_uid != (unsigned int) st->st_uid ||
-	    ce->ce_gid != (unsigned int) st->st_gid)
+	if ((ce->ce_uid != ~0u && ce->ce_uid != (unsigned int) st->st_uid) ||
+	    (ce->ce_gid != ~0u && ce->ce_gid != (unsigned int) st->st_gid))
 		changed |= OWNER_CHANGED;
-	if (ce->ce_ino != (unsigned int) st->st_ino)
+	if (ce->ce_ino != ~0u && ce->ce_ino != (unsigned int) st->st_ino)
 		changed |= INODE_CHANGED;
 
 #ifdef USE_STDEV
@@ -222,7 +222,7 @@ static int ce_match_stat_basic(struct cache_entry *ce, struct stat *st)
 	 * clients will have different views of what "device"
 	 * the filesystem is on
 	 */
-	if (ce->ce_dev != (unsigned int) st->st_dev)
+	if (ce->ce_dev != ~0u && ce->ce_dev != (unsigned int) st->st_dev)
 		changed |= INODE_CHANGED;
 #endif
 
-- 
1.6.3.rc2.1.g4f9e8.dirty
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help