1 module deimos.git2.checkout; 2 3 import deimos.git2.common; 4 import deimos.git2.diff; 5 import deimos.git2.strarray; 6 import deimos.git2.types; 7 import deimos.git2.util; 8 9 extern (C): 10 11 enum git_checkout_strategy_t { 12 GIT_CHECKOUT_NONE = 0, 13 GIT_CHECKOUT_SAFE = (1u << 0), 14 GIT_CHECKOUT_SAFE_CREATE = (1u << 1), 15 GIT_CHECKOUT_FORCE = (1u << 2), 16 GIT_CHECKOUT_ALLOW_CONFLICTS = (1u << 4), 17 GIT_CHECKOUT_REMOVE_UNTRACKED = (1u << 5), 18 GIT_CHECKOUT_REMOVE_IGNORED = (1u << 6), 19 GIT_CHECKOUT_UPDATE_ONLY = (1u << 7), 20 GIT_CHECKOUT_DONT_UPDATE_INDEX = (1u << 8), 21 GIT_CHECKOUT_NO_REFRESH = (1u << 9), 22 GIT_CHECKOUT_SKIP_UNMERGED = (1u << 10), 23 GIT_CHECKOUT_USE_OURS = (1u << 11), 24 GIT_CHECKOUT_USE_THEIRS = (1u << 12), 25 GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH = (1u << 13), 26 GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES = (1u << 18), 27 GIT_CHECKOUT_UPDATE_SUBMODULES = (1u << 16), 28 GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED = (1u << 17), 29 } 30 mixin _ExportEnumMembers!git_checkout_strategy_t; 31 32 enum git_checkout_notify_t { 33 GIT_CHECKOUT_NOTIFY_NONE = 0, 34 GIT_CHECKOUT_NOTIFY_CONFLICT = (1u << 0), 35 GIT_CHECKOUT_NOTIFY_DIRTY = (1u << 1), 36 GIT_CHECKOUT_NOTIFY_UPDATED = (1u << 2), 37 GIT_CHECKOUT_NOTIFY_UNTRACKED = (1u << 3), 38 GIT_CHECKOUT_NOTIFY_IGNORED = (1u << 4), 39 40 GIT_CHECKOUT_NOTIFY_ALL = 0x0FFFFu 41 } 42 mixin _ExportEnumMembers!git_checkout_notify_t; 43 44 alias git_checkout_notify_cb = int function( 45 git_checkout_notify_t why, 46 const(char)* path, 47 const(git_diff_file)* baseline, 48 const(git_diff_file)* target, 49 const(git_diff_file)* workdir, 50 void *payload); 51 52 alias git_checkout_progress_cb = void function( 53 const(char)* path, 54 size_t completed_steps, 55 size_t total_steps, 56 void *payload); 57 58 struct git_checkout_opts { 59 uint version_ = GIT_CHECKOUT_OPTS_VERSION; 60 61 uint checkout_strategy; 62 63 int disable_filters; 64 uint dir_mode; 65 uint file_mode; 66 int file_open_flags; 67 uint notify_flags; 68 git_checkout_notify_cb notify_cb; 69 void *notify_payload; 70 git_checkout_progress_cb progress_cb; 71 void *progress_payload; 72 git_strarray paths; 73 git_tree *baseline; 74 const(char)* target_directory; 75 const(char)* our_label; 76 const(char)* their_label; 77 } 78 79 enum GIT_CHECKOUT_OPTS_VERSION = 1; 80 enum git_checkout_opts GIT_CHECKOUT_OPTS_INIT = { GIT_CHECKOUT_OPTS_VERSION }; 81 82 int git_checkout_head( 83 git_repository *repo, 84 const(git_checkout_opts)* opts); 85 int git_checkout_index( 86 git_repository *repo, 87 git_index *index, 88 const(git_checkout_opts)* opts); 89 int git_checkout_tree( 90 git_repository *repo, 91 const(git_object)* treeish, 92 const(git_checkout_opts)* opts);