threads / patch / 37714

patchremote.c - Make remote definition require a url

Subject: [PATCH] remote.c - Make remote definition require a url

## tl;dr

3 messages between Oct 11, 2014 and Oct 14, 2014. Diffs are folded; open one to read it.

replies: 2people: 2as markdown or json

Mark Levedahl· Oct 11, 2014, 15:20 UTC · lore

Some options may be configured globally for a remote (e.g, tagopt). The presence of such options in a global config should not cause git remote or get fetch to believe that remote is configured for every repository. Change to require definition of remote.<foo>.url for the remote to be included in "git fetch --all" or "git remote update."

Signed-off-by: Mark Levedahl <mlevedahl@gmail.com>
---
 remote.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Show changes to remote.c +1 −1
diff --git a/remote.c b/remote.c
index ce785f8..1b08924 100644
--- a/remote.c
+++ b/remote.c
@@ -761,7 +761,7 @@ int for_each_remote(each_remote_fn fn, void *priv)
 	read_config();
 	for (i = 0; i < remotes_nr && !result; i++) {
 		struct remote *r = remotes[i];
-		if (!r)
+		if (!r || !r->url)
 			continue;
 		if (!r->fetch)
 			r->fetch = parse_fetch_refspec(r->fetch_refspec_nr,
-- 
2.1.2.2.0.14
Junio C Hamano· Oct 13, 2014, 17:19 UTC · re: Mark Levedahl · lore

Re: [PATCH] remote.c - Make remote definition require a url

Mark Levedahl <mlevedahl@gmail.com> writes:
> Some options may be configured globally for a remote (e.g, tagopt).

Or some remotes may have only pushurl and not url. "git remote" output for me has a few such remotes but wouldn't this patch break it?

If a caller that walks the list of remotes misbehaves only because it assumes that r->url always is always valid, isn't that assumption what needs to be fixed? for_each_remote() should be kept as a way to enumerate all the [remote "foo"], I would think.

Mark Levedahl· Oct 14, 2014, 01:05 UTC · re: Junio C Hamano · lore

Re: [PATCH] remote.c - Make remote definition require a url

On 10/13/2014 01:19 PM, Junio C Hamano wrote:
Show 15 quoted lines
> Mark Levedahl <mlevedahl@gmail.com> writes:
>
>> Some options may be configured globally for a remote (e.g, tagopt).
> Or some remotes may have only pushurl and not url.  "git remote"
> output for me has a few such remotes but wouldn't this patch break
> it?
>
> If a caller that walks the list of remotes misbehaves only because
> it assumes that r->url always is always valid, isn't that assumption
> what needs to be fixed?  for_each_remote() should be kept as a way
> to enumerate all the [remote "foo"], I would think.
>
>
>
>

As long as the rule is that for_each_remote will enumerate every remote that has anything defined at all, even if only in the global config outside of a user's control, I'm not really sure how to tell whether the missing url / pushurl / whatever is intentional, or a misconfiguration, so having the code complain that it didn't find what it wanted (the current condition) is probably no worse than the alternatives. Patch withdrawn.

Mark

← back to recent threads