Re: git push (mis ?)behavior

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Sep 28, 2007, at 8:58 AM, Pierre Habouzit wrote:

On Fri, Sep 28, 2007 at 06:52:47AM +0000, Steffen Prohaska wrote:

On Sep 27, 2007, at 9:22 PM, Junio C Hamano wrote:


So what's the desired semantics?

The current semantics is:

  "git push" says "you do not say to which repository?" and
  consults "branch.<current>.remote" but defaults to 'origin'
  if unconfigured.

  "git push <name>" (or using the <name> determined as above)
  says "you do not say which branches?" and consults
  "remote.<name>.push" to find branches to push out, but
  defaults to 'matching branches' if unconfigured.

What you would want to change is the fallback behaviour for
unconfigured "remote.<name>.push".  I think it is sensible to
have an option to make it push only the current branch.

I'm not sure that changing the fallback behaviour for unconfigured
"remote.<name>.push" is sufficient.

When "remote.<name>.push" is set I'd expect "git push" to
choose only the 'right' remote.<name>.push lines, that is
the lines that have the current branch as the local ref.
"git push" would only push the current branch, which could be pushed
to 0 or more branches on the remote side. If no "remote.<name>.push"
contains the current branch as a local ref nothing would happen
(maybe a warning?). If several "remote.<name>.push" have the current
branch as the local ref the branch would be pushed to several
remote branches. But other branches than the current branch
would _never_ be pushed if no argument is given to 'git push'.

I'm not really sure that it makes sense, as by default, git push won't
create a new remote ref. So unless you have a branch that matches some
remote ref, but that you never want to push, even when on it and typing
git push... there is nothing that could happen by mistake.

So if you don't want to push such a branch, ever, then you should IMHO
not name it in a way that it matches a refspec in the first place, and
be safe.

I could have a couple of local branches typically pushed to a couple of
remote branches. "git push origin" would update all remote refs.

But I may also be interested to push only the current branch I'm working
on. I may also have some pending fixes on another branch that should not
be pushed now. Currently I need to do "git push origin <current>:<someremote>".

Let me put it as a question: How can I push changes from the current
branch to all remote refs it is configured to push to via "remote.<name>.push"
without pushing anything else at the same time?

	Steffen



-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux