lib/repo-pull: Use resolve() instead of list() in fetch_ref_contents()
This is more efficient in the non-collection case; in the collection case, the implementation of ostree_repo_resolve_collection_ref() needs to be rewritten to improve efficiency. Signed-off-by: Philip Withnall <withnall@endlessm.com> Closes: #1182 Approved by: cgwalters
This commit is contained in:
parent
149aec1099
commit
2f9f7222a4
|
|
@ -839,26 +839,22 @@ fetch_ref_contents (OtPullData *pull_data,
|
||||||
if (pull_data->remote_repo_local != NULL && ref->collection_id != NULL)
|
if (pull_data->remote_repo_local != NULL && ref->collection_id != NULL)
|
||||||
{
|
{
|
||||||
#ifdef OSTREE_ENABLE_EXPERIMENTAL_API
|
#ifdef OSTREE_ENABLE_EXPERIMENTAL_API
|
||||||
g_autoptr(GHashTable) refs = NULL; /* (element-type OstreeCollectionRef utf8) */
|
if (!ostree_repo_resolve_collection_ref (pull_data->remote_repo_local,
|
||||||
if (!ostree_repo_list_collection_refs (pull_data->remote_repo_local,
|
ref, TRUE /* ignore enoent */,
|
||||||
ref->collection_id, &refs,
|
OSTREE_REPO_RESOLVE_REV_EXT_NONE,
|
||||||
OSTREE_REPO_LIST_REFS_EXT_NONE,
|
&ret_contents, cancellable, error))
|
||||||
cancellable, error))
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
ret_contents = g_strdup (g_hash_table_lookup (refs, ref));
|
|
||||||
#else /* if !OSTREE_ENABLE_EXPERIMENTAL_API */
|
#else /* if !OSTREE_ENABLE_EXPERIMENTAL_API */
|
||||||
g_assert_not_reached ();
|
g_assert_not_reached ();
|
||||||
#endif /* !OSTREE_ENABLE_EXPERIMENTAL_API */
|
#endif /* !OSTREE_ENABLE_EXPERIMENTAL_API */
|
||||||
}
|
}
|
||||||
else if (pull_data->remote_repo_local != NULL)
|
else if (pull_data->remote_repo_local != NULL)
|
||||||
{
|
{
|
||||||
g_autoptr(GHashTable) refs = NULL; /* (element-type utf8 utf8) */
|
if (!ostree_repo_resolve_rev_ext (pull_data->remote_repo_local,
|
||||||
if (!ostree_repo_list_refs (pull_data->remote_repo_local, NULL,
|
ref->ref_name, TRUE /* ignore enoent */,
|
||||||
&refs, cancellable, error))
|
OSTREE_REPO_RESOLVE_REV_EXT_NONE,
|
||||||
|
&ret_contents, error))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
ret_contents = g_strdup (g_hash_table_lookup (refs, ref->ref_name));
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -877,9 +873,11 @@ fetch_ref_contents (OtPullData *pull_data,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Validate and return. */
|
/* Validate and return. */
|
||||||
g_strchomp (ret_contents);
|
if (ret_contents != NULL)
|
||||||
|
g_strchomp (ret_contents);
|
||||||
|
|
||||||
if (!ostree_validate_checksum_string (ret_contents, error))
|
if (ret_contents == NULL ||
|
||||||
|
!ostree_validate_checksum_string (ret_contents, error))
|
||||||
return glnx_prefix_error (error, "Fetching checksum for ref (%s, %s)",
|
return glnx_prefix_error (error, "Fetching checksum for ref (%s, %s)",
|
||||||
ref->collection_id ? ref->collection_id : "(empty)",
|
ref->collection_id ? ref->collection_id : "(empty)",
|
||||||
ref->ref_name);
|
ref->ref_name);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue