summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2018-06-13 19:20:28 +0200
committerAtomic Bot <atomic-devel@projectatomic.io>2018-06-14 17:58:47 +0000
commit677e1810254685a1ec34679c5b1f5324236b091d (patch)
treee0d8398480222bd86c4664e40077b71a6f74a478
parent2d2f218669e6230edaf6329913a2b2c1cda590ed (diff)
downloadostree-677e1810254685a1ec34679c5b1f5324236b091d.tar.gz
ostree_repo_resolve_rev: Resolve refs set in the transaction
This allows you to get at the current commit for a ref pending in the transaction. Closes: #1624 Approved by: cgwalters
-rw-r--r--src/libostree/ostree-repo-refs.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/libostree/ostree-repo-refs.c b/src/libostree/ostree-repo-refs.c
index d10e302e..2600cb7c 100644
--- a/src/libostree/ostree-repo-refs.c
+++ b/src/libostree/ostree-repo-refs.c
@@ -245,7 +245,28 @@ resolve_refspec (OstreeRepo *self,
{
ret_rev = g_strdup (ref);
}
- else if (remote != NULL)
+ else if (self->in_transaction)
+ {
+ const char *refspec;
+
+ if (remote != NULL)
+ refspec = glnx_strjoina (remote, ":", ref);
+ else
+ refspec = ref;
+
+ g_mutex_lock (&self->txn_lock);
+ if (self->txn.refs)
+ ret_rev = g_strdup (g_hash_table_lookup (self->txn.refs, refspec));
+ g_mutex_unlock (&self->txn_lock);
+ }
+
+ if (ret_rev != NULL)
+ {
+ ot_transfer_out_value (out_rev, &ret_rev);
+ return TRUE;
+ }
+
+ if (remote != NULL)
{
const char *remote_ref = glnx_strjoina ("refs/remotes/", remote, "/", ref);