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