Re: gc and repack ignore .git/*HEAD when checking reachability
- From
Jeff King <peff@peff.net>
- Date
- Jul 12, 2016, 15:51 UTC
- Message-ID
- <20160712155141.GA5967@sigill.intra.peff.net>
- In-Reply-To
- <CACsJy8C+NEP1HJq8w1frOy=UOv5-SA+b7MkbX8DE_vU-zjX0XQ@mail.gmail.com>
On Tue, Jul 12, 2016 at 05:46:12PM +0200, Duy Nguyen wrote:
Show 7 quoted lines
> I'm not opposed to letting one worktree see everything, but this move > makes it harder to write new scripts (or new builtin commands, even) > that works with both single and multiple worktrees because you refer > to one ref (in current worktree perspective) differently. If we kill > of the main worktree (i.e. git init always creates a linked worktree) > then it's less of a problem, but still a nuisance to write > refs/worktree/$CURRENT/<something> everywhere.
True. I gave a suggestion for the reading side, but the writing side would still remain tedious.
I wonder if, in a worktree, we could simply convert requests to read or write names that do not begin with "refs/" as "refs/worktree/$CURRENT/"? That makes it a read/write-time alias conversion, but the actual storage is just vanilla (so the ref storage doesn't need to care, and reachability just works).
The trickiest thing, I think, is FETCH_HEAD, which is not really a ref (because it may have a bunch of values, and contain extra information).
-Peff