Junio C Hamano wrote: > I am not sure what you mean by artificial. By artificial, I mean that the precondition is absolutely unnecessary for the code following it to work. The precondition was introduced in a separate commit, specifically denying one usecase because the author (you) thought that made sense. > If you have push.default set upstream or simple, then a push run > while on the branch 'foo' will figure out what happens when you do a > fetch by looking at 'branch.foo.merge' to find the branch we are set > to integrate from 'branch.foo.remote' remote. The simple further > says that branch name must be the same as 'foo'. I understand this perfectly well, as evidenced by the tests I've written out in 4/4. > And that is what setup_push_UPSTREAM() is designed to do. Rejecting > a call that breaks the precondition is perfectly the right thing to > do: if you set to push to "upstream" and if you are trying to push > to a different remote, for example. > > The triangle topic changed the precondition without updating the > logic to check it, which was the bug, not the original check. Did I claim otherwise? :) The topic is about fixing a bug introduced by rr/triangle. > I actually am OK with 'upstream' that rejects triangular, while > making 'simple' do something different [*1*]. Okay, so you haven't outlined a solution either. Like I said in the cover-letter, I've spent hours breaking my head and can't figure out a better solution. The bigger problem is that upstream/ simple were designed with only central workflows in mind. How do we deal with it now? Yes, upstream/ simple work only when @{u} resolves, and I haven't changed this (because we don't have a well-defined meaning for what branch.<name>.merge without a branch.<name>.remote means). My argument is very simple: no push.default mode should not dictate the push destination; only the push refspec. What makes sense to the user is an upstream/ simple that works as expected with pushdefault: do the tests I've outlined in 4/4 not make sense? *scratches head* I don't understand why upstream/ simple should _not_ push to a different destination from the one being merged from. I'll repeat: push source/ destination is orthogonal to push refspec, and push.default modes dictate the refspec. -- 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