summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2016-03-10 19:13:49 (GMT)
committerJunio C Hamano <gitster@pobox.com>2016-03-10 19:13:49 (GMT)
commit3e6e43e1308d2513864485391df337e156d4b12f (patch)
treefdaf78e4283ec71bd2b35474bfc93aa84c108c0f
parent4da402695d2998b4735dd219b03848b47d2389cf (diff)
parent49386868de1cebebfb1e9f9527560e17197ad94f (diff)
downloadgit-3e6e43e1308d2513864485391df337e156d4b12f.zip
git-3e6e43e1308d2513864485391df337e156d4b12f.tar.gz
git-3e6e43e1308d2513864485391df337e156d4b12f.tar.bz2
Merge branch 'dt/initial-ref-xn-commit-doc' into maint
* dt/initial-ref-xn-commit-doc: refs: document transaction semantics
-rw-r--r--refs.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/refs.h b/refs.h
index 7a04077..19ebebc 100644
--- a/refs.h
+++ b/refs.h
@@ -109,6 +109,11 @@ extern int dwim_log(const char *str, int len, unsigned char *sha1, char **ref);
* If this succeeds, the ref updates will have taken place and
* the transaction cannot be rolled back.
*
+ * - Instead of `ref_transaction_commit`, use
+ * `initial_ref_transaction_commit()` if the ref database is known
+ * to be empty (e.g. during clone). This is likely to be much
+ * faster.
+ *
* - At any time call `ref_transaction_free()` to discard the
* transaction and free associated resources. In particular,
* this rolls back the transaction if it has not been
@@ -124,6 +129,13 @@ extern int dwim_log(const char *str, int len, unsigned char *sha1, char **ref);
*
* The message is appended to err without first clearing err.
* err will not be '\n' terminated.
+ *
+ * Caveats
+ * -------
+ *
+ * Note that no locks are taken, and no refs are read, until
+ * `ref_transaction_commit` is called. So `ref_transaction_verify`
+ * won't report a verification failure until the commit is attempted.
*/
struct ref_transaction;