2 ms·
The feature’s called alternates. You can use it on-the-fly without modifying any repos by using the GIT_ALTERNATE_OBJECT_DIRECTORIES environment variable. If y
by brodie 6y ago
The feature’s called alternates. You can use it on-the-fly without modifying any repos by using the GIT_ALTERNATE_OBJECT_DIRECTORIES environment variable.
If you want the effect permanently, there’s the .git/objects/info/alternates file. For HTTP remotes, there’s apparently a .git/objects/info/http-alternates file as well (no idea how that works though). I’m assuming these files allow multiple alternates as the environment variable does.
- est31 6y agoOh indeed, very interesting. Apparently the feature also existed since 2005, before Github (2008) so they could have used it from the start. https://stackoverflow.com/a/36125713 https://stackoverflow.com/a/36125713
- js2 6y agoI'm pretty sure GitHub does use alternates in the same way that that GitLab does: https://docs.gitlab.com/ee/development/git_object_deduplication.html https://docs.gitlab.com/ee/development/git_object_deduplicat... I vaguely recall seeing @peff comment about this on HN years ago but I can't find that comment now. Here's a GitLab employee claiming GitHub uses alternates: https://news.ycombinator.com/item?id=22179208 https://news.ycombinator.com/item?id=22179208 The thing is, that both the dmca repo and its forks must have alternates files to the same underlying common repo, otherwise the PR ref in the dmca repo wouldn't be able to see the merge commit pushed to the fork. Pushing the merge must have duplicated all the youtube-dl commits into the common repo used by both the dmca repo and its forks because youtube-dl and dmca would have different common repos.