From ed2be6306d6565cdb8ec08848eb4af5545fad5d0 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Thu, 17 Nov 2011 10:40:01 -0500 Subject: [PATCH] core: Should write remote refs in refs// Not just refs/, otherwise multiple remotes conflict. --- src/libostree/ostree-repo.c | 26 ++++++++++++++++++++++---- src/libostree/ostree-repo.h | 2 +- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c index a2d21703..516d3e0f 100644 --- a/src/libostree/ostree-repo.c +++ b/src/libostree/ostree-repo.c @@ -1342,14 +1342,32 @@ add_one_path_to_tree_and_import (OstreeRepo *self, gboolean ostree_repo_write_ref (OstreeRepo *self, - gboolean is_local, + const char *remote, const char *name, const char *rev, GError **error) { + gboolean ret = FALSE; OstreeRepoPrivate *priv = GET_PRIVATE (self); - return write_checksum_file (is_local ? priv->local_heads_dir : priv->remote_heads_dir, - name, rev, error); + GFile *dir = NULL; + + if (remote == NULL) + dir = g_object_ref (priv->local_heads_dir); + else + { + dir = g_file_get_child (priv->remote_heads_dir, remote); + + if (!ot_util_ensure_directory (ot_gfile_get_path_cached (dir), FALSE, error)) + goto out; + } + + if (!write_checksum_file (dir, name, rev, error)) + goto out; + + ret = TRUE; + out: + g_clear_object (&dir); + return ret; } static gboolean @@ -1389,7 +1407,7 @@ commit_parsed_tree (OstreeRepo *self, commit, &ret_commit, error)) goto out; - if (!ostree_repo_write_ref (self, TRUE, branch, g_checksum_get_string (ret_commit), error)) + if (!ostree_repo_write_ref (self, NULL, branch, g_checksum_get_string (ret_commit), error)) goto out; ret = TRUE; diff --git a/src/libostree/ostree-repo.h b/src/libostree/ostree-repo.h index 1c7eeb36..22bb0e62 100644 --- a/src/libostree/ostree-repo.h +++ b/src/libostree/ostree-repo.h @@ -91,7 +91,7 @@ gboolean ostree_repo_resolve_rev (OstreeRepo *self, GError **error); gboolean ostree_repo_write_ref (OstreeRepo *self, - gboolean is_local, + const char *remote, const char *name, const char *rev, GError **error);