Subject: Re: [PATCH] prune: --expire=time

From: Steven Grimm <[email-masked]>
Date: Sun, 21 Jan 2007 17:38:57 -0800

Jeff King wrote:
> That's not sufficient either. You might not _have_ the young objects
> yet, think the blob is dangling, and delete it. Meanwhile, the tree that
> references it arrives. IOW,
>   1. blob B arrives, but already exists
>   2. prune deletes unreference and old blob B
>   3. tree T arrives, referencing blob B
> I think this might be safe if you add objects in a top-down way (i.e., T
> before B). However, that doesn't make sense for the commit operation, in
> which you add blobs (with git-add), and then eventually construct a
> tree.
>   

Shouldn't the repository be locked against operations like prune while a 
commit is in progress anyway? That seems like it's pretty prudent and 
reasonable to me -- doing otherwise is just asking for a zillion little 
race conditions. Prune should be a rare enough operation that having it 
abort (or better, block) while a commit is going on wouldn't be a big 
problem, I'd think.

-Steve