Re: [PATCH] Extend index to save more flags
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Sep 2, 2008, 07:25 UTC
- Message-ID
- <7vhc8zm2ka.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <1220278585-26969-1-git-send-email-pclouds@gmail.com>
Nguyễn Thái Ngọc Duy <pclouds@gmail.com> writes:
Show 10 quoted lines
> 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.
Show 28 quoted lines
> 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.