diff --git a/include/git2/index.h b/include/git2/index.h index 599512f8a..8a84f507b 100644 --- a/include/git2/index.h +++ b/include/git2/index.h @@ -44,6 +44,46 @@ GIT_BEGIN_DECL #define GIT_IDXENTRY_VALID (0x8000) #define GIT_IDXENTRY_STAGESHIFT 12 +/* + * Flags are divided into two parts: in-memory flags and + * on-disk ones. Flags in GIT_IDXENTRY_EXTENDED_FLAGS + * will get saved on-disk. + * + * In-memory only flags: + */ +#define GIT_IDXENTRY_UPDATE (1 << 16) +#define GIT_IDXENTRY_REMOVE (1 << 17) +#define GIT_IDXENTRY_UPTODATE (1 << 18) +#define GIT_IDXENTRY_ADDED (1 << 19) + +#define GIT_IDXENTRY_HASHED (1 << 20) +#define GIT_IDXENTRY_UNHASHED (1 << 21) +#define GIT_IDXENTRY_WT_REMOVE (1 << 22) /* remove in work directory */ +#define GIT_IDXENTRY_CONFLICTED (1 << 23) + +#define GIT_IDXENTRY_UNPACKED (1 << 24) +#define GIT_IDXENTRY_NEW_SKIP_WORKTREE (1 << 25) + +/* + * Extended on-disk flags: + */ +#define GIT_IDXENTRY_INTENT_TO_ADD (1 << 29) +#define GIT_IDXENTRY_SKIP_WORKTREE (1 << 30) +/* GIT_IDXENTRY_EXTENDED2 is for future extension */ +#define GIT_IDXENTRY_EXTENDED2 (1 << 31) + +#define GIT_IDXENTRY_EXTENDED_FLAGS (GIT_IDXENTRY_INTENT_TO_ADD | GIT_IDXENTRY_SKIP_WORKTREE) + +/* + * Safeguard to avoid saving wrong flags: + * - GIT_IDXENTRY_EXTENDED2 won't get saved until its semantic is known + * - Bits in 0x0000FFFF have been saved in flags already + * - Bits in 0x003F0000 are currently in-memory flags + */ +#if GIT_IDXENTRY_EXTENDED_FLAGS & 0x803FFFFF +#error "GIT_IDXENTRY_EXTENDED_FLAGS out of range" +#endif + /** Time used in a git index entry */ typedef struct { git_time_t seconds;