diff options
author | Michael Schubert <schu@schu.io> | 2012-08-19 22:26:32 +0200 |
---|---|---|
committer | Michael Schubert <schu@schu.io> | 2012-10-09 21:28:31 +0200 |
commit | 0a32dca5ecbd4c56b02ba78af4174ac7f65a786c (patch) | |
tree | 733f2d3113d96524c1e4c05d7e98c03baf07614f /include | |
parent | ec1d42b7d5eb5a25b504277bee5b0cc97931e1a7 (diff) | |
download | libgit2-0a32dca5ecbd4c56b02ba78af4174ac7f65a786c.tar.gz |
gsoc-pack-objects WIP
Diffstat (limited to 'include')
-rw-r--r-- | include/git2.h | 1 | ||||
-rw-r--r-- | include/git2/errors.h | 1 | ||||
-rw-r--r-- | include/git2/pack.h | 89 | ||||
-rw-r--r-- | include/git2/types.h | 3 |
4 files changed, 94 insertions, 0 deletions
diff --git a/include/git2.h b/include/git2.h index 805044abb..d55543986 100644 --- a/include/git2.h +++ b/include/git2.h @@ -51,5 +51,6 @@ #include "git2/notes.h" #include "git2/reset.h" #include "git2/message.h" +#include "git2/pack.h" #endif diff --git a/include/git2/errors.h b/include/git2/errors.h index f6d9bf2e3..1c4e910a6 100644 --- a/include/git2/errors.h +++ b/include/git2/errors.h @@ -56,6 +56,7 @@ typedef enum { GITERR_INDEXER, GITERR_SSL, GITERR_SUBMODULE, + GITERR_THREAD, } git_error_t; /** diff --git a/include/git2/pack.h b/include/git2/pack.h new file mode 100644 index 000000000..748ad2e11 --- /dev/null +++ b/include/git2/pack.h @@ -0,0 +1,89 @@ +/* + * Copyright (C) 2009-2012 the libgit2 contributors + * + * This file is part of libgit2, distributed under the GNU GPL v2 with + * a Linking Exception. For full terms see the included COPYING file. + */ +#ifndef INCLUDE_git_pack_h__ +#define INCLUDE_git_pack_h__ + +#include "common.h" +#include "oid.h" + +/** + * @file git2/pack.h + * @brief Git pack management routines + * @defgroup git_pack Git pack management routines + * @ingroup Git + * @{ + */ +GIT_BEGIN_DECL + +/** + * Initialize a new packbuilder + * + * @param out The new packbuilder object + * @param repo The repository + * + * @return 0 or an error code + */ +GIT_EXTERN(int) git_packbuilder_new(git_packbuilder **out, git_repository *repo); + +/** + * Set number of threads to spawn + * + * By default, libgit2 won't spawn any threads at all; + * when set to 0, libgit2 will autodetect the number of + * CPUs. + * + * @param pb The packbuilder + * @param n Number of threads to spawn + */ +GIT_EXTERN(void) git_packbuilder_set_threads(git_packbuilder *pb, unsigned int n); + +/** + * Insert a single object + * + * For an optimal pack it's mandatory to insert objects in recency order, + * commits followed by trees and blobs. + * + * @param pb The packbuilder + * @param oid The oid of the commit + * @param oid The name; might be NULL + * + * @return 0 or an error code + */ +GIT_EXTERN(int) git_packbuilder_insert(git_packbuilder *pb, const git_oid *oid, const char *name); + +/** + * Insert a root tree object + * + * This will add the tree as well as all referenced trees and blobs. + * + * @param pb The packbuilder + * @param oid The oid of the root tree + * + * @return 0 or an error code + */ +GIT_EXTERN(int) git_packbuilder_insert_tree(git_packbuilder *pb, const git_oid *oid); + +/** + * Write the new pack and the corresponding index to path + * + * @param pb The packbuilder + * @param path Directory to store the new pack and index + * + * @return 0 or an error code + */ +GIT_EXTERN(int) git_packbuilder_write(git_packbuilder *pb, const char *file); + +/** + * Free the packbuilder and all associated data + * + * @param pb The packbuilder + */ +GIT_EXTERN(void) git_packbuilder_free(git_packbuilder *pb); + +/** @} */ +GIT_END_DECL +#endif diff --git a/include/git2/types.h b/include/git2/types.h index 26e9c57e7..01ddbf3d6 100644 --- a/include/git2/types.h +++ b/include/git2/types.h @@ -137,6 +137,9 @@ typedef struct git_reflog git_reflog; /** Representation of a git note */ typedef struct git_note git_note; +/** Representation of a git packbuilder */ +typedef struct git_packbuilder git_packbuilder; + /** Time in a signature */ typedef struct git_time { git_time_t time; /** time in seconds from epoch */ |