Re: [PATCH 3/3] make git push --dry-run --porcelain exit with status 0 even if updates will be rejected
- From
Jeff King <peff@peff.net>
- Date
- Feb 5, 2010, 20:13 UTC
- Message-ID
- <20100205201325.GA25697@coredump.intra.peff.net>
- In-Reply-To
- <20100205200524.GA24027@cthulhu>
On Fri, Feb 05, 2010 at 03:05:24PM -0500, Larry D'Anna wrote:
Show 11 quoted lines
> > So shouldn't it just be: > > > > if (args->porcelain && args->dry_run) > > return 0; > > > > after we check for transport errors but before the loop that you are > > modifying. > > I don't know what the deal is with REF_STATUS_EXPECTING_REPORT, so I > didn't want to modify the behavior in the case that ref->status was > that. What does expecting report mean?
It means we told the other side we wanted to push that ref, and we expect it to give us a status report. Most refs are in that state for a short period, and then moved to their final state in builtin-send-pack.c:receive_status. But if we never get a status for that ref for some reason, then that could be the final state.
But more to the point, I don't think this bit of code should _have_ to care what it means. If there is a per-ref error with "push --dry-run --porcelain", it will be shown on that ref's output line. So I think your proposal should simply be "if dry-run and porcelain, don't bother looking at per-ref errors at all". You don't care what the per-ref error is; they are all in the same class from the perspective of this change.
-Peff