Re: gc and repack ignore .git/*HEAD when checking reachability

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Jul 10, 2016 at 4:16 PM, Johannes Schindelin
<Johannes.Schindelin@xxxxxx> wrote:
>> No, the point is, refs subsystem needs to know which refs is per-repo,
>> which is per-worktree. So far the rules are  "everything under refs,
>> except a few known exceptions, is per-repo" and "everything directly
>> under $GIT_DIR is per-worktree", which work fine. But if you allow to
>> move per-worktree to "refs" freely, then the "known exceptions" will
>> have to be updated every time a new per-worktree ref appears. It'll be
>> easier to modify the first rule as "everything under refs, except some
>> legacy exceptions and refs/worktree, is per-repo".
>
> Given the substantial pain and suffering I have due to per-worktree
> reflogs (and those are *just* HEAD's reflogs!),

I apologize for that. I clearly did not see all the consequences of my
simple-minded approach. Watch out for the shared config issue too if
you start to rely on multiple worktrees. It may take even longer time
to address than this one.

> it appears to me that per-worktree refs would be a particularly poor feature.
>
> I agree that HEAD needs to be per-worktree, but already the fact that the
> HEADs of the worktrees, along with their reflogs, are *not* visible to
> all other worktrees causes substantial trouble.
>
> In my mind, a much more natural design would have been to map
> transparently each worktree's HEAD to refs/worktree/<name>/HEAD *and keep
> those refs and reflogs visible across all worktrees*.

We will be able to see refs from all worktrees if we choose to. There
is no question about that. It's needed for full-repo operations, gc
included. Whether we expose all worktree namespaces via refs/worktree
(as a logical view, not storage one), remains to be seen. Michael's
new ref API may be flexible enough that we could do without. I'm not
sure yet.

> With that design, I would not have irretrievably lost reflogs to auto-gc
> nor dozens of hours trying to figure out how to have *any* auto-gc succeed
> again (because I need to reduce the horrible slowness incurred by too many
> loose objects). My interactive rebases would also not have started to
> print the auto-gc error after every friggin' pick.
-- 
Duy
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]