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

Re: CAREFUL! No more delta object support!

From
Jan Harkes <jaharkes@cs.cmu.edu>
Date
Jun 28, 2005, 14:46 UTC
Message-ID
<20050628144604.GA15792@delft.aura.cs.cmu.edu>
In-Reply-To
<7vekamvmxj.fsf@assigned-by-dhcp.cox.net>
On Tue, Jun 28, 2005 at 02:40:56AM -0700, Junio C Hamano wrote:
> I am now dreaming if we someday would enhance the mechanism with
> append-only updates to the *.pack files with complete rewrite of
> the *.idx files, and get rid of files under .git/objects totally.
Stop dreaming, please.

The current separate objects setup might not be space efficient, but it has many other advantages.

- Objects are only written only once, and from then on are only read.
  This works well on filesystems that provide session semantics, as
  opposed to unix semantics. And the resulting objects are perfectly
  cacheable since they are only invalidated if someone ever decides to
  pack the repository.
- The hierarchy and the way the objects directories are updated works
  very well in combination with AFS style directory acls. What surprised
  me was that subdirectories in refs/heads work perfectly with all the
  core git tools, branchnames simply become 'user/branch'.
- Objects that differ in content have different naming, as a result
  multiple developers can safely commit into a shared repository without
  requiring locks. This is also why it is safe to pull from another
  repository without clobbering your own history. Imagine if you
  appended some local changes to a packed archive and the next rsync
  wipes your local commits.

I've been trying to keep an up to date document on how (and why) I use git on Coda. It started pretty much the identical to jgarzik's HOWTO. But it ended up a lot more complicated, to a point where I needed my own scripts for just about every action. Until I discovered that the alternate objects pool would work well in my environment.

    http://www.coda.cs.cmu.edu/git.html
Jan
Previous: Petr BaudisNext: Christopher Li
Message 9 of 38 in “CAREFUL! No more delta object support!”
  1. Linus TorvaldsJun 28, 2005
  2. Christopher LiJun 27, 2005
  3. Linus TorvaldsJun 28, 2005
  4. Junio C HamanoJun 28, 2005
  5. Christopher LiJun 28, 2005
  6. Petr BaudisJun 28, 2005
  7. Benjamin LaHaiseJun 28, 2005
  8. Petr BaudisJun 28, 2005
  9. Jan HarkesJun 28, 2005
  10. Christopher LiJun 28, 2005
  11. Linus TorvaldsJun 28, 2005
  12. Emit base objects of a delta chain when the delta is output.Junio C Hamano, Jun 29, 2005
  13. Junio C HamanoJun 28, 2005
  14. Skip writing out sha1 files for objects in packed git.Junio C Hamano, Jun 28, 2005
  15. Linus TorvaldsJun 28, 2005
  16. Junio C HamanoJun 28, 2005
  17. Linus TorvaldsJun 28, 2005
  18. Linus TorvaldsJun 28, 2005
  19. Junio C HamanoJun 28, 2005
  20. Adjust to git-init-db creating $GIT_OBJECT_DIRECTORY/packJunio C Hamano, Jun 28, 2005
  21. Linus TorvaldsJun 28, 2005
  22. Daniel BarkalowJun 28, 2005
  23. Linus TorvaldsJun 28, 2005
  24. Linus TorvaldsJun 28, 2005
  25. Daniel BarkalowJun 28, 2005
  26. Linus TorvaldsJun 28, 2005
  27. Linus TorvaldsJun 28, 2005
  28. Matthias UrlichsJun 28, 2005
  29. Matthias UrlichsJun 28, 2005
  30. Daniel BarkalowJun 28, 2005
  31. Linus TorvaldsJun 29, 2005
  32. Linus TorvaldsJun 29, 2005
  33. Daniel BarkalowJun 29, 2005
  34. Linus TorvaldsJun 29, 2005
  35. Daniel BarkalowJun 29, 2005
  36. Adjust fsck-cache to packed GIT and alternate object pool.Junio C Hamano, Jun 28, 2005
  37. Expose packed_git and alt_odb.Junio C Hamano, Jun 28, 2005
  38. 3/3 Update fsck-cache (take 2)Junio C Hamano, Jun 28, 2005

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.