Re: [ITCH] Specify refspec without remote
- From
Jeff King <peff@peff.net>
- Date
- Apr 10, 2013, 20:05 UTC
- Message-ID
- <20130410200548.GC24177@sigill.intra.peff.net>
- In-Reply-To
- <CALkWK0k44+VnrGTXESdap2nRomdYH8xwz_T2JdhYtSrPR+89sw@mail.gmail.com>
On Thu, Apr 11, 2013 at 01:23:57AM +0530, Ramkumar Ramachandra wrote:
Show 10 quoted lines
> Ramkumar Ramachandra wrote: > > git push -- master next; pushes to my current branch's > > branch.<name>.pushremote? Isn't that a disaster? > > Actually, branch.<name>.pushremote already breaks the current design > in a way, as Junio pointed out in a different email: a push.default > set to anything except "current" is already nonsensical. Why should > "matching" branches be pushed to the remote that my current branch > specifies? That might well have their own branch.<name>.pushremote > configured, which should be respected.
I'm not sure that it should be respected. "master" is short for "refs/heads/master:refs/heads/master", and does not mean "push master to where I have it configured to go" at all. That may be what the user means, but changing how "git push" works is going to create inconsistency with other cases.
Show 5 quoted lines
> We should fix this now. I think the fault lies in the rather old > design of push.default. Do you have any suggestions as what would > make sense here? Ultimately, I think a git push; needs to pick > remotes for each refspec separately. The orthogonal design is > definitely not right in my opinion.
Right, the example above might include multiple remotes if pushremote is respected. Or it might not come up with an answer at all for a tag. If you do:
git push -- v1.2.3 master
where does v1.2.3 go? To remote.pushdefault? That seems simple and consistent, as there is no ref-specific pushremote defined. But I'd guess that the user probably _wanted_ it to go to branch.master.pushremote.
> As the author of branch.<name>.pushremote, I apologize for not having > caught this earlier. I've been using push.default = current for a > long time, and don't often think about the other settings.
I don't think pushremote introduced the problem. It is much older than that, and dates back to respecting branch.*.remote at all for pushes, even though push.default=matching (and before we had push.default, it was always matching) does not have anything to do with the current branch.
-Peff