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

Re: [PATCH 1/2] diff: document behavior of relative diff.orderFile

From
Jeff King <peff@peff.net>
Date
Jan 11, 2017, 14:41 UTC
Message-ID
<20170111144158.ef6kle3vw3ejgmut@sigill.intra.peff.net>
In-Reply-To
<xmqqtw96pno0.fsf@gitster.mtv.corp.google.com>
On Tue, Jan 10, 2017 at 02:15:11PM -0800, Junio C Hamano wrote:
Show 16 quoted lines
> Richard Hansen <hansenr@google.com> writes:
> 
> >> A related tangent.
> >>
> >> I wonder if anything that uses git_config_pathname() should be
> >> relative to GIT_DIR when it is not absolute.
> >
> > I think so.  (For bare repositories anyway; non-bare should be
> > relative to GIT_WORK_TREE.)  Perhaps git_config_pathname() itself
> > should convert relative paths to absolute so that every pathname
> > setting automatically works without changing any calling code.
> 
> Yes, that was what I was alluding to.  We might have to wait until
> major version boundary to do so, but I think that it is the sensible
> way forward in the longer term to convert relative to absolute in
> git_config_pathname().
Yeah, I'd agree.

I'm undecided on whether it would need to happen at a major version bump. The existing semantics are fairly insane, and would cause a lot of confusing breakages. We can imagine use of relative paths in a bare repository falls into one of a few categories:

  1. The user generally runs by "cd /path/to/bare.git && git ...". This
     would be unaffected, as relative and $GIT_DIR are the same.
  2. The user runs via "cd /path/to/bare.git/some-subdir". This would be
     broken, but I have trouble imagining that they really wanted to
     read something like "objects/orderfile".
  3. The user runs via "GIT_DIR=/path/to/bare.git" from various
     directories. This case is probably horribly broken, as things like
     diff.orderFile will complain if they ever run from a directory that
     doesn't have the order file.
  4. They run GIT_DIR=/path/to/bare.git from a consistent origin
     directory. This _does_ work, and we'd be breaking it. Though I kind
     of question why the config in $GIT_DIR is meant to apply to a file
     in a totally unrelated directory.
     I suppose somebody could be relying on the behavior where setting
     GIT_DIR uses the current directory as the working tree (i.e., if
     core.bare is "true" in bare.git). But then, we'd consider their
     working directory as the working tree and read from that anyway. So
     the behavior would stay the same.

So I dunno. I do hate to break even corner cases, but I'm having trouble imagining the scenario where somebody is actually using the current behavior in a useful way.

-Peff
Previous: Junio C HamanoNext: Junio C Hamano
Message 9 of 24 in “minor diff orderfile documentation improvements”
  1. 0/2 minor diff orderfile documentation improvementsRichard Hansen, Jan 10, 2017
  2. 1/2 diff: document behavior of relative diff.orderFileRichard Hansen, Jan 10, 2017
  3. Jeff KingJan 10, 2017
  4. Richard HansenJan 10, 2017
  5. Junio C HamanoJan 10, 2017
  6. Junio C HamanoJan 10, 2017
  7. Richard HansenJan 10, 2017
  8. Junio C HamanoJan 10, 2017
  9. Jeff KingJan 11, 2017
  10. Junio C HamanoJan 11, 2017
  11. 2/2 diff: document the pattern format for diff.orderFileRichard Hansen, Jan 10, 2017
  12. Junio C HamanoJan 10, 2017
  13. Richard HansenJan 11, 2017
  14. Junio C HamanoJan 11, 2017
  15. Richard HansenJan 11, 2017
  16. Junio C HamanoJan 11, 2017
  17. Richard HansenJan 11, 2017
  18. Junio C HamanoJan 11, 2017
  19. 0/2 diff orderfile documentation improvementsRichard Hansen, Jan 11, 2017
  20. 1/2 diff: document behavior of relative diff.orderFileRichard Hansen, Jan 11, 2017
  21. 2/2 diff: document the format of the -O (diff.orderFile) fileRichard Hansen, Jan 11, 2017
  22. 0/2 diff orderfile documentation improvementsRichard Hansen, Jan 15, 2017
  23. 1/2 diff: document behavior of relative diff.orderFileRichard Hansen, Jan 15, 2017
  24. 2/2 diff: document the format of the -O (diff.orderFile) fileRichard Hansen, Jan 15, 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.