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

Re: [PATCH v3] Add push --set-upstream

From
Tay Ray Chuan <rctay89@gmail.com>
Date
Jan 16, 2010, 12:35 UTC
Message-ID
<20100116203557.95340c00.rctay89@gmail.com>
In-Reply-To
<1263633827-23720-1-git-send-email-ilari.liusvaara@elisanet.fi>
Hi,

On Sat, 16 Jan 2010 11:23:47 +0200 Ilari Liusvaara <ilari.liusvaara@elisanet.fi> wrote:

Show 6 quoted lines
> [snip]
> @@ -218,6 +218,7 @@ int cmd_push(int argc, const char **argv, const char *prefix)
>  		OPT_BOOLEAN( 0 , "thin", &thin, "use thin pack"),
>  		OPT_STRING( 0 , "receive-pack", &receivepack, "receive-pack", "receive pack program"),
>  		OPT_STRING( 0 , "exec", &receivepack, "receive-pack", "receive pack program"),
> +		OPT_BIT('u', "set-upstream", &flags, "Set upstream for git pull", TRANSPORT_PUSH_SET_UPSTREAM),
This line exceeds 80 characters.

Also, I think you should follow the case-style of the other option descriptions and s/Set(?= upstream)/set/.

> [snip]
> +static void set_upstreams(struct transport *trans, struct ref *refs,

I would prefer if you could follow the naming convention and say "transport" instead of truncating to "trans".

> +	int pretend)
> +{
> +	struct ref *i;
> +	for (i = refs; i; i = i->next) {
In most places, "ref" instead of "i" is used; ie.
	struct ref *ref;
	for (ref = refs; ref; ref = ref->next) {
		..
	}
Show 5 quoted lines
> [snip]
> +		/*
> +		 * Check suitability for tracking. Must be successful /
> +		 * alreay up-to-date ref create/modify (not delete).
> +		 */
s/alreay/already/.
> [snip]
> +		/* Chase symbolic refs (mainly for HEAD). */
Did you mean "Change" here?
Regarding the checking of ref->status here:
Show 8 quoted lines
> @@ -135,6 +136,53 @@ static void insert_packed_refs(const char *packed_refs, struct ref **list)
>  	}
>  }
>  
> [snip]
> +		if (i->status != REF_STATUS_OK &&
> +			i->status != REF_STATUS_UPTODATE)
> +			continue;

Is it possible to delegate this to push_had_errors(remote_refs) instead? We skip setting up upstream tracking when there are errors from pushing, so we don't have to check ref->status anymore.

(Note: this would skip setting up upstream when ref->status is 'none', in addition to 'ok' and 'uptodate', as you have it right now. I think this should be safe.)

@@ -1002,8 +1055,9 @@ int transport_push(struct transport *transport,
					verbose | porcelain, porcelain,
					nonfastforward);

-		if (flags & TRANSPORT_PUSH_SET_UPSTREAM)
-			set_upstreams(transport, remote_refs, pretend);
+		if (!push_had_errors(remote_refs) && 
+			(flags & TRANSPORT_PUSH_SET_UPSTREAM))
+			set_upstreams(transport, remote_refs, pretend);

		if (!(flags & TRANSPORT_PUSH_DRY_RUN)) {
			struct ref *ref;
			for (ref = remote_refs; ref; ref = ref->next)

(As a side note, if you apply this on top of 'tr/http-push-ref-status'
in 'pu', the result of push_had_errors() is saved in a variable
('err'), so you could just use it and not have to call push_had_errors
() again.)
-- 
Cheers,
Ray Chuan
Previous: Ilari LiusvaaraNext: Ilari Liusvaara
Message 2 of 11 in “Add push --set-upstream”
  1. Add push --set-upstreamIlari Liusvaara, Jan 16, 2010
  2. Tay Ray ChuanJan 16, 2010
  3. Ilari LiusvaaraJan 16, 2010
  4. Tay Ray ChuanJan 16, 2010
  5. Ilari LiusvaaraJan 16, 2010
  6. Tay Ray ChuanJan 16, 2010
  7. Tay Ray ChuanJan 16, 2010
  8. Jeff KingJan 16, 2010
  9. Tay Ray ChuanJan 16, 2010
  10. Junio C HamanoJan 16, 2010
  11. Tay Ray ChuanJan 16, 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.