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

Re: [PATCH v2 11/16] rerere: let `rerere_path()` write paths into a caller-provided buffer

From
Jeff King <peff@peff.net>
Date
Feb 24, 2025, 22:19 UTC
Message-ID
<20250224221914.GA193356@coredump.intra.peff.net>
In-Reply-To
<xmqqr03n7218.fsf@gitster.g>
On Mon, Feb 24, 2025 at 08:14:43AM -0800, Junio C Hamano wrote:
Show 22 quoted lines
> Jeff King <peff@peff.net> writes:
> 
> > On Fri, Feb 07, 2025 at 12:03:36PM +0100, Patrick Steinhardt wrote:
> >
> >>  static timestamp_t rerere_last_used_at(struct rerere_id *id)
> >>  {
> >> +	struct strbuf buf = STRBUF_INIT;
> >>  	struct stat st;
> >> +	int ret;
> >> +
> >> +	ret = stat(rerere_path(&buf, id, "postimage"), &st) ? (time_t) 0 : st.st_mtime;
> >>  
> >> -	return stat(rerere_path(id, "postimage"), &st) ? (time_t) 0 : st.st_mtime;
> >> +	strbuf_release(&buf);
> >> +	return ret;
> >>  }
> >
> > This "int ret" should surely be a timestamp_t, no?
> >
> > -Peff
> 
> Indeeeeeed.  Thanks for a careful reading.

Less reading, and more merge resolution. ;) (I had a similar series to Patrick's that was half-done from a few months ago).

I see you added a fixup! to the topic. Note that rerere_created_at() needs the same treatment, too.

One side note: using timestamp_t here should get us the same behavior that the original had before this patch. But I'm not sure the original was entirely correct. st_mtime is a time_t, so we are assuming the implicit cast is OK. Our timestamp_t tries to be at least as long as time_t, so I think we are OK for the future. For very old timestamps, it is probably wrong (since time_t is usually signed, and timestamp_t is not yet).

It's mostly academic, though, unless your filesystem has rerere files before 1970. So I think we can probably just ignore it (and I do still hope eventually to support negative values with timestamp_t).

-Peff
Previous: Junio C HamanoNext: Junio C Hamano
Message 15 of 28 in “path: remove dependency on `the_repository`”
  1. 00/16 path: remove dependency on `the_repository`Patrick Steinhardt, Feb 7, 2025
  2. 01/16 path: refactor `repo_common_path()` family of functionsPatrick Steinhardt, Feb 7, 2025
  3. 02/16 path: refactor `repo_git_path()` family of functionsPatrick Steinhardt, Feb 7, 2025
  4. 03/16 path: refactor `repo_worktree_path()` family of functionsPatrick Steinhardt, Feb 7, 2025
  5. 04/16 submodule: refactor `submodule_to_gitdir()` to accept a repoPatrick Steinhardt, Feb 7, 2025
  6. 05/16 path: refactor `repo_submodule_path()` family of functionsPatrick Steinhardt, Feb 7, 2025
  7. 06/16 path: drop unused `strbuf_git_path()` functionPatrick Steinhardt, Feb 7, 2025
  8. 07/16 path: drop `git_pathdup()` in favor of `repo_git_path()`Patrick Steinhardt, Feb 7, 2025
  9. 08/16 path: drop `git_path_buf()` in favor of `repo_git_path_replace()`Patrick Steinhardt, Feb 7, 2025
  10. 09/16 worktree: return allocated string from `get_worktree_git_dir()`Patrick Steinhardt, Feb 7, 2025
  11. 10/16 path: drop `git_common_path()` in favor of `repo_common_path()`Patrick Steinhardt, Feb 7, 2025
  12. 11/16 rerere: let `rerere_path()` write paths into a caller-provided bufferPatrick Steinhardt, Feb 7, 2025
  13. Jeff KingFeb 22, 2025
  14. Junio C HamanoFeb 24, 2025
  15. Jeff KingFeb 24, 2025
  16. Junio C HamanoFeb 24, 2025
  17. Jeff KingFeb 24, 2025
  18. Junio C HamanoFeb 24, 2025
  19. Patrick SteinhardtFeb 25, 2025
  20. 12/16 path: drop `git_path()` in favor of `repo_git_path()`Patrick Steinhardt, Feb 7, 2025
  21. 13/16 repo-settings: introduce function to clear structPatrick Steinhardt, Feb 7, 2025
  22. 14/16 environment: move access to "core.hooksPath" into repo settingsPatrick Steinhardt, Feb 7, 2025
  23. 15/16 environment: move access to "core.sharedRepository" into repo settingsPatrick Steinhardt, Feb 7, 2025
  24. 16/16 path: adjust last remaining users of `the_repository`Patrick Steinhardt, Feb 7, 2025
  25. Karthik NayakFeb 7, 2025
  26. shejialuoFeb 8, 2025
  27. Junio C HamanoFeb 10, 2025
  28. shejialuoFeb 11, 2025

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.