Re: How de-duplicate similar repositories with alternates
From: Duy Nguyen <hidden>
Date: 2018-11-29 20:43:44
On Thu, Nov 29, 2018 at 9:15 PM Ævar Arnfjörð Bjarmason [off-list ref] wrote:
On Thu, Nov 29 2018, Stefan Beller wrote:quoted
On Thu, Nov 29, 2018 at 7:00 AM Ævar Arnfjörð Bjarmason [off-list ref] wrote:quoted
A co-worker asked me today how space could be saved when you have multiple checkouts of the same repository (at different revs) on the same machine. I said since these won't block-level de-duplicate well[1] one way to do this is with alternates.Another way is to use git-worktree, which would solve the gc issues mentioned below? I view alternates as a historic artefact as the deduping of objects client side can be done using worktrees, and on the serverside - I think - most of the git hosters use namespaces and put a fork network into the same repository and use pack islands. Can you elaborate on why worktrees would not solve the problem? (I initially was hesitant to use them as I liked going into .git and tempering with files such as the config directly. But now I cannot `cd .git` any more; it turns out the advantages outweigh this corner case that I was attached to)This was discussed recently on-list & I chimed in with details about that here: https://public-inbox.org/git/87po1waqyc.fsf@evledraar.gmail.com/ & https://public-inbox.org/git/87muwzc2kv.fsf@evledraar.gmail.com/ In particular the "multiple devs" use-case described in the latter E-Mail is what I have in mind. Worktrees are inherently unsuitable for that.
Yeah, the separate ref namespace is something I would like to have on the client side too. I did consider implementing it a couple times but it's really no small task. Naively, I could achieve that pretty quick if all refs are loose, but performance would tank once the number of refs goes over say a hundred. -- Duy