Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> writes: > The on-disk format of index only saves 16 bit flags, nearly all have > been used. The last bit (CE_EXTENDED) is used to for future extension. > > This patch extends index entry format to save more flags in future. > The new entry format will be used when CE_EXTENDED bit is 1. > > Because older implementation may not understand CE_EXTENDED bit and > misread the new format, if there is any extended entry in index, index > header version will turn 3, which makes it incompatible for older git. > If there is none, header version will return to 2 again. I think this is a good change. > diff --git a/cache.h b/cache.h > index f725783..f8578d1 100644 > --- a/cache.h > +++ b/cache.h > @@ -109,6 +109,26 @@ struct ondisk_cache_entry { > char name[FLEX_ARRAY]; /* more */ > }; > > +/* > + * This struct is used when CE_EXTENDED bit is 1 > + * The struct must match ondisk_cache_entry exactly from > + * ctime till flags > + */ > +struct ondisk_cache_entry_extended { > + struct cache_time ctime; > + struct cache_time mtime; > + unsigned int dev; > + unsigned int ino; > + unsigned int mode; > + unsigned int uid; > + unsigned int gid; > + unsigned int size; > + unsigned char sha1[20]; > + unsigned short flags; > + unsigned short flags2; > + char name[FLEX_ARRAY]; /* more */ > +}; > + We should change these to more explicitly sized uint32_t both in the original and this extended structure, but after this patch (or later variant of it) lands in the tree. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html