git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [RFC PATCH 1/1] push: make '-u' have default arguments

From
Junio C Hamano <gitster@pobox.com>
Date
Dec 3, 2021, 17:29 UTC
Message-ID
<xmqqtufpsikp.fsf@gitster.g>
In-Reply-To
<20211203081446.17596-1-chakrabortyabhradeep79@gmail.com>
Abhradeep Chakraborty <chakrabortyabhradeep79@gmail.com> writes:
Show 9 quoted lines
>> 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?

Previous: Abhradeep ChakrabortyNext: Abhradeep Chakraborty
Message 5 of 21 in “making --set-upstream have default arguments”
  1. 0/1 making --set-upstream have default argumentsAbhradeep Chakraborty, Dec 2, 2021
  2. 1/1 push: make '-u' have default argumentsAbhradeep Chakraborty, Dec 2, 2021
  3. Junio C HamanoDec 2, 2021
  4. Abhradeep ChakrabortyDec 3, 2021
  5. Junio C HamanoDec 3, 2021
  6. Abhradeep ChakrabortyDec 3, 2021
  7. Philip OakleyDec 3, 2021
  8. Abhradeep ChakrabortyDec 3, 2021
  9. Philip OakleyDec 3, 2021
  10. Abhradeep ChakrabortyDec 3, 2021
  11. 0/1 making --set-upstream have default argumentsAbhradeep Chakraborty, Dec 7, 2021
  12. 1/1 push: make '-u' have default argumentsAbhradeep Chakraborty, Dec 7, 2021
  13. Eric SunshineDec 7, 2021
  14. Abhradeep ChakrabortyDec 8, 2021
  15. 0/1 making --set-upstream have default argumentsAbhradeep Chakraborty, Dec 9, 2021
  16. 1/1 push: make '-u' have default argumentsAbhradeep Chakraborty, Dec 9, 2021
  17. 0/1 making --set-upstream have default argumentsAbhradeep Chakraborty, Jan 1, 2022
  18. 1/1 push: make 'set-upstream' have dafault argumentsAbhradeep Chakraborty, Jan 1, 2022
  19. Junio C HamanoJan 4, 2022
  20. Abhradeep ChakrabortyJan 4, 2022
  21. Junio C HamanoJan 4, 2022

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.