Re: worktrees vs. alternates
- From
- Martin Fick <mfick@codeaurora.org>
- Date
- May 16, 2018, 17:14 UTC
- Message-ID
- <5972145.OdP4kjFpBj@mfick-lnx>
- In-Reply-To
- <0f19f9f8-d215-622e-5090-1341c013babc@linuxfoundation.org>
On Wednesday, May 16, 2018 10:58:19 AM Konstantin Ryabitsev wrote:
Show 6 quoted lines
> > 1. Find every repo mentioning the parent repository in > their alternates 2. Repack them without the -l switch > (which copies all the borrowed objects into those repos) > 3. Once all child repos have been repacked this way, prune > the parent repo (it's safe now)
This is probably only true if the repos are in read-only mode? I suspect this is still racy on a busy server with no downtime.
> 4. Repack child repos again, this time with the -l flag, > to get your savings back.
Show 8 quoted lines
> I would heartily love a way to teach git-repack to > recognize when an object it's borrowing from the parent > repo is in danger of being pruned. The cheapest way of > doing this would probably be to hardlink loose objects > into its own objects directory and only consider "safe" > objects those that are part of the parent repository's > pack. This should make alternates a lot safer, just in > case git-prune happens to run by accident.
I think that hard linking is generally a good approach to solving many of the "pruning" races left in git.
I have uploaded a "hard linking" proposal to jgit that could potentially solve a similar situation that is not alternate specific, and only for packfiles, with the intent of eventually also doing something similar for loose objects. You can see this here:
https://git.eclipse.org/r/c/122288/2
I think it would be good to fill in more of these pruning gaps!
-Martin
-- The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation