[ostree] Drop refs/summary
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ostree] Drop refs/summary
- Date: Sun, 9 Feb 2014 19:21:10 +0000 (UTC)
commit 8dd7b5575eeafd2b41e06d907ad8250cad5eb009
Author: Colin Walters <walters verbum org>
Date: Sun Feb 9 14:01:27 2014 -0500
Drop refs/summary
I'm not aware of anyone using this, and it's not efficient to write a
whole file every time a ref changes, plus it's not atomic.
src/libostree/ostree-repo-pull.c | 131 ++++----------------------------------
src/libostree/ostree-repo-refs.c | 50 --------------
2 files changed, 14 insertions(+), 167 deletions(-)
---
diff --git a/src/libostree/ostree-repo-pull.c b/src/libostree/ostree-repo-pull.c
index ec90520..f1dcf75 100644
--- a/src/libostree/ostree-repo-pull.c
+++ b/src/libostree/ostree-repo-pull.c
@@ -1110,60 +1110,6 @@ on_metadata_objects_to_fetch_ready (gint fd,
}
static gboolean
-parse_ref_summary (const char *contents,
- GHashTable **out_refs,
- GError **error)
-{
- gboolean ret = FALSE;
- gs_unref_hashtable GHashTable *ret_refs = NULL;
- char **lines = NULL;
- char **iter = NULL;
- char *ref = NULL;
- char *sha256 = NULL;
-
- ret_refs = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
-
- lines = g_strsplit_set (contents, "\n", -1);
- for (iter = lines; *iter; iter++)
- {
- const char *line = *iter;
- const char *spc;
-
- if (!*line)
- continue;
-
- spc = strchr (line, ' ');
- if (!spc)
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "Invalid ref summary file; missing ' ' in line");
- goto out;
- }
-
- g_free (ref);
- ref = g_strdup (spc + 1);
- if (!ostree_validate_rev (ref, error))
- goto out;
-
- g_free (sha256);
- sha256 = g_strndup (line, spc - line);
- if (!ostree_validate_checksum_string (sha256, error))
- goto out;
-
- g_hash_table_replace (ret_refs, ref, sha256);
- /* Transfer ownership */
- ref = NULL;
- sha256 = NULL;
- }
-
- ret = TRUE;
- ot_transfer_out_value (out_refs, &ret_refs);
- out:
- g_strfreev (lines);
- return ret;
-}
-
-static gboolean
repo_get_string_key_inherit (OstreeRepo *repo,
const char *section,
const char *key,
@@ -1314,7 +1260,6 @@ ostree_repo_pull (OstreeRepo *self,
gs_free char *remote_key = NULL;
gs_free char *path = NULL;
gs_free char *baseurl = NULL;
- gs_free char *summary_data = NULL;
gs_unref_hashtable GHashTable *requested_refs_to_fetch = NULL;
gs_unref_hashtable GHashTable *updated_refs = NULL;
gs_unref_hashtable GHashTable *commits_to_fetch = NULL;
@@ -1322,7 +1267,6 @@ ostree_repo_pull (OstreeRepo *self,
GSource *queue_src = NULL;
OtPullData pull_data_real = { 0, };
OtPullData *pull_data = &pull_data_real;
- SoupURI *summary_uri = NULL;
GKeyFile *config = NULL;
GKeyFile *remote_config = NULL;
char **configured_branches = NULL;
@@ -1428,72 +1372,27 @@ ostree_repo_pull (OstreeRepo *self,
}
else
{
- GError *temp_error = NULL;
- gboolean fetch_all_refs;
+ char **branches_iter;
- configured_branches = g_key_file_get_string_list (config, remote_key, "branches", NULL, &temp_error);
- if (configured_branches == NULL && temp_error != NULL)
- {
- if (g_error_matches (temp_error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND))
- {
- g_clear_error (&temp_error);
- fetch_all_refs = TRUE;
- }
- else
- {
- g_propagate_error (error, temp_error);
- goto out;
- }
- }
- else
- fetch_all_refs = FALSE;
+ configured_branches = g_key_file_get_string_list (config, remote_key, "branches", NULL, NULL);
+ branches_iter = configured_branches;
- if (fetch_all_refs)
+ if (!(branches_iter && *branches_iter))
{
- summary_uri = soup_uri_copy (pull_data->base_uri);
- path = g_build_filename (soup_uri_get_path (summary_uri), "refs", "summary", NULL);
- soup_uri_set_path (summary_uri, path);
-
- if (!fetch_uri_contents_utf8_sync (pull_data, summary_uri, &summary_data, cancellable, error))
- goto out;
-
- if (!parse_ref_summary (summary_data, &requested_refs_to_fetch, error))
- goto out;
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ "No configured branches for remote %s", pull_data->remote_name);
+ goto out;
}
- else
+ for (;branches_iter && *branches_iter; branches_iter++)
{
- char **branches_iter = configured_branches;
-
- if (!(branches_iter && *branches_iter))
- g_print ("No configured branches for remote %s\n", pull_data->remote_name);
- for (;branches_iter && *branches_iter; branches_iter++)
- {
- const char *branch = *branches_iter;
- char *contents;
- GVariant *descriptor_data = NULL;
+ const char *branch = *branches_iter;
+ char *contents;
- if (!fetch_ref_contents (pull_data, branch, &contents, cancellable, error))
- goto out;
-
- initiate_commit_scan (pull_data, contents);
-#if 0
- if (!request_static_delta_meta_sync (pull_data, branch, contents,
- &descriptor_data, cancellable, error))
- goto out;
-#endif
+ if (!fetch_ref_contents (pull_data, branch, &contents, cancellable, error))
+ goto out;
- if (!descriptor_data)
- {
- /* Transfer ownership of contents */
- g_hash_table_insert (requested_refs_to_fetch, g_strdup (branch), contents);
- }
- else
- {
- /* Transfer ownership of delta descriptor */
- g_ptr_array_add (pull_data->static_delta_metas, descriptor_data);
- g_free (contents);
- }
- }
+ /* Transfer ownership of contents */
+ g_hash_table_insert (requested_refs_to_fetch, g_strdup (branch), contents);
}
}
@@ -1616,7 +1515,5 @@ ostree_repo_pull (OstreeRepo *self,
g_clear_pointer (&pull_data->requested_content, (GDestroyNotify) g_hash_table_unref);
g_clear_pointer (&pull_data->requested_metadata, (GDestroyNotify) g_hash_table_unref);
g_clear_pointer (&remote_config, (GDestroyNotify) g_key_file_unref);
- if (summary_uri)
- soup_uri_free (summary_uri);
return ret;
}
diff --git a/src/libostree/ostree-repo-refs.c b/src/libostree/ostree-repo-refs.c
index ccc5093..ba3bedb 100644
--- a/src/libostree/ostree-repo-refs.c
+++ b/src/libostree/ostree-repo-refs.c
@@ -570,50 +570,6 @@ ostree_repo_list_refs (OstreeRepo *self,
return ret;
}
-static gboolean
-write_ref_summary (OstreeRepo *self,
- GCancellable *cancellable,
- GError **error)
-{
- gboolean ret = FALSE;
- GHashTableIter hash_iter;
- gpointer key, value;
- gsize bytes_written;
- gs_unref_hashtable GHashTable *all_refs = NULL;
- gs_unref_object GFile *summary_path = NULL;
- gs_unref_object GOutputStream *out = NULL;
- gs_free char *buf = NULL;
-
- if (!ostree_repo_list_refs (self, NULL, &all_refs, cancellable, error))
- goto out;
-
- summary_path = g_file_resolve_relative_path (ostree_repo_get_path (self),
- "refs/summary");
-
- out = (GOutputStream*) g_file_replace (summary_path, NULL, FALSE, 0, cancellable, error);
- if (!out)
- goto out;
-
- g_hash_table_iter_init (&hash_iter, all_refs);
- while (g_hash_table_iter_next (&hash_iter, &key, &value))
- {
- const char *name = key;
- const char *sha256 = value;
-
- g_free (buf);
- buf = g_strdup_printf ("%s %s\n", sha256, name);
- if (!g_output_stream_write_all (out, buf, strlen (buf), &bytes_written, cancellable, error))
- goto out;
- }
-
- if (!g_output_stream_close (out, cancellable, error))
- goto out;
-
- ret = TRUE;
- out:
- return ret;
-}
-
static gboolean
write_refspec (OstreeRepo *self,
const char *refspec,
@@ -683,12 +639,6 @@ _ostree_repo_update_refs (OstreeRepo *self,
goto out;
}
- if (self->mode == OSTREE_REPO_MODE_ARCHIVE_Z2)
- {
- if (!write_ref_summary (self, cancellable, error))
- goto out;
- }
-
ret = TRUE;
out:
return ret;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]