summaryrefslogtreecommitdiff
path: root/include/git2/index.h
diff options
context:
space:
mode:
authorJakob Pfender <jpfender@elegosoft.com>2011-04-04 16:20:09 +0200
committerVicent Marti <tanoku@gmail.com>2011-04-08 03:33:50 +0300
commit26f2c897b86613ed17d2bc9a35077517f57b234e (patch)
tree88e19d2da65abb48404ab93cff0684c5d6d718f4 /include/git2/index.h
parent5924b2822cf0d7edad3f68573950d139dfcaaf06 (diff)
downloadlibgit2-26f2c897b86613ed17d2bc9a35077517f57b234e.tar.gz
index.h: Add IDXENTRY flags needed for index operations
Add several IDXENTRY flags that need to be checked in order to properly implement update-index --refresh.
Diffstat (limited to 'include/git2/index.h')
-rw-r--r--include/git2/index.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/include/git2/index.h b/include/git2/index.h
index 599512f8..8a84f507 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;