git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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, 19:56 UTC
Message-ID
<20100205195644.GE24474@coredump.intra.peff.net>
In-Reply-To
<1265398462-17316-3-git-send-email-larry@elder-gods.org>
On Fri, Feb 05, 2010 at 02:34:22PM -0500, Larry D'Anna wrote:
Show 16 quoted lines
> diff --git a/builtin-send-pack.c b/builtin-send-pack.c
> index 76c7206..dfd7470 100644
> --- a/builtin-send-pack.c
> +++ b/builtin-send-pack.c
> @@ -478,6 +478,11 @@ int send_pack(struct send_pack_args *args,
>  		return ret;
>  	for (ref = remote_refs; ref; ref = ref->next) {
>  		switch (ref->status) {
> +		case REF_STATUS_REJECT_NONFASTFORWARD:
> +		case REF_STATUS_REJECT_NODELETE:
> +			if (args->porcelain && args->dry_run)
> +				break;
> +			return -1;
>  		case REF_STATUS_NONE:
>  		case REF_STATUS_UPTODATE:
>  		case REF_STATUS_OK:

Why just these two status flags? Based on your reasoning elsewhere, I would assume the logic should be:

  - if we had some transport-related error, return failure
  - if not, then return success, as any ref's failure is already
    indicated in the porcelain output
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.

Show 11 quoted lines
> -static int push_had_errors(struct ref *ref)
> +static int push_had_errors(struct ref *ref, int flags)
>  {
>  	for (; ref; ref = ref->next) {
>  		switch (ref->status) {
> +		case REF_STATUS_REJECT_NONFASTFORWARD:
> +		case REF_STATUS_REJECT_NODELETE:
> +			if (flags & TRANSPORT_PUSH_DRY_RUN && flags & TRANSPORT_PUSH_PORCELAIN)
> +				break;
> +			else
> +				return 1;
Ditto here.
-Peff
Previous: Larry D'AnnaNext: Larry D'Anna
Message 8 of 14 in “fix an error message in git-push so it goes to stderr”
  1. fix an error message in git-push so it goes to stderrLarry D'Anna, Feb 5, 2010
  2. Jeff KingFeb 5, 2010
  3. 1/3 fix an error message in git-push so it goes to stderrLarry D'Anna, Feb 5, 2010
  4. 2/3 silence human readable info messages going to stderr from git push --porcelainLarry D'Anna, Feb 5, 2010
  5. Junio C HamanoFeb 5, 2010
  6. Larry D'AnnaFeb 5, 2010
  7. 3/3 make git push --dry-run --porcelain exit with status 0 even if updates will be rejectedLarry D'Anna, Feb 5, 2010
  8. Jeff KingFeb 5, 2010
  9. Larry D'AnnaFeb 5, 2010
  10. Jeff KingFeb 5, 2010
  11. Larry D'AnnaFeb 5, 2010
  12. Jeff KingFeb 5, 2010
  13. Larry D'AnnaFeb 5, 2010
  14. Jeff KingFeb 5, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.