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

Re: Add configuration options for some commonly used command-line options

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Mar 20, 2017, 21:57 UTC
Message-ID
<CACBZZX59KXPOEjiUKtZLN6zjO_xpiWve7Xga6q-53J2LwvfZyw@mail.gmail.com>
In-Reply-To
<xmqq7f3jwzdo.fsf@gitster.mtv.corp.google.com>
On Mon, Mar 20, 2017 at 7:56 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 8 quoted lines
> One thing we may want to consider is why we have to even worry about
> scripts getting broken.  It is because people script around
> Porcelain, and that is because we have been too eager to improve
> Porcelain while neglecting plumbing for too long, to the point that
> some things are only doable with Porcelain (or doing the same with
> plumbing while possible are made too cumbersome).  I find it quite
> disturbing that nobody brought that up as an issue that needs to be
> addressed in this entire thread.

I very much doubt this describes anything but a tiny number of cases where people are using the porcelain as an API.

People aren't going through the process of trying to find out how to do something with a plumbing command, and then failing and falling back to a porcelain command because the plumbing isn't complete enough. They just use the porcelain because they're familiar with it and scripting it works for them.

E.g. I just looked at both major Emacs modes for git now, magit & vc-git, neither use "mktag", they just shell out to "git tag" for making tags. I just went to the git-scm.com website and looked at one open source GUI client I could "git clone", Giggle. It just shells out to e.g. "git commit" to make commits, not "git commit-tree". The other commands they're using are porcelain too. If they've used some plumbing it's probably by sheer accident. E.g. they use ls-tree which is plumbing, but don't use for-each-ref.

What's that Google SRE-ism again? Something like "People use the reliability you provide them with in practice, not what you advertise". Our porcelain is very stable, and so people use it as a stable API, and not just for trivial scripts.

Which I think has some big implications for how we maintain the porcelain & plumbing. Since people *will* use the porcelain, probably no matter what we advertise to them or how good the plumbing is.

Previous: Jeff KingNext: Ævar Arnfjörð Bjarmason
Message 11 of 19 in “Add configuration options for some commonly used command-line options (Was: [RFH] GSoC 2015 application)”
  1. Duy NguyenMar 19, 2017
  2. Matthieu MoyMar 19, 2017
  3. brian m. carlsonMar 19, 2017
  4. Ævar Arnfjörð BjarmasonMar 19, 2017
  5. Duy NguyenMar 20, 2017
  6. Brandon WilliamsMar 20, 2017
  7. Jeff KingMar 20, 2017
  8. Brandon McCaigMar 31, 2017
  9. Junio C HamanoMar 20, 2017
  10. Jeff KingMar 20, 2017
  11. Ævar Arnfjörð BjarmasonMar 20, 2017
  12. parse-options: add facility to make options configurableÆvar Arnfjörð Bjarmason, Mar 24, 2017
  13. Ævar Arnfjörð BjarmasonMar 25, 2017
  14. Jeff KingMar 25, 2017
  15. Ævar Arnfjörð BjarmasonMar 25, 2017
  16. Jeff KingMar 28, 2017
  17. WIP configurable options facilityÆvar Arnfjörð Bjarmason, Mar 28, 2017
  18. brian m. carlsonMar 25, 2017
  19. Duy NguyenMar 20, 2017

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.