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

Re: DWIM "git checkout frotz" to "git checkout -b frotz origin/frotz"

From
Jacob Helwig <jacob.helwig@gmail.com>
Date
Jun 6, 2010, 21:26 UTC
Message-ID
<AANLkTilvHl-8eA6CbEDs4ty3h0h670L_enGsXunHxaPE@mail.gmail.com>
In-Reply-To
<20100606173233.GA11041@localhost>
On Sun, Jun 6, 2010 at 10:32, Clemens Buchacher <drizzd@aon.at> wrote:
Show 18 quoted lines
> On Sun, Jun 06, 2010 at 09:59:08AM -0700, Jacob Helwig wrote:
>> On Sun, Jun 6, 2010 at 09:55, Clemens Buchacher <drizzd@aon.at> wrote:
>> >
>> > I argue that people are more likely to be surprised and confused by
>> > this feature rather than being accustomed to it already. I am also
>> > waiting to hear from someone who actively uses this feature.
>> >
>>
>> I am someone that "actively" uses this feature.  I will often have
>> repositories that I use on multiple machines, and will forget which
>> remote branches I have local tracking branches for, on which machines.
>>  I'll end up just doing `git checkout $random-branch`, thinking I'm on
>> one of the machines where I've already setup the local branch, and
>> find it quite handy that Git _does_ DWIM.
>
> I see. But would it be so terrible to have to type "git checkout -t
> origin/branch" instead?
>
Given that `git checkout branch` already exists & works: Yes.

You're talking about removing a feature, so (as already pointed out) there's a fairly high burden of proof to show that it's actually a mis-feature, that is so dangerous/confusing that it _needs_ to be removed.

> Also, isn't this more like "foretell what I really want" rather
> than "do what it means"? Who would guess that "git checkout
> $branch" means "create $branch tracking <random-remote>/$branch"?
>

This is very much "fortell what I really want", which is exactly what DWIM (Do What I Mean) means (as Sverre already pointed out). I'm not guessing that `git checkout $branch` means `git branch -t $branch origin/$branch && git checkout $branch`; I'm assuming that `git branch -t $branch origin/$branch` was already done at some point in the past, and Git is adding that bit in for me, which is what _I_ really meant to do.

> And this is exactly _why_ it can be marginally useful if the
> foretelling is correct, but all the more confusing if it's not.
>

Other than "unexpected success", how is the DWIM behavior confusing, given that it says exactly what it's doing when the DWIM behavior is invoked? I'm still not clear what the confusion you're referring to is on this one.

Previous: Sverre RabbelierNext: Clemens Buchacher
Message 12 of 34 in “DWIM "git checkout frotz" to "git checkout -b frotz origin/frotz"”
  1. Clemens BuchacherJun 5, 2010
  2. Sverre RabbelierJun 5, 2010
  3. Clemens BuchacherJun 5, 2010
  4. Sverre RabbelierJun 5, 2010
  5. Clemens BuchacherJun 5, 2010
  6. Nicolas PitreJun 5, 2010
  7. Jeff KingJun 6, 2010
  8. Clemens BuchacherJun 6, 2010
  9. Jacob HelwigJun 6, 2010
  10. Clemens BuchacherJun 6, 2010
  11. Sverre RabbelierJun 6, 2010
  12. Jacob HelwigJun 6, 2010
  13. Clemens BuchacherJun 7, 2010
  14. Jan KrügerJun 7, 2010
  15. Clemens BuchacherJun 7, 2010
  16. Johan HerlandJun 6, 2010
  17. Matthieu MoyJun 6, 2010
  18. Clemens BuchacherJun 6, 2010
  19. Miles BaderJun 7, 2010
  20. Clemens BuchacherJun 7, 2010
  21. Matthieu MoyJun 7, 2010
  22. Clemens BuchacherJun 7, 2010
  23. Bruce StephensJun 7, 2010
  24. Michael J GruberJun 8, 2010
  25. demerphqJun 8, 2010
  26. Michael J GruberJun 8, 2010
  27. Miles BaderJun 8, 2010
  28. Clemens BuchacherJun 8, 2010
  29. demerphqJun 8, 2010
  30. Matthieu MoyJun 8, 2010
  31. Miles BaderJun 8, 2010
  32. Jeff KingJun 8, 2010
  33. Clemens BuchacherJun 8, 2010
  34. Paolo BonziniJun 7, 2010

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.