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

Re: [PATCH 0/5] promise: introduce promises to track success or error

From
Patrick Steinhardt <ps@pks.im>
Date
Feb 20, 2024, 12:19 UTC
Message-ID
<ZdSYxF3Hd6Zqt3Wd@tanuki>
In-Reply-To
<70a81f5a-32d8-4517-83ea-8019be5f97d5@gmail.com>
On Tue, Feb 20, 2024 at 10:53:06AM +0000, Phillip Wood wrote:
Show 25 quoted lines
> Hi Peff
> 
> On 20/02/2024 02:57, Jeff King wrote:
> > On Mon, Feb 19, 2024 at 02:25:29PM +0000, Phillip Wood wrote:
> > 
> > > I'm sure this has been discussed in the past but I didn't manage to turn
> > > anything up with a quick search of the archive on lore.kernel.org.
> > 
> > There's some discussion in this sub-thread:
> > 
> >    https://lore.kernel.org/git/20171103191309.sth4zjokgcupvk2e@sigill.intra.peff.net/
> > 
> > that also references this earlier thread:
> > 
> >    https://lore.kernel.org/git/20160927191955.mympqgylrxhkp24n@sigill.intra.peff.net/
> 
> Thanks for digging up those links
> 
> > I still think this is a reasonable way to go. At one point I had a
> > proof-of-concept conversion of some of the ref code, but I don't think I
> > have it any more.
> 
> Ah, that's interesting - the ref transaction functions already take a struct
> strbuf to populate with an error message so maybe that would be a simple
> place to start with a conversion to an error struct.

I would certainly welcome such a change. It might make sense to wait a bit until the reftable dust has settled, but once that code has landed I'd be quite happy to see improvements to our error handling.

While we're already at it throwing ideas around, I also have to wonder whether this would be a long-term solution towards computer-friendly errors. One of the problems we quite frequently hit in Gitaly is that we are forced to parse error messages in order to figure out why exactly something has failed. Needless to say, this is quite fragile and also feels very wrong.

Now if we had a more structured way to pass errors around this might also enable us to convey more meaning to the caller of Git commands. In a hypothetical world where all errors were using an explicit error type, then this error type could eventually become richer and contain more information that is relevant to the calling script. And if such rich error information was available, then it would not be that far fetched to ask Git to emit errors in a computer-parsable format like for example JSON.

Patrick
Previous: Phillip WoodNext: Junio C Hamano
Message 10 of 13 in “promise: introduce promises to track success or error”
  1. 0/5 promise: introduce promises to track success or errorPhilip Peterson via GitGitGadget, Feb 18, 2024
  2. 1/5 promise: add promise pattern to track success/error from operationsPhilip Peterson via GitGitGadget, Feb 18, 2024
  3. 3/5 apply: update t4012 test suitePhilip Peterson via GitGitGadget, Feb 18, 2024
  4. 2/5 apply: use new promise structures in git-apply logic as a proving groundPhilip Peterson via GitGitGadget, Feb 18, 2024
  5. 4/5 apply: pass through quiet flag to fix t4150Philip Peterson via GitGitGadget, Feb 18, 2024
  6. 5/5 am: update test t4254 by adding the new error textPhilip Peterson via GitGitGadget, Feb 18, 2024
  7. Phillip WoodFeb 19, 2024
  8. Jeff KingFeb 20, 2024
  9. Phillip WoodFeb 20, 2024
  10. Patrick SteinhardtFeb 20, 2024
  11. Junio C HamanoFeb 20, 2024
  12. Jeff KingFeb 21, 2024
  13. PhilipMar 12, 2024

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.