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

Re: Adding a new file as if it had existed

From
Junio C Hamano <junkio@cox.net>
Date
Dec 12, 2006, 18:31 UTC
Message-ID
<7vzm9tuft7.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<7ac1e90c0612120332o20d6778bsa16a788fdc04a3a1@mail.gmail.com>
"Bahadir Balban" <bahadir.balban@gmail.com> writes:
> ... I said "performance reasons" assuming all the
> file hashes need checked for every commit -a to see if they're
> changed, but I just tried on a PIII and it seems not so slow.
Ok.

Other people have already cleared the fear for 'commit' case, so I hope you are happier.

There is one thing we could further optimize, though.

Switching branches with 100k blobs in a commit even when there are a handful paths different between the branches would still need to populate the index by reading two trees and collapsing them into a single stage. In theory, we should be able to do a lot better if two-tree case of read-tree took advanrage of cache-tree information. If ce_match_stat() says Ok for all paths in a subdirectory and the cached tree object name for that subdirectory in the index match what we are reading from the new tree, we should be able to skip reading that subdirectory (and its subdirectories) from the new tree object at all.

Anybody interested to give it a try?
Previous: Andreas EricssonNext: Andreas Ericsson
Message 7 of 11 in “Adding a new file as if it had existed”
  1. Bahadir BalbanDec 12, 2006
  2. Junio C HamanoDec 12, 2006
  3. Bahadir BalbanDec 12, 2006
  4. Johannes SchindelinDec 12, 2006
  5. Andy ParkinsDec 12, 2006
  6. Andreas EricssonDec 12, 2006
  7. Junio C HamanoDec 12, 2006
  8. Andreas EricssonDec 13, 2006
  9. Johannes SchindelinDec 13, 2006
  10. Andreas EricssonDec 13, 2006
  11. Jakub NarebskiDec 12, 2006

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.