repo: Redo ostree_repo_remote_get_url()
Make it work like in ostree_repo_pull_with_options(), handling "file://" remotes and inheriting the "url" option from parent repos if needed.
This commit is contained in:
parent
d4111aeac0
commit
3515e01f6a
|
|
@ -1604,7 +1604,6 @@ ostree_repo_pull_with_options (OstreeRepo *self,
|
|||
gpointer key, value;
|
||||
g_autofree char *remote_key = NULL;
|
||||
g_autofree char *path = NULL;
|
||||
g_autofree char *baseurl = NULL;
|
||||
g_autofree char *metalink_url_str = NULL;
|
||||
g_autoptr(GHashTable) requested_refs_to_fetch = NULL;
|
||||
g_autoptr(GHashTable) commits_to_fetch = NULL;
|
||||
|
|
@ -1670,14 +1669,8 @@ ostree_repo_pull_with_options (OstreeRepo *self,
|
|||
|
||||
pull_data->start_time = g_get_monotonic_time ();
|
||||
|
||||
if (_ostree_repo_remote_name_is_file (remote_name_or_baseurl))
|
||||
{
|
||||
baseurl = g_strdup (remote_name_or_baseurl);
|
||||
}
|
||||
else
|
||||
{
|
||||
pull_data->remote_name = g_strdup (remote_name_or_baseurl);
|
||||
}
|
||||
if (!_ostree_repo_remote_name_is_file (remote_name_or_baseurl))
|
||||
pull_data->remote_name = g_strdup (remote_name_or_baseurl);
|
||||
|
||||
if (!ostree_repo_remote_get_gpg_verify (self, remote_name_or_baseurl,
|
||||
&pull_data->gpg_verify, error))
|
||||
|
|
@ -1700,19 +1693,10 @@ ostree_repo_pull_with_options (OstreeRepo *self,
|
|||
|
||||
if (!metalink_url_str)
|
||||
{
|
||||
if (baseurl == NULL)
|
||||
{
|
||||
if (!_ostree_repo_get_remote_option_inherit (self, remote_name_or_baseurl, "url", &baseurl, error))
|
||||
goto out;
|
||||
}
|
||||
g_autofree char *baseurl = NULL;
|
||||
|
||||
if (baseurl == NULL)
|
||||
{
|
||||
g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND,
|
||||
"No \"url\" option in remote \"%s\"",
|
||||
remote_name_or_baseurl);
|
||||
goto out;
|
||||
}
|
||||
if (!ostree_repo_remote_get_url (self, remote_name_or_baseurl, &baseurl, error))
|
||||
goto out;
|
||||
|
||||
pull_data->base_uri = soup_uri_new (baseurl);
|
||||
|
||||
|
|
|
|||
|
|
@ -1206,24 +1206,32 @@ ostree_repo_remote_get_url (OstreeRepo *self,
|
|||
char **out_url,
|
||||
GError **error)
|
||||
{
|
||||
local_cleanup_remote OstreeRemote *remote = NULL;
|
||||
g_autofree char *url = NULL;
|
||||
gboolean ret = FALSE;
|
||||
|
||||
g_return_val_if_fail (name != NULL, FALSE);
|
||||
|
||||
remote = ost_repo_get_remote (self, name, error);
|
||||
|
||||
if (remote == NULL)
|
||||
goto out;
|
||||
|
||||
url = g_key_file_get_string (remote->options, remote->group, "url", error);
|
||||
|
||||
if (url != NULL)
|
||||
if (_ostree_repo_remote_name_is_file (name))
|
||||
{
|
||||
gs_transfer_out_value (out_url, &url);
|
||||
ret = TRUE;
|
||||
url = g_strdup (name);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!_ostree_repo_get_remote_option_inherit (self, name, "url", &url, error))
|
||||
goto out;
|
||||
|
||||
if (url == NULL)
|
||||
{
|
||||
g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND,
|
||||
"No \"url\" option in remote \"%s\"", name);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
if (out_url != NULL)
|
||||
*out_url = g_steal_pointer (&url);
|
||||
|
||||
ret = TRUE;
|
||||
|
||||
out:
|
||||
return ret;
|
||||
|
|
|
|||
Loading…
Reference in New Issue