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:
Jasper St. Pierre 2013-09-05 17:57:53 -04:00
parent ef61724269
commit f84504a8c4
2 changed files with 4 additions and 15 deletions

View File

@ -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;

View File

@ -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)