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

Re: [PATCH 1/3] make_absolute_path: Don't try to copy a string to itself

From
Carlos Martín Nieto <cmn@elego.de>
Date
Mar 16, 2011, 14:49 UTC
Message-ID
<1300286976.7214.27.camel@bee.lab.cmartin.tk>
In-Reply-To
<AANLkTimQ81mwYhWLzGunimQzapEUkMmvKj47PuPWPgm0@mail.gmail.com>
On mié, 2011-03-16 at 21:16 +0700, Nguyen Thai Ngoc Duy wrote:
Show 18 quoted lines
> 2011/3/16 Carlos Martín Nieto <cmn@elego.de>:
> > I've been changing this a bit, trying to make all the paths normalized,
> > but it'll take a bit longer. I'll send a partial patch when I've
> > finished something worth seeing (for the moment, the test fail if there
> > is a symlink somewhere in the tree, as I've mixed
> > real_path/make_absolute_path and absolute_path/make_nonrelative_path a
> > bit).
> >
> >  Is it a good idea to normalize the paths? Otherwise, everything could
> > be replaced by real_path/make_absolute_path (as most calls already are).
> > As it's transitive and these paths aren't stored permanently (other than
> > with clone), as long as we agree on one representation, it should be
> > fine.
> 
> I think the question is whether it's _necessary_ to do that. Any gain?
> make_absolute_path() calls are not in critical path, I don't think we
> should bother much, unless there are bugs like one you fixed in your
> patch.
 I was under the wrong impression that non-normalized paths were what
was causing is_inside_dir not to recognize the paths (this with a patch
using non-resolved absolute paths as given by make_nonrelative_path
rather than make_absolute_path).
 As it turns out, getcwd resolves the links for us, so is_inside_dir
would say e.g. that /home/cmn/two/git/t wasn't under /home/cmn/two/git,
because getcwd said the cwd was /home/cmn/one/git (two is a symlink to
one).
 At any rate, I think make_absolute_path is mis-named and it should be
called real_path (or make_real_path). The difference between
make_nonrelative_path and make_absolute_path is certainly not clear
without looking at the implementation.
Show 9 quoted lines
> 
> >  Is there a performance hit if we resolve links all the time? If we run
> > everything through normalize_path(_copy), is it slower than resolving
> > links?
> 
> What paths are you talking about? If they are inside $GIT_DIR, we
> touch them quite often. But there are not many of them (unless you
> spread loose objects all over the place), resolving links should not
> be an issue.
 There aren't in fact that many calls to these functions, so resolving
should be fine. More on this as an answer to your other mail.
Previous: Nguyen Thai Ngoc DuyNext: Nguyen Thai Ngoc Duy
Message 12 of 48 in “Fix some errors reported by valgrind”
  1. 0/3 Fix some errors reported by valgrindCarlos Martín Nieto, Mar 14, 2011
  2. 1/3 make_absolute_path: Don't try to copy a string to itselfCarlos Martín Nieto, Mar 14, 2011
  3. Jeff KingMar 14, 2011
  4. Junio C HamanoMar 14, 2011
  5. Carlos Martín NietoMar 14, 2011
  6. Junio C HamanoMar 14, 2011
  7. Carlos Martín NietoMar 15, 2011
  8. Carlos Martín NietoMar 15, 2011
  9. Junio C HamanoMar 15, 2011
  10. Carlos Martín NietoMar 15, 2011
  11. Nguyen Thai Ngoc DuyMar 16, 2011
  12. Carlos Martín NietoMar 16, 2011
  13. Nguyen Thai Ngoc DuyMar 16, 2011
  14. Nguyen Thai Ngoc DuyMar 16, 2011
  15. Carlos Martín NietoMar 16, 2011
  16. 2/3 setup_path(): Free temporary bufferCarlos Martín Nieto, Mar 14, 2011
  17. Jeff KingMar 14, 2011
  18. Carlos Martín NietoMar 14, 2011
  19. system_path: use a static bufferCarlos Martín Nieto, Mar 16, 2011
  20. Erik Faye-LundMar 16, 2011
  21. Carlos Martín NietoMar 16, 2011
  22. system_path: use a static bufferCarlos Martín Nieto, Mar 16, 2011
  23. Junio C HamanoMar 16, 2011
  24. system_path: use a static bufferCarlos Martín Nieto, Mar 17, 2011
  25. system_path: use a static bufferCarlos Martín Nieto, Mar 17, 2011
  26. Junio C HamanoMar 18, 2011
  27. Carlos Martín NietoMar 21, 2011
  28. Jeff KingMar 21, 2011
  29. Carlos Martín NietoMar 21, 2011
  30. Jeff KingMar 21, 2011
  31. Carlos Martín NietoMar 21, 2011
  32. Nguyen Thai Ngoc DuyMar 18, 2011
  33. PATH_MAX (Re: [PATCH] system_path: use a static buffer)Jonathan Nieder, Mar 18, 2011
  34. Nguyen Thai Ngoc DuyMar 18, 2011
  35. Carlos Martín NietoMar 21, 2011
  36. Lasse MakholmMar 21, 2011
  37. Nguyen Thai Ngoc DuyMar 21, 2011
  38. 1/2 wrapper.c: add xgetcwd()Nguyễn Thái Ngọc Duy, Mar 18, 2011
  39. 2/2 setup_gently: use xgetcwd()Nguyễn Thái Ngọc Duy, Mar 18, 2011
  40. Junio C HamanoMar 14, 2011
  41. Carlos Martín NietoMar 14, 2011
  42. Jeff KingMar 15, 2011
  43. t/README: Add a note about running commands under valgrindCarlos Martín Nieto, Mar 15, 2011
  44. Junio C HamanoMar 15, 2011
  45. Carlos Martín NietoMar 15, 2011
  46. 3/3 clone: Free a few pathsCarlos Martín Nieto, Mar 14, 2011
  47. Jonathan NiederMar 14, 2011
  48. Junio C HamanoMar 18, 2011

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.