mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-04 12:14:50 +00:00

This create a new git_iterator type of object that provides a uniform interface for iterating over the index, an arbitrary tree, or the working directory of a repository. As part of this, git ignore support was extended to support push and pop of directory-based ignore files as the working directory is being traversed (so the array of ignores does not have to be recreated at each directory during traveral). There are a number of other small utility functions in buffer, path, vector, and fileops that are included in this patch that made the iterator implementation cleaner.
23 lines
577 B
C
23 lines
577 B
C
#include "clar_libgit2.h"
|
|
#include "diff_helpers.h"
|
|
|
|
git_tree *resolve_commit_oid_to_tree(
|
|
git_repository *repo,
|
|
const char *partial_oid)
|
|
{
|
|
size_t len = strlen(partial_oid);
|
|
git_oid oid;
|
|
git_object *obj;
|
|
git_tree *tree;
|
|
|
|
if (git_oid_fromstrn(&oid, partial_oid, len) == 0)
|
|
git_object_lookup_prefix(&obj, repo, &oid, len, GIT_OBJ_ANY);
|
|
cl_assert(obj);
|
|
if (git_object_type(obj) == GIT_OBJ_TREE)
|
|
return (git_tree *)obj;
|
|
cl_assert(git_object_type(obj) == GIT_OBJ_COMMIT);
|
|
cl_git_pass(git_commit_tree(&tree, (git_commit *)obj));
|
|
git_object_free(obj);
|
|
return tree;
|
|
}
|