Tao Klerks <tao@xxxxxxxxxx> writes: > My apologies for the self-reply, I did find a workaround here: > > git -c remote.origin.url log SOME_HASH_NOT_IN_REFSPEC > > I don't understand what's happening here at all, because setting > "remote.origin.url" to "True" in this way works to prevent the > normally configured URL from kicking in, ... Interesting. This happens inside remote.c:handle_config() where git_config_string() is used to reject a non-string value given to the "remote.<name>.url" variable and abort the process to read from the configuration file by returning -1 and causes whoever uses that configuration value to die. As the command line configuration is read first, aborting the configuration reader early would mean that the configured values would not even be read. I am not sure why this does not cause the entire thing to die, though. It requires further digging, for which I do not have time for right now.. > ... but setting a different value > (or empty value) does not. Most likely, this is because you are giving a syntactically correct value so the usual "last one wins" logic kicks in. In hindsight, I think (1) the first one should probably fail the "git log" process (not just the lazy fetch subprocess), and (2) there should be an explicit way, e.g. giving an empty string, to "clear" the list of .url accumulated so far. (2) may look something silly like this: remote.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git c/remote.c w/remote.c index 0764fca0db..ecc146856a 100644 --- c/remote.c +++ w/remote.c @@ -64,12 +64,22 @@ static const char *alias_url(const char *url, struct rewrites *r) static void add_url(struct remote *remote, const char *url) { + if (!*url) { + remote->url_nr = 0; + return; + } + ALLOC_GROW(remote->url, remote->url_nr + 1, remote->url_alloc); remote->url[remote->url_nr++] = url; } static void add_pushurl(struct remote *remote, const char *pushurl) { + if (!*pushurl) { + remote->pushurl_nr = 0; + return; + } + ALLOC_GROW(remote->pushurl, remote->pushurl_nr + 1, remote->pushurl_alloc); remote->pushurl[remote->pushurl_nr++] = pushurl; }