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

Re: [PATCH v4 4/4] cache-tree: Write updated cache-tree after commit

From
Duy Nguyen <pclouds@gmail.com>
Date
Jul 8, 2014, 10:32 UTC
Message-ID
<CACsJy8C20oFdATHKTLK=9U3_kHu1QsuS4i74RPgQn0aTwVCC8w@mail.gmail.com>
In-Reply-To
<xmqq7g3obsqm.fsf@gitster.dls.corp.google.com>
On Tue, Jul 8, 2014 at 7:26 AM, Junio C Hamano <gitster@pobox.com> wrote:
Show 15 quoted lines
> Junio C Hamano <gitster@pobox.com> writes:
>
>>> diff --git a/builtin/commit.c b/builtin/commit.c
>>> index 9cfef6c..5981755 100644
>>> --- a/builtin/commit.c
>>> +++ b/builtin/commit.c
>>> @@ -342,6 +342,8 @@ static char *prepare_index(int argc, const char **argv, const char *prefix,
>>>
>>>              discard_cache();
>>>              read_cache_from(index_lock.filename);
>>> +            if (update_main_cache_tree(WRITE_TREE_SILENT) >= 0)
>>> +                    write_cache(fd, active_cache, active_nr);
>>>
>>>              commit_style = COMMIT_NORMAL;
>>>              return index_lock.filename;

I wonder if we need to update_main_cache_tree() so many times in this function. If I read the code correctly, all roads must lead to update_main_cache_tree(0) in prepare_to_commit(). If we find out that we have incomplete cache-tree before that call, we could write the index one more time after that call, instead of spreading update_main_cache_tree() all over prepare_index(). I know the "index_file" in prepare_to_commit() is probably "index.lock" or something, but that does not stop us from locking again ("index.lock.lock") if we want to update it.

Writing cache tree early in prepare_index() does help hooks, but I would say hooks are uncommon case and we could add an option to update-index to explicitly rebuild cache-tree, then hooks that do diff a lot (or other operations that use cache-tree) could rebuild cache-tree by themselves. When the index file is large, every write pays high penalty so I think trying to write less often is good.

-- 
Duy
Previous: Junio C HamanoNext: Junio C Hamano
Message 10 of 15 in “cache-tree: Create/update cache-tree on checkout”
  1. 1/4 cache-tree: Create/update cache-tree on checkoutDavid Turner, Jul 6, 2014
  2. 2/4 test-dump-cache-tree: invalid trees are not errorsDavid Turner, Jul 6, 2014
  3. Junio C HamanoJul 7, 2014
  4. 3/4 cache-tree: subdirectory testsDavid Turner, Jul 6, 2014
  5. Eric SunshineJul 6, 2014
  6. Junio C HamanoJul 7, 2014
  7. 4/4 cache-tree: Write updated cache-tree after commitDavid Turner, Jul 6, 2014
  8. Junio C HamanoJul 7, 2014
  9. Junio C HamanoJul 8, 2014
  10. Duy NguyenJul 8, 2014
  11. Junio C HamanoJul 8, 2014
  12. Duy NguyenJul 9, 2014
  13. Junio C HamanoJul 8, 2014
  14. Junio C HamanoJul 8, 2014
  15. Junio C HamanoJul 7, 2014

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.