Abhradeep Chakraborty <chakrabortyabhradeep79@xxxxxxxxx> writes: >> One thing that bothers me is that unlike your assumption, not >> everybody uses push.default set to simple or upstream. I am not >> convinced that the "git push -u" that defaults to do the 'current' >> push with TRANSPORT_PUSH_SET_UPSTREAM for them is an improvement >> for them. > > May be you're right. It may not be an improvement for all. But I > think they also would be happy seeing this 'default' case of > 'set-upstream'. Not at all. The argument for the "good" case is for "simple" or "current" users, they want their "git push" without repo and branch arguments to push their current branch to the branch with the same name at the default remote repository, and if we arrange "git push -u" to do the sameand set up "branch.$current.merge", they will find it convenient. The same reasoning applies for other users who do *not* want their "git push" without repo and branch arguments to push as if they are doing the push.default=current push. If we make "git push -u" push the current (and only the current) branch to the branch of the same name at the default remote repository by overwriting argv[] like the patch under discussion does, we would be giving these users a convenient way to do what they do not want to do. Besides, I think with the current code $ git -c push.default=matching push -u already does the right thing by pushing the matching branches and sets up upstream for the branches that get pushed without the patch in question. With the patch, because it blindly mucks with argv[] to force pushing only the current branch to the default remote, the established expectation by existing users is broken. That of course is not an improvement but actively hurts them. We shouldn't be making it easier for our users to hurt themselves. So, no. The patch in its current form is totally unacceptable. Shouldn't the rule be something like "if 'git push $args' (where $args may be nothing, or any options other than '-u') pushes a branch (or a set of branches) to a repository, 'git push -u $args' (with the same $args) should set the branch.*.{remote,merge} for the branch(es) to the same repository" for the introduction of default to be truly an improvement? Or is it too strict and makes the rule not to trigger even for the intended audience?