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