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

Re: [PATCH v2 1/3] factor out refresh_and_write_cache function

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 30, 2019, 17:06 UTC
Message-ID
<xmqq8srazipr.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<CAN0heSqZOG6NMJE4=RReKzG3eD_w1mh8EcYaAQWN6WBY3WuZ1Q@mail.gmail.com>
Martin Ågren <martin.agren@gmail.com> writes:
Show 6 quoted lines
> There's a difference in behavior that I'm not sure about: We used
> to ignore the return value of `refresh_cache()`, i.e. we didn't care
> whether it had any errors. I have no idea whether that's safe to do --
> especially as we go on to write the index. So I don't know whether this
> patch fixes a bug by introducing the early return. Or if it *introduces*
> a bug by bailing too aggressively. Do you know more?

One common reason why refresh_cache() fails is because the index is unmerged (i.e. has one or more higher-stage entries). After an attempt to refresh, this would not wrote out the index in such a case, which might even be more correct thing to do than the original in the original context of "git am" implementation. The next thing that happens after the caller calls this function is to ask repo_index_has_changes(), and we'd say "the index is dirty" whether the index is written back or not from such a state.

> The above makes me think that once this new function is in good shape,
> the commit introducing it could sell it as "this is hard to get right --
> let's implement it correctly once and for all". ;-)
Yes, that is a more severe issue.
Previous: Martin ÅgrenNext: Thomas Gummerer
Message 14 of 29 in “make sure stash refreshes the index properly”
  1. 0/3 make sure stash refreshes the index properlyThomas Gummerer, Aug 27, 2019
  2. 2/3 merge: use refresh_and_write_cacheThomas Gummerer, Aug 27, 2019
  3. Martin ÅgrenAug 28, 2019
  4. Thomas GummererAug 29, 2019
  5. 3/3 stash: make sure to write refreshed cacheThomas Gummerer, Aug 27, 2019
  6. 1/3 factor out refresh_and_write_cache functionThomas Gummerer, Aug 27, 2019
  7. Martin ÅgrenAug 28, 2019
  8. Thomas GummererAug 29, 2019
  9. 0/3 make sure stash refreshes the index properlyThomas Gummerer, Aug 29, 2019
  10. 2/3 merge: use refresh_and_write_cacheThomas Gummerer, Aug 29, 2019
  11. 3/3 stash: make sure to write refreshed cacheThomas Gummerer, Aug 29, 2019
  12. 1/3 factor out refresh_and_write_cache functionThomas Gummerer, Aug 29, 2019
  13. Martin ÅgrenAug 30, 2019
  14. Junio C HamanoAug 30, 2019
  15. Thomas GummererSep 2, 2019
  16. Junio C HamanoSep 3, 2019
  17. 0/3 make sure stash refreshes the index properlyThomas Gummerer, Sep 3, 2019
  18. 1/3 factor out refresh_and_write_cache functionThomas Gummerer, Sep 3, 2019
  19. Junio C HamanoSep 5, 2019
  20. Thomas GummererSep 6, 2019
  21. Johannes SchindelinSep 11, 2019
  22. Thomas GummererSep 11, 2019
  23. Junio C HamanoSep 12, 2019
  24. 2/3 merge: use refresh_and_write_cacheThomas Gummerer, Sep 3, 2019
  25. 3/3 stash: make sure to write refreshed cacheThomas Gummerer, Sep 3, 2019
  26. 0/3 make sure stash refreshes the index properlyThomas Gummerer, Sep 11, 2019
  27. 1/3 factor out refresh_and_write_cache functionThomas Gummerer, Sep 11, 2019
  28. 2/3 merge: use refresh_and_write_cacheThomas Gummerer, Sep 11, 2019
  29. 3/3 stash: make sure to write refreshed cacheThomas Gummerer, Sep 11, 2019

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.