From: Jeff King Date: Tue, 17 Jan 2017 21:47:23 GMT Subject: Re: [PATCH 2/2] Be more careful when determining whether a remote was configured Message-ID: <20170117214723.p5rni6wwggei366j@sigill.intra.peff.net> In-Reply-To: <41c347f22c80e96c54db34baa739b6e37e268b61.1484687919.git.johannes.schindelin@gmx.de> On Tue, Jan 17, 2017 at 10:19:24PM +0100, Johannes Schindelin wrote: > One of the really nice features of the ~/.gitconfig file is that users > can override defaults by their own preferred settings for all of their > repositories. > > One such default that some users like to override is whether the > "origin" remote gets auto-pruned or not. The user would simply call > > git config --global remote.origin.prune true > > and from now on all "origin" remotes would be pruned automatically when > fetching into the local repository. > > There is just one catch: now Git thinks that the "origin" remote is > configured, as it does not discern between having a remote whose > fetch (and/or push) URL and refspec is set, and merely having > preemptively-configured, global flags for specific remotes. > > Let's fix this by telling Git that a remote is not configured unless any > fetch/push URL or refspect is configured explicitly. Hmm. Old versions of GitHub for Windows used to set fetch refspecs in the system gitconfig, for a similar purpose to what you want to do with remote.origin.prune. I notice here that setting a refspec _does_ define a remote. Is there a reason you drew the line there, and not at, say, whether it has a URL? -Peff