mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-29 13:52:17 +00:00
refs: add git_reference_has_log()
This commit is contained in:
parent
b6bfd96fdd
commit
75261421ec
@ -353,6 +353,16 @@ GIT_EXTERN(int) git_reference_foreach_glob(
|
||||
void *payload
|
||||
);
|
||||
|
||||
/**
|
||||
* Check if a reflog exists for the specified reference.
|
||||
*
|
||||
* @param ref A git reference
|
||||
*
|
||||
* @return 0 when no reflog can be found, 1 when it exists;
|
||||
* otherwise an error code.
|
||||
*/
|
||||
GIT_EXTERN(int) git_reference_has_log(git_reference *ref);
|
||||
|
||||
/** @} */
|
||||
GIT_END_DECL
|
||||
#endif
|
||||
|
17
src/refs.c
17
src/refs.c
@ -1802,3 +1802,20 @@ int git_reference_foreach_glob(
|
||||
return git_reference_foreach(
|
||||
repo, list_flags, fromglob_cb, &data);
|
||||
}
|
||||
|
||||
int git_reference_has_log(
|
||||
git_reference *ref)
|
||||
{
|
||||
git_buf path = GIT_BUF_INIT;
|
||||
int result;
|
||||
|
||||
assert(ref);
|
||||
|
||||
if (git_buf_join_n(&path, '/', 3, ref->owner->path_repository, GIT_REFLOG_DIR, ref->name) < 0)
|
||||
return -1;
|
||||
|
||||
result = git_path_isfile(git_buf_cstr(&path));
|
||||
git_buf_free(&path);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -145,3 +145,20 @@ void test_refs_reflog__renaming_the_reference_moves_the_reflog(void)
|
||||
git_buf_free(&moved_log_path);
|
||||
git_buf_free(&master_log_path);
|
||||
}
|
||||
static void assert_has_reflog(bool expected_result, const char *name)
|
||||
{
|
||||
git_reference *ref;
|
||||
|
||||
cl_git_pass(git_reference_lookup(&ref, g_repo, name));
|
||||
|
||||
cl_assert_equal_i(expected_result, git_reference_has_log(ref));
|
||||
|
||||
git_reference_free(ref);
|
||||
}
|
||||
|
||||
void test_refs_reflog__reference_has_reflog(void)
|
||||
{
|
||||
assert_has_reflog(true, "HEAD");
|
||||
assert_has_reflog(true, "refs/heads/master");
|
||||
assert_has_reflog(false, "refs/heads/subtrees");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user