[ostree] commit: add --timestamp=TIMESTAMP
- From: Giuseppe Scrivano <gscrivano src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ostree] commit: add --timestamp=TIMESTAMP
- Date: Mon, 16 Nov 2015 10:37:56 +0000 (UTC)
commit 68f70d8e747d64a2b5ef525c9fec95c258eeabaa
Author: Giuseppe Scrivano <gscrivan redhat com>
Date: Mon Nov 9 10:35:46 2015 +0000
commit: add --timestamp=TIMESTAMP
It allows to override the timestamp of the commit.
Signed-off-by: Giuseppe Scrivano <gscrivan redhat com>
doc/ostree-commit.xml | 8 ++++++++
src/ostree/ot-builtin-commit.c | 29 ++++++++++++++++++++++++++---
2 files changed, 34 insertions(+), 3 deletions(-)
---
diff --git a/doc/ostree-commit.xml b/doc/ostree-commit.xml
index 440e77c..4a86c1d 100644
--- a/doc/ostree-commit.xml
+++ b/doc/ostree-commit.xml
@@ -198,6 +198,14 @@ Boston, MA 02111-1307, USA.
GPG home directory to use when looking for keyrings (if have GPGME - GNU Privacy Guard
Made Easy).
</para></listitem>
</varlistentry>
+
+ <varlistentry>
+ <term><option>--timestamp</option>="TIMESTAMP"</term>
+
+ <listitem><para>
+ Override the timestamp of the commit to TIMESTAMP.
+ </para></listitem>
+ </varlistentry>
</variablelist>
</refsect1>
diff --git a/src/ostree/ot-builtin-commit.c b/src/ostree/ot-builtin-commit.c
index f53858e..6afed20 100644
--- a/src/ostree/ot-builtin-commit.c
+++ b/src/ostree/ot-builtin-commit.c
@@ -28,6 +28,7 @@
#include "ostree.h"
#include "otutil.h"
#include "ot-tool-util.h"
+#include "parse-datetime.h"
static char *opt_subject;
static char *opt_body;
@@ -47,6 +48,7 @@ static char **opt_key_ids;
static char *opt_gpg_homedir;
static gboolean opt_generate_sizes;
static gboolean opt_disable_fsync;
+static char *opt_timestamp;
static gboolean
parse_fsync_cb (const char *option_name,
@@ -84,6 +86,7 @@ static GOptionEntry options[] = {
{ "generate-sizes", 0, 0, G_OPTION_ARG_NONE, &opt_generate_sizes, "Generate size information along with
commit metadata", NULL },
{ "disable-fsync", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &opt_disable_fsync, "Do not invoke
fsync()", NULL },
{ "fsync", 0, 0, G_OPTION_ARG_CALLBACK, parse_fsync_cb, "Specify how to invoke fsync()", "POLICY" },
+ { "timestamp", 0, 0, G_OPTION_ARG_STRING, &opt_timestamp, "Override the timestamp of the commit",
"TIMESTAMP" },
{ NULL }
};
@@ -488,9 +491,29 @@ ostree_builtin_commit (int argc, char **argv, GCancellable *cancellable, GError
if (!skip_commit)
{
gboolean update_summary;
- if (!ostree_repo_write_commit (repo, parent, opt_subject, opt_body, metadata,
- OSTREE_REPO_FILE (root),
- &commit_checksum, cancellable, error))
+ guint64 timestamp;
+ if (!opt_timestamp)
+ {
+ GDateTime *now = g_date_time_new_now_utc ();
+ timestamp = g_date_time_to_unix (now);
+ g_date_time_unref (now);
+ }
+ else
+ {
+ struct timespec ts;
+ if (!parse_datetime (&ts, opt_timestamp, NULL))
+ {
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ "Could not parse '%s'", opt_timestamp);
+ goto out;
+ }
+ timestamp = ts.tv_sec;
+ }
+
+ if (!ostree_repo_write_commit_with_time (repo, parent, opt_subject, opt_body, metadata,
+ OSTREE_REPO_FILE (root),
+ timestamp,
+ &commit_checksum, cancellable, error))
goto out;
if (detached_metadata)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]