git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <bonzini@gnu.org>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, Finn Arne Gangstad <finnag@pvv.org>
Subject: Re: [PATCH RFC 0/8] introduce 'git remote add --push' and 'git clone --push'
Date: Tue, 21 Jul 2009 12:33:54 +0200	[thread overview]
Message-ID: <4A659992.4020906@gnu.org> (raw)
In-Reply-To: <7vprbvt30u.fsf@alter.siamese.dyndns.org>


> If I have a local branch X, is it conceivable that if I ever want to push
> it out to elsewhere on a regular basis, I would likely to push it to the
> same branch at the same remote?

Yes.  The exception could be if you push to multiple remotes---but in 
that case, you have to issue multiple push commands anyway.  X -> (R,Y) 
is not a function, but (X,R) -> Y is.

> Are these all?  What I am trying to get at is if we can tweak the rules
> without introducing too much configuration variables to cover all these
> cases.
>
> Traditionally, we said:
>
>      $ git push $there $ref
>
> is _always_ a shorthand for
>
>      $ git push $there $ref:$ref
 >
> If we somehow tweak
> this "$ref is a shorthand for $ref:$ref" rule to account for the tracking
> branch.*.merge gives us, perhaps we can make the push easier to use.

This is nice indeed.  My questions are:

1) can we assume backwards compatibility is not a problem?  Or, in other 
words, would this be 1.6.5 or 1.7.0 material?  In the past, the list has 
usually been very cautious about that, but if there's good reasons I 
guess the answer can be "yes".

>   (4) "git push" is a synonym for "git push R" where R is the value of
>       branch.X.remote, or "origin" if there is no such configuration.  This
>       will in turn trigger rule (1) above.
>
>       We could optionally make it a synonym for "git push X" (where X is
>       the name of the current branch), which would invoke rule (3) above,
>       which in turn would invoke rule (2) above.  Perhaps "push only the
>       current branch" option in the configuration, or "git push HEAD" from
>       the command line, would trigger this alternate behaviour.

[i.e., looking up branch.*.remote for the current branch].

2) if I understand correctly, then "git push HEAD" would behave like 
push.default=tracking rather than push.default=current.  If so, how do 
you provide push.default=current behavior?  (Or maybe you don't care).

Would this apply to remote.*.push = HEAD too?  (I think so).  Are the 
backward compatibility issues stronger in this case?  (I also think so).

3) if the previous item turns out to be a problem, should we invent a 
new kind of refspec?  "HEAD:" is free to use, is it a good idea?  (I 
don't like it).

4) From an implementation point of view, how well will it fit the 
existing code, or rather will it have to be special-cased all over the 
place?  I already didn't like the single special case I have in the "git 
push --current" patch, though I think it's unavoidable.

> I think one of the workflows quoted as the original motivation of Finn
> Arne's series that added push.default also falls naturally out of this.

That's true, and I actually liked the idea very much.  The fact that it 
raises many questions is not necessarily a point down---adding new 
configuration keys is definitely simpler to flesh out, but it may be 
that it only reaches a local maximum of simplicity/expressiveness.  In 
my case the combination refspec/autosetuppush/pushHeadOnly is very 
expressive, but it requires to be wrapped by porcelain "git remote 
add"/"git clone" for the average user.

In the past I've seen the development of git follow the line of adding 
more knobs to allow the experts to tweak them, but that could also be a 
byproduct of the audience that this ML reaches.

In this case, I think the choice depends on how much effort can be 
invested in answering the above questions.

Paolo

  reply	other threads:[~2009-07-21 10:35 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-20 17:49 [PATCH RFC 0/8] introduce 'git remote add --push' and 'git clone --push' Paolo Bonzini
2009-07-20 17:49 ` [PATCH RFC 1/8] reintroduce PUSH_DEFAULT_UNSPECIFIED Paolo Bonzini
2009-07-20 17:49 ` [PATCH RFC 2/8] push: add push.default = mirror Paolo Bonzini
2009-07-20 20:46   ` Junio C Hamano
2009-07-20 21:14     ` Paolo Bonzini
2009-07-20 21:34       ` Junio C Hamano
2009-07-20 21:36         ` Paolo Bonzini
2009-07-20 17:49 ` [PATCH RFC 3/8] git remote add: refactor configuration Paolo Bonzini
2009-07-20 17:49 ` [PATCH RFC 4/8] git remote add: add --push option Paolo Bonzini
2009-07-20 17:49 ` [PATCH RFC 5/8] clone: refactoring of building the fetch refspec Paolo Bonzini
2009-07-20 17:49 ` [PATCH RFC 6/8] clone: use setup_remote_config Paolo Bonzini
2009-07-20 17:49 ` [PATCH RFC 7/8] config: add git_config_norepo Paolo Bonzini
2009-07-20 17:49 ` [PATCH RFC 8/8] clone: add --push option Paolo Bonzini
2009-07-20 22:15 ` [PATCH RFC 0/8] introduce 'git remote add --push' and 'git clone --push' Junio C Hamano
2009-07-21 10:33   ` Paolo Bonzini [this message]
2009-07-21 21:00     ` Junio C Hamano

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

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

  git send-email \
    --in-reply-to=4A659992.4020906@gnu.org \
    --to=bonzini@gnu.org \
    --cc=finnag@pvv.org \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /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.
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 NNTP newsgroup(s).