commit: Support generating commits with no parent, or a custom one

When I'm doing local development builds, it's quite common for me not
to want to accumulate history.  There are also use cases for this on
build servers as well.

In particular, using this, one could write a build system that didn't
necessarily need to have access to (a copy of) the OSTree repository.
Instead, the build system would determine the last commit ID on the
branch, and pass that to a worker node, then sync the generated
content back.

The API supported generating custom commits that don't necessarily
reference the previous commit on the same branch, let's just expose
this in the command line for convenience.

I plan to also support this rpm-ostree.

Closes: #223
Approved by: jlebon
This commit is contained in:
Colin Walters authored and Colin Walters (automation) committed 2016-03-29 14:31:29 +00:00
1 parent a50df5daf7
commit c6b4ecd474
2 files changed
+36 -3

No files matched your search

+18 -2
View File
@@ -32,6 +32,7 @@
static char *opt_subject;
static char *opt_body;
static char *opt_parent;
static char *opt_branch;
static char *opt_statoverride_file;
static char **opt_metadata_strings;
@@ -67,6 +68,7 @@ parse_fsync_cb (const char *option_name,
}
static GOptionEntry options[] = {
{ "parent", 0, 0, G_OPTION_ARG_STRING, &opt_parent, "Parent ref, or \"none\"", "REF" },
{ "subject", 's', 0, G_OPTION_ARG_STRING, &opt_subject, "One line subject", "SUBJECT" },
{ "body", 'm', 0, G_OPTION_ARG_STRING, &opt_body, "Full description", "BODY" },
{ "branch", 'b', 0, G_OPTION_ARG_STRING, &opt_branch, "Branch", "BRANCH" },
@@ -361,8 +363,22 @@ ostree_builtin_commit (int argc, char **argv, GCancellable *cancellable, GError
modifier = ostree_repo_commit_modifier_new (flags, commit_filter, mode_adds, NULL);
}
if (!ostree_repo_resolve_rev (repo, opt_branch, TRUE, &parent, error))
goto out;
if (opt_parent)
{
if (g_str_equal (opt_parent, "none"))
parent = NULL;
else
{
if (!ostree_validate_checksum_string (opt_parent, error))
goto out;
parent = g_strdup (opt_parent);
}
}
else
{
if (!ostree_repo_resolve_rev (repo, opt_branch, TRUE, &parent, error))
goto out;
}
if (!opt_subject && !opt_body)
{