From: Jeff King Date: Tue, 12 Jul 2016 15:51:41 GMT Subject: Re: gc and repack ignore .git/*HEAD when checking reachability Message-ID: <20160712155141.GA5967@sigill.intra.peff.net> In-Reply-To: On Tue, Jul 12, 2016 at 05:46:12PM +0200, Duy Nguyen wrote: > 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/ 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