Subject: Re: [RFC] [PATCH] remote: add new --fetch option for set-url

From: Jeff King <[email-masked]>
Date: Wed, 19 Nov 2014 14:08:00 -0500

On Wed, Nov 19, 2014 at 04:18:02PM +0100, Peter Wu wrote:

> git remote set-url knew about the '--push' option to update just the
> pushurl, but it does not have a similar option for "update fetch URL and
> leave whatever was in place for the push URL".

Isn't that what:

  git remote set-url foo new-fetch-url

does already? It affects only the "url" setting, which is the de-facto
fetch setting (it is _also_ the push setting if there is no pushurl
defined).

You gave this example:

>     git remote add gh [email-masked]:Lekensteyn/git.git
>     # Avoid needing SSH for pulling from a repo, so change fetch URL
>     git remote set-url https://github.com/Lekensteyn/git.git
>     # Hmm, the fetch URL got changed too, let's fix that.
>     git remote add --push gh [email-masked]:Lekensteyn/git.git

But here you do not have a pushurl defined in the first place. So I
guess this is really just a shortcut for swapping the two, like:

  git remote set-url --push gh $(git config remote.gh.url)
  git remote set-url gh new-fetch-url

I dunno. I guess that is more convenient, but it seems like a lot of
code for a very marginal use case. But more importantly, I'm a little
worried that the presence of --fetch creates confusion about what
set-url without a --fetch or --push does. That is, it implies to me
that:

  git remote add gh old-url
  git remote set-url gh --push push-url
  git remote set-url gh new-url

would replace both the "url" _and_ "pushurl" values in the third step,
since we did not specify --fetch.  But it is in fact identical whether
you run it with "--fetch" or not.  That is, it creates a weirdly
non-orthogonal interface.

-Peff