Re: Random thoughts on "upstream"
- From
Ramkumar Ramachandra <artagnon@gmail.com>
- Date
- May 23, 2013, 10:42 UTC
- Message-ID
- <CALkWK0m1x_qrJfQ2Xw3w_kVuM-JHERFukbfxHyR08ODvxysKzw@mail.gmail.com>
- In-Reply-To
- <7vfvxixoks.fsf@alter.siamese.dyndns.org>
Junio C Hamano wrote:
Show 9 quoted lines
> And that was done with extensivility your example implied in mind: > you may later be allowed to push other branches as well to origin. > That is why the refspec definition for 'origin' does not hardcode > the name of the branch you are permitted to push there at this > moment. The fact that hot-branch goes to origin is encapsulated in > the branch.hot-branch.pushremote. The rule, under which the name of > any branch that goes to the origin is renamed, is encapsulated in > remote.origin.push refspec (the introduction of the new mode > "push.default = single" is necessary to make this work).
My problem with this entire scheme _is_ the magic push.default = single. Currently, push.default only kicks in when no remote.<name>.push refspec is specified (in other words, it is a default value of remote.<name>.push for all remotes), and I don't think we should change this. If the user wants to configure the push refspec (either for rewriting, or for determining what to push), there is exactly one thing to change: remote.<name>.push. So I can have:
[remote "theodore"]
push = master
push = +puThis means that I will always push master without force and pu with force, irrespective of the branch I'm on.
[remote "origin"]
push = refs/heads/*:refs/heads/rr/*This means that I will always push all branches without force with rewriting, irrespective of the branch I'm on.
[remote "ram"]
push = HEAD:refs/heads/rr/%1This means that I will always push the current branch without force, with rewriting.
[remote "felipe"]
# emptyThis means that remote."felipe".push falls back to the refspec specified by push.default.
Isn't branch.<name>.push is completely unnecessary? Does this make sense to you? Isn't it more straightforward and general (how do I get a push.default = single on a per-remote basis) than your solution?