diff options
author | Alexander Larsson <alexl@redhat.com> | 2018-06-13 19:20:28 +0200 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2018-06-14 17:58:47 +0000 |
commit | 677e1810254685a1ec34679c5b1f5324236b091d (patch) | |
tree | e0d8398480222bd86c4664e40077b71a6f74a478 | |
parent | 2d2f218669e6230edaf6329913a2b2c1cda590ed (diff) | |
download | ostree-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.c | 23 |
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); |