git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Pierre Habouzit <madcoder@debian.org>
Cc: git@vger.kernel.org
Subject: Re: git push (mis ?)behavior
Date: Thu, 27 Sep 2007 12:22:24 -0700	[thread overview]
Message-ID: <7v3awzvrpr.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <20070927130447.GH10289@artemis.corp> (Pierre Habouzit's message of "Thu, 27 Sep 2007 15:04:47 +0200")

Pierre Habouzit <madcoder@debian.org> writes:

> The real question is "what does users intend when they `git push`". In
> a git/kernel/... like model, you don't think the same than in a
> svn/cvs-like model. I mean, Junio or Linus likely don't push a lot to
> their public repository. It happens probably a couple of time per day.
> While I'm at work, it happens up way more frequentely, and I then want
> to lazily type `git push` and not `git push origin <somebranch>`. it's
> too long.
>
>   I'm not sure what we can do about it, but I'm pretty sure it bites a
> lot of people out there. For now I use this alias in my .gitconfig:
>
>   p=!git-push origin `git-symbolic-ref HEAD`
>
> but still, it feels really wrong to me. Not to mention that git-push(1)
> says that it has a --all option that in fact is the current default
> behavior, hence sounds pretty useless.

The default is not --all but "matching branches", iow, what you
have never published yet never goes out.

Having said that, I would agree that in some workflows "I am on
this branch and I would want to push only this branch" would be
the norm, and the norm even be "and this branch 'foo' is called
identically as 'foo' at the remote site as well".

Don't worry about me when discussing to change the default.
Myself, I also often push only one or two branches.  A typical
workflow for me while working on git.git is to prepare 'maint'
(if there are any changes) and 'master', push them (without
pushing 'next' and 'pu') to a private "build it to make sure"
repository I have at a k.org machine which runs RH, make sure
they are Ok, and then continue working on integrating 'next' and
'pu'.  At the end of the day, I push out all four integration
branches to a separate "publish" area, but even this one, I rely
on the explicit configuration (remote.<name>.push) to push out
only the integration branches and not other branches.

We would also want to have --mirror option that acts like --all
but removes the refs from the remote that do not exist anymore,
so we will be talking about updating "git push" in the near
future anyway.

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 am
not sure if it is sensible to make that the default (and
introduce --matching option to get the current behaviour) at
this point in 1.5.X series, but from the general usability point
of view, I would not object to demote 'matching' to optional and
make 'current only' the default in 1.6.X or later.

Thoughts?

  parent reply	other threads:[~2007-09-27 19:22 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-27 13:04 git push (mis ?)behavior Pierre Habouzit
2007-09-27 13:30 ` Wincent Colaiuta
2007-09-27 15:28   ` Benoit SIGOURE
2007-09-27 19:22 ` Junio C Hamano [this message]
2007-09-27 19:36   ` Pierre Habouzit
2007-09-28  6:52   ` Steffen Prohaska
2007-09-28  6:58     ` Pierre Habouzit
2007-09-28  9:26       ` Steffen Prohaska
2007-09-28  9:44         ` Junio C Hamano
2007-09-28 10:04           ` Steffen Prohaska
2007-09-28  7:07     ` Junio C Hamano
2007-09-28  9:11       ` Steffen Prohaska
2007-09-28 13:31         ` Johannes Schindelin
2007-10-09  5:05       ` Jan Hudec
2007-10-09  7:23         ` Steffen Prohaska
2007-09-28 12:38   ` Wincent Colaiuta
2007-10-03  5:10   ` Miles Bader
2007-10-03  5:39     ` Junio C Hamano
2007-10-03  6:47     ` Wincent Colaiuta
2007-10-03  8:32       ` Miles Bader
2007-10-03  7:35     ` Pierre Habouzit
2007-10-03  8:57       ` Miles Bader
2007-10-03  9:03         ` Pierre Habouzit
2007-10-03 10:25         ` Wincent Colaiuta
2007-10-03 10:49           ` Karl Hasselström
2007-10-03 11:08             ` Junio C Hamano
2007-10-03 11:22               ` Wincent Colaiuta
2007-10-03 13:14               ` Karl Hasselström
2007-10-03 15:27             ` Johannes Schindelin
2007-10-03 16:07               ` Karl Hasselström
2007-10-03 16:18                 ` Johannes Schindelin
2007-10-03 16:28                   ` Pierre Habouzit
2007-10-03 16:44                     ` Johannes Schindelin
2007-10-03 17:02                       ` Karl Hasselström
2007-10-04 14:47                         ` Steffen Prohaska
2007-10-04 15:54                           ` Wincent Colaiuta
2007-10-04 16:24                             ` Steffen Prohaska
2007-10-04 17:49                               ` Wincent Colaiuta
2007-10-03 16:26               ` Wincent Colaiuta
2007-10-03 11:10           ` Benoit SIGOURE

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7v3awzvrpr.fsf@gitster.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=madcoder@debian.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).