Document the indexer calls Signed-off-by: Carlos Martín Nieto <carlos@cmartin.tk>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
diff --git a/include/git2/indexer.h b/include/git2/indexer.h
index 9273efc..6c31956 100644
--- a/include/git2/indexer.h
+++ b/include/git2/indexer.h
@@ -4,6 +4,10 @@
#include "git2/common.h"
#include "git2/oid.h"
+/**
+ * This is passed as the first argument to the callback to allow the
+ * user to see the progress.
+ */
typedef struct git_indexer_stats {
unsigned int total;
unsigned int processed;
@@ -12,10 +16,51 @@ typedef struct git_indexer_stats {
typedef struct git_indexer git_indexer;
+/**
+ * Create a new indexer instance
+ *
+ * @param out where to store the indexer instance
+ * @param packname the absolute filename of the packfile to index
+ */
GIT_EXTERN(int) git_indexer_new(git_indexer **out, const char *packname);
+
+/**
+ * Iterate over the objects in the packfile and extract the information
+ *
+ * Indexing a packfile can be very expensive so this function is
+ * expected to be run in a worker thread and the stats used to provide
+ * feedback the user.
+ *
+ * @param idx the indexer instance
+ * @param stats storage for the running state
+ */
GIT_EXTERN(int) git_indexer_run(git_indexer *idx, git_indexer_stats *stats);
-GIT_EXTERN(const git_oid *) git_indexer_result(git_indexer *idx);
+
+/**
+ * Write the index file to disk.
+ *
+ * The file will be stored as pack-$hash.idx in the same directory as
+ * the packfile.
+ *
+ * @param idx the indexer instance
+ */
GIT_EXTERN(int) git_indexer_write(git_indexer *idx);
+
+/**
+ * Get the packfile's hash
+ *
+ * A packfile's name is derived from the sorted hashing of all object
+ * names. This is only correct after the index has been written to disk.
+ *
+ * @param idx the indexer instance
+ */
+GIT_EXTERN(const git_oid *) git_indexer_hash(git_indexer *idx);
+
+/**
+ * Free the indexer and its resources
+ *
+ * @param idx the indexer to free
+ */
GIT_EXTERN(void) git_indexer_free(git_indexer *idx);