Re: The design of refs backends, linked worktrees and submodules
From: Duy Nguyen <hidden>
Date: 2017-02-07 15:08:29
On Thu, Jan 19, 2017 at 6:55 PM, Duy Nguyen [off-list ref] wrote:
I've started working on fixing the "git gc" issue with multiple worktrees, which brings me back to this. Just some thoughts. Comments are really appreciated. In the current code, files backend has special cases for both submodules (explicitly) and linked worktrees (hidden behind git_path).
It just occurs to me that, since the refs directory structure of a
linked worktree is exactly like one in a normal single-worktree setup,
minus the shared (or packed) refs. The "files" refs backend can just
see this "per-worktree only" refs directory as a remote refs storage,
which is just another name for "submodule".
So, we could just use the exact same submodule code path in refs to
create a per-worktree refs storage. Doing it this way, files backedn
do not need to learn about linked worktrees at all. To retrieve a
per-worktree refs storage, we do
"get_ref_store(".git/worktrees/foobar")". To get all per-worktree refs
do for_each_ref_submodule(".git/worktrees/foobar", ...).
Does it make sense? Should we go this way?
--
Duy