summaryrefslogtreecommitdiff
path: root/builtin/update-ref.c
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2020-11-13 08:12:36 (GMT)
committerJunio C Hamano <gitster@pobox.com>2020-11-16 21:44:01 (GMT)
commit262a4d28feb26aff89705b3254cdfc015eaa3ef9 (patch)
tree302223444885516c3e3a834f808a146b9d8d8f82 /builtin/update-ref.c
parentc0e172612754db0ed4c83d82b44fbc61f766ad6f (diff)
downloadgit-262a4d28feb26aff89705b3254cdfc015eaa3ef9.zip
git-262a4d28feb26aff89705b3254cdfc015eaa3ef9.tar.gz
git-262a4d28feb26aff89705b3254cdfc015eaa3ef9.tar.bz2
update-ref: allow creation of multiple transactions
While git-update-ref has recently grown commands which allow interactive control of transactions in e48cf33b61 (update-ref: implement interactive transaction handling, 2020-04-02), it is not yet possible to create multiple transactions in a single session. To do so, one currently still needs to invoke the executable multiple times. This commit addresses this shortcoming by allowing the "start" command to create a new transaction if the current transaction has already been either committed or aborted. Signed-off-by: Patrick Steinhardt <ps@pks.im> Reviewed-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/update-ref.c')
-rw-r--r--builtin/update-ref.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/builtin/update-ref.c b/builtin/update-ref.c
index 8a2df44..bb65129 100644
--- a/builtin/update-ref.c
+++ b/builtin/update-ref.c
@@ -446,7 +446,18 @@ static void update_refs_stdin(void)
state = cmd->state;
break;
case UPDATE_REFS_CLOSED:
- die("transaction is closed");
+ if (cmd->state != UPDATE_REFS_STARTED)
+ die("transaction is closed");
+
+ /*
+ * Open a new transaction if we're currently closed and
+ * get a "start".
+ */
+ state = cmd->state;
+ transaction = ref_transaction_begin(&err);
+ if (!transaction)
+ die("%s", err.buf);
+
break;
}