`git push --porcelain` has no effect when deleting a ref which does not exist
- From
Xavier Morel <xmo@odoo.com>
- Date
- Aug 5, 2026, 07:19 UTC
- Message-ID
- <27d95520-409e-4d1b-b8b1-37a910bff604@odoo.com>
Using `push --delete --porcelain` with refs which are extant correctly outputs the relevant information in the documented format:
- :refs/heads/<branch1> [deleted] - :refs/heads/<branch2> [deleted]
However doing the same with refs which don't exist on the remote (e.g. because of a concurrent deletion) has the error written out in human-targeted text:
error: unable to delete '<branch1>': remote ref does not exist error: unable to delete '<branch2>': remote ref does not exist
I would have expected something along the lines of:
! :refs/heads/<branch> [remote failure]
which would be machine-readable as documented for the `--porcelain` flag. Was that intended or is it just something that fell through the cracks of code convolution?