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>
This commit is contained in:
parent
b393e5a2e9
commit
14ffd7022a
|
|
@ -282,6 +282,7 @@ ostree_repo_write_directory_to_mtree
|
||||||
ostree_repo_write_archive_to_mtree
|
ostree_repo_write_archive_to_mtree
|
||||||
ostree_repo_write_mtree
|
ostree_repo_write_mtree
|
||||||
ostree_repo_write_commit
|
ostree_repo_write_commit
|
||||||
|
ostree_repo_write_commit_with_time
|
||||||
ostree_repo_read_commit_detached_metadata
|
ostree_repo_read_commit_detached_metadata
|
||||||
ostree_repo_write_commit_detached_metadata
|
ostree_repo_write_commit_detached_metadata
|
||||||
OstreeRepoCheckoutMode
|
OstreeRepoCheckoutMode
|
||||||
|
|
|
||||||
|
|
@ -1967,13 +1967,57 @@ ostree_repo_write_commit (OstreeRepo *self,
|
||||||
char **out_commit,
|
char **out_commit,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GError **error)
|
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;
|
gboolean ret = FALSE;
|
||||||
g_autofree char *ret_commit = NULL;
|
g_autofree char *ret_commit = NULL;
|
||||||
g_autoptr(GVariant) commit = NULL;
|
g_autoptr(GVariant) commit = NULL;
|
||||||
g_autoptr(GVariant) new_metadata = NULL;
|
g_autoptr(GVariant) new_metadata = NULL;
|
||||||
g_autofree guchar *commit_csum = NULL;
|
g_autofree guchar *commit_csum = NULL;
|
||||||
GDateTime *now = NULL;
|
|
||||||
OstreeRepoFile *repo_root = OSTREE_REPO_FILE (root);
|
OstreeRepoFile *repo_root = OSTREE_REPO_FILE (root);
|
||||||
|
|
||||||
g_return_val_if_fail (subject != NULL, FALSE);
|
g_return_val_if_fail (subject != NULL, FALSE);
|
||||||
|
|
@ -1983,13 +2027,12 @@ ostree_repo_write_commit (OstreeRepo *self,
|
||||||
cancellable, error))
|
cancellable, error))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
now = g_date_time_new_now_utc ();
|
|
||||||
commit = g_variant_new ("(@a{sv}@ay@a(say)sst@ay@ay)",
|
commit = g_variant_new ("(@a{sv}@ay@a(say)sst@ay@ay)",
|
||||||
new_metadata ? new_metadata : create_empty_gvariant_dict (),
|
new_metadata ? new_metadata : create_empty_gvariant_dict (),
|
||||||
parent ? ostree_checksum_to_bytes_v (parent) : ot_gvariant_new_bytearray (NULL, 0),
|
parent ? ostree_checksum_to_bytes_v (parent) : ot_gvariant_new_bytearray (NULL, 0),
|
||||||
g_variant_new_array (G_VARIANT_TYPE ("(say)"), NULL, 0),
|
g_variant_new_array (G_VARIANT_TYPE ("(say)"), NULL, 0),
|
||||||
subject, body ? body : "",
|
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_contents_checksum (repo_root)),
|
||||||
ostree_checksum_to_bytes_v (ostree_repo_file_tree_get_metadata_checksum (repo_root)));
|
ostree_checksum_to_bytes_v (ostree_repo_file_tree_get_metadata_checksum (repo_root)));
|
||||||
g_variant_ref_sink (commit);
|
g_variant_ref_sink (commit);
|
||||||
|
|
@ -2003,8 +2046,6 @@ ostree_repo_write_commit (OstreeRepo *self,
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
ot_transfer_out_value(out_commit, &ret_commit);
|
ot_transfer_out_value(out_commit, &ret_commit);
|
||||||
out:
|
out:
|
||||||
if (now)
|
|
||||||
g_date_time_unref (now);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -452,6 +452,17 @@ gboolean ostree_repo_write_commit (OstreeRepo *self,
|
||||||
GCancellable *cancellable,
|
GCancellable *cancellable,
|
||||||
GError **error);
|
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,
|
gboolean ostree_repo_read_commit_detached_metadata (OstreeRepo *self,
|
||||||
const char *checksum,
|
const char *checksum,
|
||||||
GVariant **out_metadata,
|
GVariant **out_metadata,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue