1 module git2.index; 2 3 import git2.common; 4 import git2.indexer; 5 import git2.oid; 6 import git2.strarray; 7 import git2.util; 8 import git2.types; 9 10 extern (C): 11 12 struct git_index_time { 13 git_time_t seconds; 14 uint nanoseconds; 15 } 16 17 struct git_index_entry { 18 git_index_time ctime; 19 git_index_time mtime; 20 21 uint dev; 22 uint ino; 23 uint mode; 24 uint uid; 25 uint gid; 26 git_off_t file_size; 27 28 git_oid oid; 29 30 ushort flags; 31 ushort flags_extended; 32 33 char *path; 34 } 35 36 enum GIT_IDXENTRY_NAMEMASK = (0x0fff); 37 enum GIT_IDXENTRY_STAGEMASK = (0x3000); 38 enum GIT_IDXENTRY_EXTENDED = (0x4000); 39 enum GIT_IDXENTRY_VALID = (0x8000); 40 enum GIT_IDXENTRY_STAGESHIFT = 12; 41 42 auto GIT_IDXENTRY_STAGE(T)(T E) { return (((E).flags & GIT_IDXENTRY_STAGEMASK) >> GIT_IDXENTRY_STAGESHIFT); } 43 44 enum GIT_IDXENTRY_INTENT_TO_ADD = (1 << 13); 45 enum GIT_IDXENTRY_SKIP_WORKTREE = (1 << 14); 46 enum GIT_IDXENTRY_EXTENDED2 = (1 << 15); 47 enum GIT_IDXENTRY_EXTENDED_FLAGS = (GIT_IDXENTRY_INTENT_TO_ADD | GIT_IDXENTRY_SKIP_WORKTREE); 48 49 enum GIT_IDXENTRY_UPDATE = (1 << 0); 50 enum GIT_IDXENTRY_REMOVE = (1 << 1); 51 enum GIT_IDXENTRY_UPTODATE = (1 << 2); 52 enum GIT_IDXENTRY_ADDED = (1 << 3); 53 54 enum GIT_IDXENTRY_HASHED = (1 << 4); 55 enum GIT_IDXENTRY_UNHASHED = (1 << 5); 56 enum GIT_IDXENTRY_WT_REMOVE = (1 << 6); 57 enum GIT_IDXENTRY_CONFLICTED = (1 << 7); 58 59 enum GIT_IDXENTRY_UNPACKED = (1 << 8); 60 enum GIT_IDXENTRY_NEW_SKIP_WORKTREE = (1 << 9); 61 62 enum git_indexcap_t { 63 GIT_INDEXCAP_IGNORE_CASE = 1, 64 GIT_INDEXCAP_NO_FILEMODE = 2, 65 GIT_INDEXCAP_NO_SYMLINKS = 4, 66 GIT_INDEXCAP_FROM_OWNER = ~0u 67 } 68 mixin _ExportEnumMembers!git_indexcap_t; 69 70 alias git_index_matched_path_cb = int function( 71 const(char)* path, const(char)* matched_pathspec, void *payload); 72 73 enum git_index_add_option_t { 74 GIT_INDEX_ADD_DEFAULT = 0, 75 GIT_INDEX_ADD_FORCE = (1u << 0), 76 GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH = (1u << 1), 77 GIT_INDEX_ADD_CHECK_PATHSPEC = (1u << 2), 78 } 79 mixin _ExportEnumMembers!git_index_add_option_t; 80 81 int git_index_open(git_index **out_, const(char)* index_path); 82 int git_index_new(git_index **out_); 83 void git_index_free(git_index *index); 84 git_repository * git_index_owner(const(git_index)* index); 85 uint git_index_caps(const(git_index)* index); 86 int git_index_set_caps(git_index *index, uint caps); 87 int git_index_read(git_index *index); 88 int git_index_write(git_index *index); 89 int git_index_read_tree(git_index *index, const(git_tree)* tree); 90 int git_index_write_tree(git_oid *out_, git_index *index); 91 int git_index_write_tree_to(git_oid *out_, git_index *index, git_repository *repo); 92 size_t git_index_entrycount(const(git_index)* index); 93 void git_index_clear(git_index *index); 94 const(git_index_entry)* git_index_get_byindex( 95 git_index *index, size_t n); 96 const(git_index_entry)* git_index_get_bypath( 97 git_index *index, const(char)* path, int stage); 98 int git_index_remove(git_index *index, const(char)* path, int stage); 99 int git_index_remove_directory( 100 git_index *index, const(char)* dir, int stage); 101 int git_index_add(git_index *index, const(git_index_entry)* source_entry); 102 int git_index_entry_stage(const(git_index_entry)* entry); 103 int git_index_add_bypath(git_index *index, const(char)* path); 104 int git_index_remove_bypath(git_index *index, const(char)* path); 105 int git_index_add_all( 106 git_index *index, 107 const(git_strarray)* pathspec, 108 uint flags, 109 git_index_matched_path_cb callback, 110 void *payload); 111 int git_index_remove_all( 112 git_index *index, 113 const(git_strarray)* pathspec, 114 git_index_matched_path_cb callback, 115 void *payload); 116 int git_index_update_all( 117 git_index *index, 118 const(git_strarray)* pathspec, 119 git_index_matched_path_cb callback, 120 void *payload); 121 int git_index_find(size_t *at_pos, git_index *index, const(char)* path); 122 int git_index_conflict_add( 123 git_index *index, 124 const(git_index_entry)* ancestor_entry, 125 const(git_index_entry)* our_entry, 126 const(git_index_entry)* their_entry); 127 int git_index_conflict_get( 128 const(git_index_entry)** ancestor_out, 129 const(git_index_entry)** our_out, 130 const(git_index_entry)** their_out, 131 git_index *index, 132 const(char)* path); 133 int git_index_conflict_remove(git_index *index, const(char)* path); 134 void git_index_conflict_cleanup(git_index *index); 135 int git_index_has_conflicts(const(git_index)* index); 136 int git_index_conflict_iterator_new( 137 git_index_conflict_iterator **iterator_out, 138 git_index *index); 139 int git_index_conflict_next( 140 const(git_index_entry)** ancestor_out, 141 const(git_index_entry)** our_out, 142 const(git_index_entry)** their_out, 143 git_index_conflict_iterator *iterator); 144 void git_index_conflict_iterator_free( 145 git_index_conflict_iterator *iterator);