1 module deimos.git2.repository; 2 3 import std.conv; 4 5 import deimos.git2.buffer; 6 import deimos.git2.common; 7 import deimos.git2.buffer; 8 import deimos.git2.oid; 9 import deimos.git2.util; 10 import deimos.git2.types; 11 12 extern (C): 13 14 int git_repository_open(git_repository **out_, const(char)* path); 15 int git_repository_wrap_odb(git_repository **out_, git_odb *odb); 16 int git_repository_discover( 17 git_buf* out_, 18 const(char)* start_path, 19 int across_fs, 20 const(char)* ceiling_dirs); 21 22 enum git_repository_open_flag_t { 23 GIT_REPOSITORY_OPEN_NO_SEARCH = (1 << 0), 24 GIT_REPOSITORY_OPEN_CROSS_FS = (1 << 1), 25 GIT_REPOSITORY_OPEN_BARE = (1 << 2), 26 GIT_REPOSITORY_OPEN_NO_DOTGIT = (1 << 3), 27 GIT_REPOSITORY_OPEN_FROM_ENV = (1 << 4), 28 } 29 mixin _ExportEnumMembers!git_repository_open_flag_t; 30 31 int git_repository_open_ext( 32 git_repository **out_, 33 const(char)* path, 34 uint flags, 35 const(char)* ceiling_dirs); 36 int git_repository_open_bare(git_repository **out_, const(char)* bare_path); 37 void git_repository_free(git_repository *repo); 38 int git_repository_init( 39 git_repository **out_, 40 const(char)* path, 41 uint is_bare); 42 43 enum git_repository_init_flag_t { 44 GIT_REPOSITORY_INIT_BARE = (1u << 0), 45 GIT_REPOSITORY_INIT_NO_REINIT = (1u << 1), 46 GIT_REPOSITORY_INIT_NO_DOTGIT_DIR = (1u << 2), 47 GIT_REPOSITORY_INIT_MKDIR = (1u << 3), 48 GIT_REPOSITORY_INIT_MKPATH = (1u << 4), 49 GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE = (1u << 5), 50 GIT_REPOSITORY_INIT_RELATIVE_GITLINK = (1u << 6), 51 } 52 mixin _ExportEnumMembers!git_repository_init_flag_t; 53 54 enum git_repository_init_mode_t { 55 GIT_REPOSITORY_INIT_SHARED_UMASK = octal!0, 56 GIT_REPOSITORY_INIT_SHARED_GROUP = octal!2775, 57 GIT_REPOSITORY_INIT_SHARED_ALL = octal!2777, 58 } 59 mixin _ExportEnumMembers!git_repository_init_mode_t; 60 61 struct git_repository_init_options { 62 uint version_ = GIT_REPOSITORY_INIT_OPTIONS_VERSION; 63 uint32_t flags; 64 uint32_t mode; 65 const(char)* workdir_path; 66 const(char)* description; 67 const(char)* template_path; 68 const(char)* initial_head; 69 const(char)* origin_url; 70 } 71 72 enum GIT_REPOSITORY_INIT_OPTIONS_VERSION = 1; 73 enum git_repository_init_options GIT_REPOSITORY_INIT_OPTIONS_INIT = { GIT_REPOSITORY_INIT_OPTIONS_VERSION }; 74 75 int git_repository_init_init_options( 76 git_repository_init_options* opts, 77 uint version_); 78 int git_repository_init_ext( 79 git_repository **out_, 80 const(char)* repo_path, 81 git_repository_init_options *opts); 82 int git_repository_head(git_reference **out_, git_repository *repo); 83 int git_repository_head_detached(git_repository *repo); 84 int git_repository_head_unborn(git_repository *repo); 85 int git_repository_is_empty(git_repository *repo); 86 const(char)* git_repository_path(git_repository *repo); 87 const(char)* git_repository_workdir(git_repository *repo); 88 int git_repository_set_workdir( 89 git_repository *repo, const(char)* workdir, int update_gitlink); 90 int git_repository_is_bare(git_repository *repo); 91 int git_repository_config(git_config **out_, git_repository *repo); 92 int git_repository_config_snapshot(git_config **out_, git_repository *repo); 93 int git_repository_odb(git_odb **out_, git_repository *repo); 94 int git_repository_refdb(git_refdb **out_, git_repository *repo); 95 int git_repository_index(git_index **out_, git_repository *repo); 96 int git_repository_message(git_buf* out_, git_repository *repo); 97 int git_repository_message_remove(git_repository *repo); 98 int git_repository_state_cleanup(git_repository *repo); 99 100 alias git_repository_fetchhead_foreach_cb = int function(const(char)* ref_name, 101 const(char)* remote_url, 102 const(git_oid)* oid, 103 uint is_merge, 104 void *payload); 105 106 int git_repository_fetchhead_foreach( 107 git_repository *repo, 108 git_repository_fetchhead_foreach_cb callback, 109 void *payload); 110 111 alias git_repository_mergehead_foreach_cb = int function(const(git_oid)* oid, 112 void *payload); 113 114 int git_repository_mergehead_foreach( 115 git_repository *repo, 116 git_repository_mergehead_foreach_cb callback, 117 void *payload); 118 int git_repository_hashfile( 119 git_oid *out_, 120 git_repository *repo, 121 const(char)* path, 122 git_otype type, 123 const(char)* as_path); 124 int git_repository_set_head( 125 git_repository* repo, 126 const(char)* refname); 127 int git_repository_set_head_detached( 128 git_repository* repo, 129 const(git_oid)* commitish); 130 int git_repository_detach_head( 131 git_repository* repo); 132 133 enum git_repository_state_t { 134 GIT_REPOSITORY_STATE_NONE, 135 GIT_REPOSITORY_STATE_MERGE, 136 GIT_REPOSITORY_STATE_REVERT, 137 GIT_REPOSITORY_STATE_REVERT_SEQUENCE, 138 GIT_REPOSITORY_STATE_CHERRYPICK, 139 GIT_REPOSITORY_STATE_CHERRYPICK_SEQUENCE, 140 GIT_REPOSITORY_STATE_BISECT, 141 GIT_REPOSITORY_STATE_REBASE, 142 GIT_REPOSITORY_STATE_REBASE_INTERACTIVE, 143 GIT_REPOSITORY_STATE_REBASE_MERGE, 144 GIT_REPOSITORY_STATE_APPLY_MAILBOX, 145 GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE, 146 } 147 mixin _ExportEnumMembers!git_repository_state_t; 148 149 int git_repository_state(git_repository *repo); 150 int git_repository_set_namespace(git_repository *repo, const(char)* nmspace); 151 const(char)* git_repository_get_namespace(git_repository *repo); 152 int git_repository_is_shallow(git_repository *repo); 153 int git_repository_ident(const(char) **name, const(char) **email, const(git_repository)* repo); 154 int git_repository_set_ident(git_repository* repo, const(char)* name, const(char)* email);