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
|
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
|
GIT_END_DECL
|
||||||
#endif
|
#endif
|
||||||
|
17
src/refs.c
17
src/refs.c
@ -1802,3 +1802,20 @@ int git_reference_foreach_glob(
|
|||||||
return git_reference_foreach(
|
return git_reference_foreach(
|
||||||
repo, list_flags, fromglob_cb, &data);
|
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(&moved_log_path);
|
||||||
git_buf_free(&master_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