repo: Also traverse remote refs when enumerating objects
Otherwise ostree --repo=repo prune will delete everything =/
This commit is contained in:
parent
4b0bbb94a0
commit
9d58bad7ca
|
|
@ -1567,12 +1567,17 @@ ostree_repo_list_all_refs (OstreeRepo *repo,
|
||||||
{
|
{
|
||||||
gboolean ret = FALSE;
|
gboolean ret = FALSE;
|
||||||
ot_lhash GHashTable *ret_all_refs = NULL;
|
ot_lhash GHashTable *ret_all_refs = NULL;
|
||||||
ot_lobj GFile *heads_dir = NULL;
|
ot_lobj GFile *dir = NULL;
|
||||||
|
|
||||||
ret_all_refs = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
|
ret_all_refs = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
|
||||||
|
|
||||||
heads_dir = g_file_resolve_relative_path (ostree_repo_get_path (repo), "refs/heads");
|
dir = g_file_resolve_relative_path (ostree_repo_get_path (repo), "refs/heads");
|
||||||
if (!enumerate_refs_recurse (repo, heads_dir, heads_dir, ret_all_refs, cancellable, error))
|
if (!enumerate_refs_recurse (repo, dir, dir, ret_all_refs, cancellable, error))
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
g_clear_object (&dir);
|
||||||
|
dir = g_file_resolve_relative_path (ostree_repo_get_path (repo), "refs/remotes");
|
||||||
|
if (!enumerate_refs_recurse (repo, dir, dir, ret_all_refs, cancellable, error))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
|
|
@ -3912,12 +3917,13 @@ ostree_repo_load_variant_c (OstreeRepo *self,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
static gboolean
|
||||||
ostree_repo_load_variant (OstreeRepo *self,
|
load_variant_internal (OstreeRepo *self,
|
||||||
OstreeObjectType objtype,
|
OstreeObjectType objtype,
|
||||||
const char *sha256,
|
const char *sha256,
|
||||||
GVariant **out_variant,
|
gboolean error_if_not_found,
|
||||||
GError **error)
|
GVariant **out_variant,
|
||||||
|
GError **error)
|
||||||
{
|
{
|
||||||
gboolean ret = FALSE;
|
gboolean ret = FALSE;
|
||||||
guchar *pack_data;
|
guchar *pack_data;
|
||||||
|
|
@ -3959,7 +3965,7 @@ ostree_repo_load_variant (OstreeRepo *self,
|
||||||
if (!ostree_repo_load_variant (self->parent_repo, objtype, sha256, &ret_variant, error))
|
if (!ostree_repo_load_variant (self->parent_repo, objtype, sha256, &ret_variant, error))
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
else
|
else if (error_if_not_found)
|
||||||
{
|
{
|
||||||
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
|
||||||
"No such metadata object %s.%s",
|
"No such metadata object %s.%s",
|
||||||
|
|
@ -3973,6 +3979,42 @@ ostree_repo_load_variant (OstreeRepo *self,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ostree_repo_load_variant_if_exists:
|
||||||
|
*
|
||||||
|
* Attempt to load the metadata object @sha256 of type @objtype if it
|
||||||
|
* exists, storing the result in @out_variant. If it doesn't exist,
|
||||||
|
* %NULL is returned.
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
ostree_repo_load_variant_if_exists (OstreeRepo *self,
|
||||||
|
OstreeObjectType objtype,
|
||||||
|
const char *sha256,
|
||||||
|
GVariant **out_variant,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
return load_variant_internal (self, objtype, sha256, FALSE,
|
||||||
|
out_variant, error);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ostree_repo_load_variant:
|
||||||
|
*
|
||||||
|
* Load the metadata object @sha256 of type @objtype, storing the
|
||||||
|
* result in @out_variant.
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
ostree_repo_load_variant (OstreeRepo *self,
|
||||||
|
OstreeObjectType objtype,
|
||||||
|
const char *sha256,
|
||||||
|
GVariant **out_variant,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
return load_variant_internal (self, objtype, sha256, TRUE,
|
||||||
|
out_variant, error);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ostree_repo_list_objects:
|
* ostree_repo_list_objects:
|
||||||
* @self:
|
* @self:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue