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

Re: The git spring cleanup challenge

From
Đoàn Trần Công Danh <congdanhqx@gmail.com>
Date
Jun 1, 2021, 11:40 UTC
Message-ID
<YLYcnwZQAEoSQKsG@danh.dev>
In-Reply-To
<60b61089ba63d_e40ca20894@natae.notmuch>
On 2021-06-01 05:48:41-0500, Felipe Contreras <felipe.contreras@gmail.com> wrote:
Show 41 quoted lines
> Đoàn Trần Công Danh wrote:
> > On 2021-06-01 01:24:01-0500, Felipe Contreras <felipe.contreras@gmail.com> wrote:
> > > The premise is simple: git.git developers are experts in git, and therefore
> > > they have fine-tuned their ~/.gitconfig to a point that is pretty far
> > > from what any newcomer will experience for a long time.
> > > 
> > > How long can you survive with a pristine configuration?
> > > 
> > > Plenty of developers take many things in their configuration for
> > > granted, they forget what the default behavior is, or worse: they forget
> > > they actually have configured log.decorate, and are surprised when they
> > > discover the reason they could not reproduce a bug report.
> > 
> > OK, the person that forgot having log.decorate configured is me.
> 
> Right. That's just the most recent instance I could think of, but I'm
> sure similar versions have happened to all of us.
> 
> > > Now and then I cleanup my configuration to be reminded of that fact.
> > > 
> > > Anybody remembers merge.defaultToUpstream, and what `git merge` without
> > > arguments used to do? [1] What about sendemail.chainReplyTo? [2]
> > > 
> > > It's important that we force ourselves to experience what an
> > > unconfigured git setup looks like, even if it's just for a little bit.
> > > 
> > > So the challenge is this:
> > > 
> > >   1. Remove all the configuration that is not essential (just leave
> > >      user.name and user.email or equivalent)
> > 
> > How about alias? It's part of my muscle memory.
> 
> No aliases.
> 
> If a new user doesn't have them, neither should you.
> 
> All VCSs have default aliases, and I advocated for git to do the same
> [1], but it wasn't accepted.
> 
> The whole point is to suffer like them.
OK.
Show 16 quoted lines
> 
> > >   2. Pick 2 configurations you think you can't live without. You are not
> > >      allowed to change them afterwards.
> > 
> > Something is essential when working on constantly integration tree,
> > I don't want to make my life hard:
> > 
> > * rerere.enabled = true
> > * rerere.autoupdate = true
> 
> If the defaults make your life hard, then shouldn't we change the
> defaults?
> 
> For starters, which is the command you use? `git merge`? If so, maybe
> `git merge` should have a --rerere option to enable rerere. There are
> some --rerere-autoupdate, but no --rerere.

I think both pull, merge, rebase, cherry-pick, revert, checkout, switch, apply, am will be affected by rerere.

> Additionally, who doesn't want autoupdate when rerere is manually
> enabled?

Dun know. I guess someone applies other people patches with their rerere logs.

Show 14 quoted lines
> If we all want autoupdate enabled (at least I do), maybe the default
> should be flipped, so all you need in your configuration is:
> 
>   rerere.enabled = true
> 
> But, if we are already on this topic... who wants rerere disabled by
> default?
> 
> > Something is there to shut up advice, I can live without those
> > configuration value, though (I don't use git-pull these days, anyway):
> > 
> > * pull.rebase = false
> 
> Can you train your fingers to type `git pull --no-rebase` for a while?
I don't use git-pull nowaday, so, I don't care.
Show 22 quoted lines
> 
> > Working with patch based need:
> > 
> > * sendemail.smtpserver
> > * sendemail.smtpencryption
> > * sendemail.smtpuser
> > * credential.helper
> 
> You could use msmtp instead, but fine, let's make an exception for
> transmission of patches (credentials, SMTP, etc.) These are not options
> that can be changed in git.gt by default.
> 
> But only the essentials, no sendemail.confirm.
> 
> > My GnuPG key is Ed25519, and gpg v2 in my machine is named gpg2, so:
> > * gpg.program = gpg2
> 
> You could have an alias in your ~/bin directory:
> 
>   ln -s /usr/bin/gpg2 ~/bin/gpg
> 
> That way you don't need to configure every program.
Fair!
Show 12 quoted lines
> But fine, this is an exception too. The location of programs is not
> something that can be changed by default.
> 
> > And I would like to try new shiny features:
> > 
> > * feature.experimental = true
> 
> Interesting. I didn't know that existed, and I advocated for a
> similar configuration: core.mode [2].
> 
> But if most newcomers can live without it, I'm sure you can too for a
> bit.

The point of trying new shiny features is dogfooding ourselves and report bugs early, if any.

Show 11 quoted lines
> > >   3. Every day you can add 1 additional configuration (and update it the
> > >      next day).
> > >   4. The moment you add a 4th configuration you lose.
> > 
> > So, my baseline already requires 8 key-value pairs (ignoring alias and
> > pull.rebase). I'm lost already.
> 
> With the exceptions I think you only need these:
> 
>  * rerere.enabled = true
>  * rerere.autoupdate = true
OK, let's start there.
-- 
Danh
Previous: Felipe ContrerasNext: Felipe Contreras
Message 6 of 55 in “The git spring cleanup challenge”
  1. Felipe ContrerasJun 1, 2021
  2. AndyJun 1, 2021
  3. Felipe ContrerasJun 1, 2021
  4. Đoàn Trần Công DanhJun 1, 2021
  5. Felipe ContrerasJun 1, 2021
  6. Đoàn Trần Công DanhJun 1, 2021
  7. Felipe ContrerasJun 1, 2021
  8. Đoàn Trần Công DanhJun 1, 2021
  9. Felipe ContrerasJun 1, 2021
  10. Đoàn Trần Công DanhJun 2, 2021
  11. Felipe ContrerasJun 2, 2021
  12. Ævar Arnfjörð BjarmasonJun 3, 2021
  13. Felipe ContrerasJun 3, 2021
  14. Sergey OrganovJun 3, 2021
  15. Ævar Arnfjörð BjarmasonJun 3, 2021
  16. Felipe ContrerasJul 2, 2021
  17. Ævar Arnfjörð BjarmasonJul 2, 2021
  18. Felipe ContrerasJul 2, 2021
  19. David AguilarJun 1, 2021
  20. Junio C HamanoJun 1, 2021
  21. Junio C HamanoJun 1, 2021
  22. Felipe ContrerasJun 1, 2021
  23. Johannes SixtJun 2, 2021
  24. Felipe ContrerasJun 2, 2021
  25. Junio C HamanoJun 2, 2021
  26. Felipe ContrerasJun 2, 2021
  27. Đoàn Trần Công DanhJun 2, 2021
  28. Johannes SixtJun 2, 2021
  29. Felipe ContrerasJun 1, 2021
  30. Sergey OrganovJun 2, 2021
  31. Junio C HamanoJun 3, 2021
  32. Sergey OrganovJun 3, 2021
  33. Sergey OrganovJun 1, 2021
  34. Felipe ContrerasJun 1, 2021
  35. Sergey OrganovJun 2, 2021
  36. Felipe ContrerasJun 2, 2021
  37. Sergey OrganovJun 2, 2021
  38. Felipe ContrerasJun 2, 2021
  39. Sergey OrganovJun 2, 2021
  40. Junio C HamanoJun 3, 2021
  41. Felipe ContrerasJun 3, 2021
  42. Elijah NewrenJun 3, 2021
  43. Felipe ContrerasJun 3, 2021
  44. Elijah NewrenJun 3, 2021
  45. Felipe ContrerasJun 3, 2021
  46. Sergey OrganovJun 3, 2021
  47. Bagas SanjayaJun 2, 2021
  48. Felipe ContrerasJun 2, 2021
  49. Ævar Arnfjörð BjarmasonJun 3, 2021
  50. Felipe ContrerasJun 3, 2021
  51. Ævar Arnfjörð BjarmasonJun 3, 2021
  52. Phillip WoodJun 3, 2021
  53. Ævar Arnfjörð BjarmasonJun 3, 2021
  54. Phillip WoodJun 4, 2021
  55. Felipe ContrerasJun 3, 2021

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.