1 module git2.status; 2 3 import git2.common; 4 import git2.diff; 5 import git2.strarray; 6 import git2.util; 7 import git2.types; 8 9 extern (C): 10 11 enum git_status_t { 12 GIT_STATUS_CURRENT = 0, 13 14 GIT_STATUS_INDEX_NEW = (1u << 0), 15 GIT_STATUS_INDEX_MODIFIED = (1u << 1), 16 GIT_STATUS_INDEX_DELETED = (1u << 2), 17 GIT_STATUS_INDEX_RENAMED = (1u << 3), 18 GIT_STATUS_INDEX_TYPECHANGE = (1u << 4), 19 20 GIT_STATUS_WT_NEW = (1u << 7), 21 GIT_STATUS_WT_MODIFIED = (1u << 8), 22 GIT_STATUS_WT_DELETED = (1u << 9), 23 GIT_STATUS_WT_TYPECHANGE = (1u << 10), 24 GIT_STATUS_WT_RENAMED = (1u << 11), 25 26 GIT_STATUS_IGNORED = (1u << 14), 27 } 28 mixin _ExportEnumMembers!git_status_t; 29 30 alias git_status_cb = int function( 31 const(char)* path, uint status_flags, void *payload); 32 33 enum git_status_show_t { 34 GIT_STATUS_SHOW_INDEX_AND_WORKDIR = 0, 35 GIT_STATUS_SHOW_INDEX_ONLY = 1, 36 GIT_STATUS_SHOW_WORKDIR_ONLY = 2, 37 GIT_STATUS_SHOW_INDEX_THEN_WORKDIR = 3, 38 } 39 mixin _ExportEnumMembers!git_status_show_t; 40 41 enum git_status_opt_t { 42 GIT_STATUS_OPT_INCLUDE_UNTRACKED = (1u << 0), 43 GIT_STATUS_OPT_INCLUDE_IGNORED = (1u << 1), 44 GIT_STATUS_OPT_INCLUDE_UNMODIFIED = (1u << 2), 45 GIT_STATUS_OPT_EXCLUDE_SUBMODULES = (1u << 3), 46 GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS = (1u << 4), 47 GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH = (1u << 5), 48 GIT_STATUS_OPT_RECURSE_IGNORED_DIRS = (1u << 6), 49 GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX = (1u << 7), 50 GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR = (1u << 8), 51 GIT_STATUS_OPT_SORT_CASE_SENSITIVELY = (1u << 9), 52 GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY = (1u << 10), 53 } 54 mixin _ExportEnumMembers!git_status_opt_t; 55 56 enum GIT_STATUS_OPT_DEFAULTS = 57 (git_status_opt_t.GIT_STATUS_OPT_INCLUDE_IGNORED | 58 git_status_opt_t.GIT_STATUS_OPT_INCLUDE_UNTRACKED | 59 git_status_opt_t.GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS); 60 61 struct git_status_options { 62 uint version_; 63 git_status_show_t show; 64 uint flags; 65 git_strarray pathspec; 66 } 67 68 enum GIT_STATUS_OPTIONS_VERSION = 1; 69 enum git_status_options GIT_STATUS_OPTIONS_INIT = { GIT_STATUS_OPTIONS_VERSION }; 70 71 struct git_status_entry { 72 git_status_t status; 73 git_diff_delta *head_to_index; 74 git_diff_delta *index_to_workdir; 75 } 76 77 int git_status_foreach( 78 git_repository *repo, 79 git_status_cb callback, 80 void *payload); 81 int git_status_foreach_ext( 82 git_repository *repo, 83 const(git_status_options)* opts, 84 git_status_cb callback, 85 void *payload); 86 int git_status_file( 87 uint *status_flags, 88 git_repository *repo, 89 const(char)* path); 90 int git_status_list_new( 91 git_status_list **out_, 92 git_repository *repo, 93 const(git_status_options)* opts); 94 size_t git_status_list_entrycount( 95 git_status_list *statuslist); 96 const(git_status_entry)* git_status_byindex( 97 git_status_list *statuslist, 98 size_t idx); 99 void git_status_list_free( 100 git_status_list *statuslist); 101 int git_status_should_ignore( 102 int *ignored, 103 git_repository *repo, 104 const(char)* path);