Subject: Re: [RFC/PATCH] git push usability improvements and default change

From: Finn Arne Gangstad <[email-masked]>
Date: Thu, 12 Mar 2009 11:22:43 +0100

On Thu, Mar 12, 2009 at 12:01:09PM +0900, Nanako Shiraishi wrote:

[...]
> There can be two reasons you may want to give the branch a name other than 'next':
> 
> 1. Because you also have dschos-next that tracks remotes/dscho/next; or
> 
> 2. Because you also have junios-next2 that also tracks remotes/origin/next.

> The first case indicates that the project is using a workflow where
> each developer has his own publishing repository [1], and it is very
> unlikely that Finn Arne has push access to either your or
> Johannes'es public repositories.

No, think more of different repositories with different function, such
as "my-public", "my-group", "beta", "customers", "public" and so on.
You can have multiple repositories with different function. They (can)
have branches with the same name, but have different purposes. To
track more than one you _must_ rename at least one locally (and just
with two remotes "master" is going to give you some issues).

Maybe you want the name in the public repo to be different than the
name in your own repo.

[...]

> I don't understand how the new "--current" makes "sort-of" sense. It
> looks like it is making the command more complex and the only thing
> it does is to encourage a confused workflow.

The naming --current was not good, so I have changed it to --tracking
in my latest suggestion.  Why is it confused?  Why do I need to call
my branch locally the same as it is named remotely?  That does not
scale. Branch names are unique per repository, not globally.

I want to be able to "git pull" and then "git push --tracking" back to
the same branch, not push somewhere else. Curently this requires a
surprisingly complicated shellscript, and is not available from the
guis.

> [1] Your http://gitster.livejournal.com/30645.html showed different
> ways to collaborate very nicely. I think this is the third approach
> in your article.

The main problem with all these examples is that the underlying
assumption is that you can always use the same branch name locally and
remotely.  This just isn't always the case when you have many remotes,
and each remote repository has some implicit function (e.g. "beta",
"john", "graphics-group", "my-public", .....), and they have an active
"master" branch for example.

- Finn Arne