Subject: Re: [PATCH 0/4] Support triangular workflows

From: Marc Branchaud <[email-masked]>
Date: Mon, 18 Mar 2013 11:55:56 -0400

On 13-03-18 10:25 AM, Jeff King wrote:
> On Mon, Mar 18, 2013 at 06:46:11PM +0530, Ramkumar Ramachandra wrote:
> 
>> I've put off implementing remote.default corresponding to
>> remote.pushdefault, as Jeff suggested in [1], because it's currently
>> not an itch; apart from the obvious symmetry, I don't know what
>> purpose it serves: why would anyone want to fetch from a remote other
>> than origin by default?  Why wouldn't they simply swap that remote's
>> name with "origin"?  However, it's a nice thing to have for symmetry,
>> and it should be trivial to implement: any interested person is
>> welcome to pick it up.
> 
> Yeah, I agree that it does not have much point, aside from people who
> have an unreasonable aversion to using the word "origin". There was a
> series posted last summer to add remote.default:
> 
>   http://article.gmane.org/gmane.comp.version-control.git/201065
> 
> It ended up stalled and never got merged. I think the main impetus was
> that "git clone -o foo" should leave "foo" in remote.default (of course,
> that still leaves unanswered why anyone would really want to use "-o
> foo" in the first place).

I'm the guy who dropped the ball on that series.  I still intend to pick it
up (honest!) but I just haven't had the time.

The impetus was originally getting relative submodule paths to work on
detached HEADs [1].  My patch for that doesn't work when someone does "clone
-o", because various parts of git assume there's a remote named "origin".
The discussion led to the idea of using the remote name specified during the
initial clone, and implementing that as a remote.default config value.

As for why "clone -o" exists, it was added in v1.1.0:

    commit e6c310fd0d7384973efc6b1d5999a5e8a5b2f3bd
    Author: Johannes Schindelin <[email-masked]>
    Date:   Thu Dec 22 23:37:24 2005 +0100

    git-clone: Support changing the origin branch with -o

    Earlier, git-clone stored upstream's master in the branch named 'origin',
    possibly overwriting an existing such branch.

    Now you can change it by calling git-clone with '-o <other_name>'.

    [jc: added ref format check, subdirectory safety, documentation
     and usage string.]

    Signed-off-by: Johannes Schindelin <[email-masked]>
    Signed-off-by: Junio C Hamano <[email-masked]>

It sounds like the original need for the -o option is no longer pertinent.
OTOH, for folks who deal with several remotes it's nice to name them, and
"origin" isn't necessarily a useful or intuitive name.

		M.

[1] http://thread.gmane.org/gmane.comp.version-control.git/200145