On Wednesday, May 16, 2018 10:58:19 AM Konstantin Ryabitsev wrote: > > 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. > 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