diff options
| author | Patrick Steinhardt <ps@pks.im> | 2020-11-13 09:12:36 +0100 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2020-11-16 13:44:01 -0800 |
| commit | 262a4d28feb26aff89705b3254cdfc015eaa3ef9 (patch) | |
| tree | 302223444885516c3e3a834f808a146b9d8d8f82 /builtin/update-ref.c | |
| parent | c0e172612754db0ed4c83d82b44fbc61f766ad6f (diff) | |
| download | git-262a4d28feb26aff89705b3254cdfc015eaa3ef9.tar.gz | |
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.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/builtin/update-ref.c b/builtin/update-ref.c index 8a2df4459c..bb65129012 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; } |
