From: Jeff King Date: Fri, 05 Feb 2010 20:13:25 GMT Subject: Re: [PATCH 3/3] make git push --dry-run --porcelain exit with status 0 even if updates will be rejected 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: > > 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