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_FORCE = (1u << 1), 15 GIT_CHECKOUT_RECREATE_MISSING = (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_DONT_OVERWRITE_IGNORED = (1u << 19), 28 GIT_CHECKOUT_CONFLICT_STYLE_MERGE = (1u << 20), 29 GIT_CHECKOUT_CONFLICT_STYLE_DIFF3 = (1u << 21), 30 GIT_CHECKOUT_DONT_REMOVE_EXISTING = (1u << 22), 31 GIT_CHECKOUT_DONT_WRITE_INDEX = (1u << 23), 32 GIT_CHECKOUT_UPDATE_SUBMODULES = (1u << 16), 33 GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED = (1u << 17), 34 } 35 mixin _ExportEnumMembers!git_checkout_strategy_t; 36 37 enum git_checkout_notify_t { 38 GIT_CHECKOUT_NOTIFY_NONE = 0, 39 GIT_CHECKOUT_NOTIFY_CONFLICT = (1u << 0), 40 GIT_CHECKOUT_NOTIFY_DIRTY = (1u << 1), 41 GIT_CHECKOUT_NOTIFY_UPDATED = (1u << 2), 42 GIT_CHECKOUT_NOTIFY_UNTRACKED = (1u << 3), 43 GIT_CHECKOUT_NOTIFY_IGNORED = (1u << 4), 44 45 GIT_CHECKOUT_NOTIFY_ALL = 0x0FFFFu 46 } 47 mixin _ExportEnumMembers!git_checkout_notify_t; 48 49 struct git_checkout_perfdata { 50 size_t mkdir_calls; 51 size_t stat_calls; 52 size_t chmod_calls; 53 } 54 55 alias git_checkout_notify_cb = int function( 56 git_checkout_notify_t why, 57 const(char)* path, 58 const(git_diff_file)* baseline, 59 const(git_diff_file)* target, 60 const(git_diff_file)* workdir, 61 void *payload); 62 63 alias git_checkout_perfdata_cb = void function( 64 const(git_checkout_perfdata)* perfdata, 65 void *payload 66 ); 67 68 alias git_checkout_progress_cb = void function( 69 const(char)* path, 70 size_t completed_steps, 71 size_t total_steps, 72 void *payload); 73 74 struct git_checkout_options { 75 uint version_ = GIT_CHECKOUT_OPTIONS_VERSION; 76 77 uint checkout_strategy; 78 79 int disable_filters; 80 uint dir_mode; 81 uint file_mode; 82 int file_open_flags; 83 uint notify_flags; 84 git_checkout_notify_cb notify_cb; 85 void *notify_payload; 86 git_checkout_progress_cb progress_cb; 87 void *progress_payload; 88 git_strarray paths; 89 git_tree *baseline; 90 git_index *baseline_index; 91 92 const(char)* target_directory; 93 94 const(char)* ancestor_label; 95 const(char)* our_label; 96 const(char)* their_label; 97 98 git_checkout_perfdata_cb perfdata_cb; 99 void *perfdata_payload; 100 } 101 102 enum GIT_CHECKOUT_OPTIONS_VERSION = 1; 103 enum git_checkout_options GIT_CHECKOUT_OPTIONS_INIT = { GIT_CHECKOUT_OPTIONS_VERSION }; 104 105 int git_checkout_init_options( 106 git_checkout_options *opts, 107 uint version_); 108 int git_checkout_head( 109 git_repository *repo, 110 const(git_checkout_options)* opts); 111 int git_checkout_index( 112 git_repository *repo, 113 git_index *index, 114 const(git_checkout_options)* opts); 115 int git_checkout_tree( 116 git_repository *repo, 117 const(git_object)* treeish, 118 const(git_checkout_options)* opts);