repo: Make abort_transaction silently succeed if we're not in a transaction
This helps callers out a lot, and means we can always call abort_transaction at the end of a function. https://bugzilla.gnome.org/show_bug.cgi?id=707644
This commit is contained in:
parent
ef61724269
commit
f84504a8c4
|
|
@ -662,6 +662,9 @@ ostree_repo_abort_transaction (OstreeRepo *self,
|
||||||
{
|
{
|
||||||
gboolean ret = FALSE;
|
gboolean ret = FALSE;
|
||||||
|
|
||||||
|
if (!self->in_transaction)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
if (!cleanup_tmpdir (self, cancellable, error))
|
if (!cleanup_tmpdir (self, cancellable, error))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -224,7 +224,6 @@ ostree_builtin_commit (int argc, char **argv, OstreeRepo *repo, GCancellable *ca
|
||||||
GOptionContext *context;
|
GOptionContext *context;
|
||||||
gboolean ret = FALSE;
|
gboolean ret = FALSE;
|
||||||
gboolean skip_commit = FALSE;
|
gboolean skip_commit = FALSE;
|
||||||
gboolean in_transaction = FALSE;
|
|
||||||
gs_unref_object GFile *arg = NULL;
|
gs_unref_object GFile *arg = NULL;
|
||||||
gs_free char *parent = NULL;
|
gs_free char *parent = NULL;
|
||||||
gs_free char *commit_checksum = NULL;
|
gs_free char *commit_checksum = NULL;
|
||||||
|
|
@ -294,8 +293,6 @@ ostree_builtin_commit (int argc, char **argv, OstreeRepo *repo, GCancellable *ca
|
||||||
if (!ostree_repo_prepare_transaction (repo, opt_link_checkout_speedup, NULL, cancellable, error))
|
if (!ostree_repo_prepare_transaction (repo, opt_link_checkout_speedup, NULL, cancellable, error))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
in_transaction = TRUE;
|
|
||||||
|
|
||||||
mtree = ostree_mutable_tree_new ();
|
mtree = ostree_mutable_tree_new ();
|
||||||
|
|
||||||
if (argc <= 1 && (opt_trees == NULL || opt_trees[0] == NULL))
|
if (argc <= 1 && (opt_trees == NULL || opt_trees[0] == NULL))
|
||||||
|
|
@ -422,20 +419,12 @@ ostree_builtin_commit (int argc, char **argv, OstreeRepo *repo, GCancellable *ca
|
||||||
|
|
||||||
if (!ostree_repo_commit_transaction (repo, &stats, cancellable, error))
|
if (!ostree_repo_commit_transaction (repo, &stats, cancellable, error))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
in_transaction = FALSE;
|
|
||||||
|
|
||||||
if (!ostree_repo_write_ref (repo, NULL, opt_branch, commit_checksum, error))
|
if (!ostree_repo_write_ref (repo, NULL, opt_branch, commit_checksum, error))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!ostree_repo_abort_transaction (repo, cancellable, error))
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
in_transaction = FALSE;
|
|
||||||
|
|
||||||
commit_checksum = g_strdup (parent);
|
commit_checksum = g_strdup (parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -455,10 +444,7 @@ ostree_builtin_commit (int argc, char **argv, OstreeRepo *repo, GCancellable *ca
|
||||||
|
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
out:
|
out:
|
||||||
if (in_transaction)
|
ostree_repo_abort_transaction (repo, cancellable, NULL);
|
||||||
{
|
|
||||||
(void) ostree_repo_abort_transaction (repo, cancellable, NULL);
|
|
||||||
}
|
|
||||||
if (context)
|
if (context)
|
||||||
g_option_context_free (context);
|
g_option_context_free (context);
|
||||||
if (modifier)
|
if (modifier)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue