[ostree] libostree: add new API ostree_repo_write_commit_with_time
- From: Giuseppe Scrivano <gscrivano src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ostree] libostree: add new API ostree_repo_write_commit_with_time
- Date: Mon, 16 Nov 2015 10:37:51 +0000 (UTC)
commit 14ffd7022a8c840f277c81e53864be4ea5fabacb
Author: Giuseppe Scrivano <gscrivan redhat com>
Date: Mon Nov 9 10:16:55 2015 +0000
libostree: add new API ostree_repo_write_commit_with_time
It extends ostree_repo_write_commit as it permits to override the
commit timestamp.
Signed-off-by: Giuseppe Scrivano <gscrivan redhat com>
doc/ostree-sections.txt | 1 +
src/libostree/ostree-repo-commit.c | 51 ++++++++++++++++++++++++++++++++---
src/libostree/ostree-repo.h | 11 ++++++++
3 files changed, 58 insertions(+), 5 deletions(-)
---
diff --git a/doc/ostree-sections.txt b/doc/ostree-sections.txt
index ff512e4..aecaa56 100644
--- a/doc/ostree-sections.txt
+++ b/doc/ostree-sections.txt
@@ -282,6 +282,7 @@ ostree_repo_write_directory_to_mtree
ostree_repo_write_archive_to_mtree
ostree_repo_write_mtree
ostree_repo_write_commit
+ostree_repo_write_commit_with_time
ostree_repo_read_commit_detached_metadata
ostree_repo_write_commit_detached_metadata
OstreeRepoCheckoutMode
diff --git a/src/libostree/ostree-repo-commit.c b/src/libostree/ostree-repo-commit.c
index 7cc3e27..732bbd0 100644
--- a/src/libostree/ostree-repo-commit.c
+++ b/src/libostree/ostree-repo-commit.c
@@ -1969,11 +1969,55 @@ ostree_repo_write_commit (OstreeRepo *self,
GError **error)
{
gboolean ret = FALSE;
+ GDateTime *now = NULL;
+
+ now = g_date_time_new_now_utc ();
+ ret = ostree_repo_write_commit_with_time (self,
+ parent,
+ subject,
+ body,
+ metadata,
+ root,
+ GUINT64_TO_BE (g_date_time_to_unix (now)),
+ out_commit,
+ cancellable,
+ error);
+ g_date_time_unref (now);
+ return ret;
+}
+
+/**
+ * ostree_repo_write_commit_with_time:
+ * @self: Repo
+ * @parent: (allow-none): ASCII SHA256 checksum for parent, or %NULL for none
+ * @subject: Subject
+ * @body: (allow-none): Body
+ * @metadata: (allow-none): GVariant of type a{sv}, or %NULL for none
+ * @root: The tree to point the commit to
+ * @out_commit: (out): Resulting ASCII SHA256 checksum for commit
+ * @cancellable: Cancellable
+ * @error: Error
+ *
+ * Write a commit metadata object, referencing @root_contents_checksum
+ * and @root_metadata_checksum.
+ */
+gboolean
+ostree_repo_write_commit_with_time (OstreeRepo *self,
+ const char *parent,
+ const char *subject,
+ const char *body,
+ GVariant *metadata,
+ OstreeRepoFile *root,
+ guint64 time,
+ char **out_commit,
+ GCancellable *cancellable,
+ GError **error)
+{
+ gboolean ret = FALSE;
g_autofree char *ret_commit = NULL;
g_autoptr(GVariant) commit = NULL;
g_autoptr(GVariant) new_metadata = NULL;
g_autofree guchar *commit_csum = NULL;
- GDateTime *now = NULL;
OstreeRepoFile *repo_root = OSTREE_REPO_FILE (root);
g_return_val_if_fail (subject != NULL, FALSE);
@@ -1983,13 +2027,12 @@ ostree_repo_write_commit (OstreeRepo *self,
cancellable, error))
goto out;
- now = g_date_time_new_now_utc ();
commit = g_variant_new ("(@a{sv} ay@a(say)sst ay@ay)",
new_metadata ? new_metadata : create_empty_gvariant_dict (),
parent ? ostree_checksum_to_bytes_v (parent) : ot_gvariant_new_bytearray (NULL, 0),
g_variant_new_array (G_VARIANT_TYPE ("(say)"), NULL, 0),
subject, body ? body : "",
- GUINT64_TO_BE (g_date_time_to_unix (now)),
+ GUINT64_TO_BE (time),
ostree_checksum_to_bytes_v (ostree_repo_file_tree_get_contents_checksum
(repo_root)),
ostree_checksum_to_bytes_v (ostree_repo_file_tree_get_metadata_checksum
(repo_root)));
g_variant_ref_sink (commit);
@@ -2003,8 +2046,6 @@ ostree_repo_write_commit (OstreeRepo *self,
ret = TRUE;
ot_transfer_out_value(out_commit, &ret_commit);
out:
- if (now)
- g_date_time_unref (now);
return ret;
}
diff --git a/src/libostree/ostree-repo.h b/src/libostree/ostree-repo.h
index e67c310..69720a2 100644
--- a/src/libostree/ostree-repo.h
+++ b/src/libostree/ostree-repo.h
@@ -452,6 +452,17 @@ gboolean ostree_repo_write_commit (OstreeRepo *self,
GCancellable *cancellable,
GError **error);
+gboolean ostree_repo_write_commit_with_time (OstreeRepo *self,
+ const char *parent,
+ const char *subject,
+ const char *body,
+ GVariant *metadata,
+ OstreeRepoFile *root,
+ guint64 time,
+ char **out_commit,
+ GCancellable *cancellable,
+ GError **error);
+
gboolean ostree_repo_read_commit_detached_metadata (OstreeRepo *self,
const char *checksum,
GVariant **out_metadata,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]