update-ref: fix streaming of status updates
commitefa3d64ce86a600563c8bf909c46dd0985ee6c11
authorPatrick Steinhardt <ps@pks.im>
Fri, 3 Sep 2021 09:06:37 +0000 (3 11:06 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 3 Sep 2021 18:35:15 +0000 (3 11:35 -0700)
treead4c6667386cccdacad27ee6adddae0cb4ddf43c
parent225bc32a989d7a22fa6addafd4ce7dcd04675dbf
update-ref: fix streaming of status updates

When executing git-update-ref(1) with the `--stdin` flag, then the user
can queue updates and, since e48cf33b61 (update-ref: implement
interactive transaction handling, 2020-04-02), interactively drive the
transaction's state via a set of transactional verbs. This interactivity
is somewhat broken though: while the caller can use these verbs to drive
the transaction's state, the status messages which confirm that a verb
has been processed is not flushed. The caller may thus be left hanging
waiting for the acknowledgement.

Fix the bug by flushing stdout after writing the status update. Add a
test which catches this bug.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/update-ref.c
t/t1400-update-ref.sh