Make git_tree_clear_entries visible to the user

This commit is contained in:
John Wiegley 2011-01-28 02:41:59 -05:00
parent 75e051c682
commit 89f9fc6f4b
2 changed files with 15 additions and 3 deletions

View File

@ -204,6 +204,16 @@ GIT_EXTERN(int) git_tree_remove_entry_byindex(git_tree *tree, int idx);
*/ */
GIT_EXTERN(int) git_tree_remove_entry_byname(git_tree *tree, const char *filename); GIT_EXTERN(int) git_tree_remove_entry_byname(git_tree *tree, const char *filename);
/**
* Clear all the entries in a tree.
*
* This will mark the tree as modified; the modified entry will
* be written back to disk on the next git_object_write().
*
* @param tree Tree object whose entries are to be sorted
*/
GIT_EXTERN(void) git_tree_clear_entries(git_tree *tree);
/** /**
* Change the SHA1 id of a tree entry. * Change the SHA1 id of a tree entry.
* *

View File

@ -48,7 +48,7 @@ int entry_sort_cmp(const void *a, const void *b)
return strcmp(entry_a->filename, entry_b->filename); return strcmp(entry_a->filename, entry_b->filename);
} }
static void clear_entries(git_tree *tree) void git_tree_clear_entries(git_tree *tree)
{ {
unsigned int i; unsigned int i;
@ -64,6 +64,8 @@ static void clear_entries(git_tree *tree)
} }
git_vector_clear(&tree->entries); git_vector_clear(&tree->entries);
tree->object.modified = 1;
} }
@ -90,7 +92,7 @@ git_tree *git_tree__new(void)
void git_tree__free(git_tree *tree) void git_tree__free(git_tree *tree)
{ {
clear_entries(tree); git_tree_clear_entries(tree);
git_vector_free(&tree->entries); git_vector_free(&tree->entries);
free(tree); free(tree);
} }
@ -282,7 +284,7 @@ static int tree_parse_buffer(git_tree *tree, char *buffer, char *buffer_end)
expected_size = (tree->object.source.raw.len / avg_entry_size) + 1; expected_size = (tree->object.source.raw.len / avg_entry_size) + 1;
clear_entries(tree); git_tree_clear_entries(tree);
while (buffer < buffer_end) { while (buffer < buffer_end) {
git_tree_entry *entry; git_tree_entry *entry;