]> git.proxmox.com Git - libgit2.git/blob - include/git2/refdb.h
Merge pull request #1485 from libgit2/include-git2-sys
[libgit2.git] / include / git2 / refdb.h
1 /*
2 * Copyright (C) the libgit2 contributors. All rights reserved.
3 *
4 * This file is part of libgit2, distributed under the GNU GPL v2 with
5 * a Linking Exception. For full terms see the included COPYING file.
6 */
7 #ifndef INCLUDE_git_refdb_h__
8 #define INCLUDE_git_refdb_h__
9
10 #include "common.h"
11 #include "types.h"
12 #include "oid.h"
13 #include "refs.h"
14
15 /**
16 * @file git2/refdb.h
17 * @brief Git custom refs backend functions
18 * @defgroup git_refdb Git custom refs backend API
19 * @ingroup Git
20 * @{
21 */
22 GIT_BEGIN_DECL
23
24 /**
25 * Create a new reference database with no backends.
26 *
27 * Before the Ref DB can be used for read/writing, a custom database
28 * backend must be manually set using `git_refdb_set_backend()`
29 *
30 * @param out location to store the database pointer, if opened.
31 * Set to NULL if the open failed.
32 * @param repo the repository
33 * @return 0 or an error code
34 */
35 GIT_EXTERN(int) git_refdb_new(git_refdb **out, git_repository *repo);
36
37 /**
38 * Create a new reference database and automatically add
39 * the default backends:
40 *
41 * - git_refdb_dir: read and write loose and packed refs
42 * from disk, assuming the repository dir as the folder
43 *
44 * @param out location to store the database pointer, if opened.
45 * Set to NULL if the open failed.
46 * @param repo the repository
47 * @return 0 or an error code
48 */
49 GIT_EXTERN(int) git_refdb_open(git_refdb **out, git_repository *repo);
50
51 /**
52 * Suggests that the given refdb compress or optimize its references.
53 * This mechanism is implementation specific. For on-disk reference
54 * databases, for example, this may pack all loose references.
55 */
56 GIT_EXTERN(int) git_refdb_compress(git_refdb *refdb);
57
58 /**
59 * Close an open reference database.
60 *
61 * @param refdb reference database pointer or NULL
62 */
63 GIT_EXTERN(void) git_refdb_free(git_refdb *refdb);
64
65 /** @} */
66 GIT_END_DECL
67
68 #endif