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

Re: index-pack outside of repository?

From
Jeff King <peff@peff.net>
Date
Dec 16, 2016, 01:37 UTC
Message-ID
<20161216013728.in2dazshtarrnnq3@sigill.intra.peff.net>
In-Reply-To
<xmqqshpou3wt.fsf@gitster.mtv.corp.google.com>
On Thu, Dec 15, 2016 at 04:13:38PM -0800, Junio C Hamano wrote:
Show 11 quoted lines
> > So I think complaining to the user is the right thing to do here. I
> > started to write a patch to have index-pack notice when it needs a repo
> > and doesn't have one, but the logic is actually a bit unclear.  Do we
> > need to complain early _just_ when --stdin is specified, or does that
> > miss somes cases?  Likewise, are there cases where --stdin can operate
> > without a repo? I couldn't think of any.
> 
> I think there are two and only two major modes; --stdin wants to put
> the result in the repository it is working on, while the other mode
> takes a filename to deposit the result in, so the latter does not
> technically need a repository.

OK. That's easy to check for, then. Reverse-engineering that logic from the actual calls in index-pack.c:final() is complicated. But certainly basing it on --stdin is what I would have expected.

Show 10 quoted lines
> > That strategy _might_ be a problem for some programs, which would want
> > to notice the issue early before doing work. But it seems like a
> > reasonable outcome for index-pack. Thoughts?
> 
> That is, once we know which codepaths should require a repository, I
> think it is reasonable to add a check that is done earlier than the
> place where we currently try to see where we have one (which could
> be deep in the callchain).  But we are all human and can miss things,
> so the BUG() thing is probably fine.  We are cooking it exactly because
> we would want to find such corner cases we missed, no?

Right, that was my original intent in adding the BUG(): to catch unhandled cases, and then do the appropriate thing earlier. I was just questioning whether the appropriate thing in some cases might be dying at the BUG(), just with a more friendly message. That has the benefit of being very easy to implement, and never wrong (e.g., forbidding a case that actually _doesn't_ need to look at the repo).

But if this case really is just "if (from_stdin)" that's quite easy, too.

-Peff
Previous: Junio C HamanoNext: Jeff King
Message 3 of 14 in “index-pack outside of repository?”
  1. Jeff KingDec 15, 2016
  2. Junio C HamanoDec 16, 2016
  3. Jeff KingDec 16, 2016
  4. Jeff KingDec 16, 2016
  5. 1/3 t5000: extract nongit function to test-lib-functions.shJeff King, Dec 16, 2016
  6. 2/3 index-pack: complain when --stdin is used outside of a repoJeff King, Dec 16, 2016
  7. 3/3 t: use nongit() function where applicableJeff King, Dec 16, 2016
  8. Junio C HamanoDec 16, 2016
  9. Junio C HamanoDec 16, 2016
  10. Junio C HamanoDec 16, 2016
  11. Jeff KingDec 16, 2016
  12. Junio C HamanoDec 16, 2016
  13. Junio C HamanoDec 16, 2016
  14. Jeff KingDec 16, 2016

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.