mirror of
https://git.proxmox.com/git/libgit2
synced 2026-01-06 20:56:40 +00:00
indexer: add git_indexer_stream_free() and _hash()
This commit is contained in:
parent
907ebe8556
commit
1c9c081a6a
@ -52,6 +52,23 @@ GIT_EXTERN(int) git_indexer_stream_add(git_indexer_stream *idx, void *data, size
|
||||
*/
|
||||
GIT_EXTERN(int) git_indexer_stream_finalize(git_indexer_stream *idx, git_indexer_stats *stats);
|
||||
|
||||
/**
|
||||
* 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 finalized.
|
||||
*
|
||||
* @param idx the indexer instance
|
||||
*/
|
||||
GIT_EXTERN(const git_oid *) git_indexer_stream_hash(git_indexer_stream *idx);
|
||||
|
||||
/**
|
||||
* Free the indexer and its resources
|
||||
*
|
||||
* @param idx the indexer to free
|
||||
*/
|
||||
GIT_EXTERN(void) git_indexer_stream_free(git_indexer_stream *idx);
|
||||
|
||||
/**
|
||||
* Create a new indexer instance
|
||||
*
|
||||
|
||||
@ -60,6 +60,11 @@ const git_oid *git_indexer_hash(git_indexer *idx)
|
||||
return &idx->hash;
|
||||
}
|
||||
|
||||
const git_oid *git_indexer_stream_hash(git_indexer_stream *idx)
|
||||
{
|
||||
return &idx->hash;
|
||||
}
|
||||
|
||||
static int open_pack(struct git_pack_file **out, const char *filename)
|
||||
{
|
||||
size_t namelen;
|
||||
@ -544,6 +549,30 @@ on_error:
|
||||
return -1;
|
||||
}
|
||||
|
||||
void git_indexer_stream_free(git_indexer_stream *idx)
|
||||
{
|
||||
unsigned int i;
|
||||
struct entry *e;
|
||||
struct git_pack_entry *pe;
|
||||
struct delta_info *delta;
|
||||
|
||||
if (idx == NULL)
|
||||
return;
|
||||
|
||||
p_close(idx->pack->mwf.fd);
|
||||
git_vector_foreach(&idx->objects, i, e)
|
||||
git__free(e);
|
||||
git_vector_free(&idx->objects);
|
||||
git_vector_foreach(&idx->pack->cache, i, pe)
|
||||
git__free(pe);
|
||||
git_vector_free(&idx->pack->cache);
|
||||
git_vector_foreach(&idx->deltas, i, delta)
|
||||
git__free(delta);
|
||||
git_vector_free(&idx->deltas);
|
||||
git__free(idx->pack);
|
||||
git__free(idx);
|
||||
}
|
||||
|
||||
int git_indexer_new(git_indexer **out, const char *packname)
|
||||
{
|
||||
git_indexer *idx;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user