josh
scalar
josh | scalar | |
---|---|---|
21 | 19 | |
1,335 | 1,294 | |
3.8% | 0.0% | |
7.5 | 0.0 | |
5 days ago | about 1 year ago | |
Rust | C# | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
josh
- GitHub – josh-project/josh: Just One Single History
-
Debian Git Monorepo
Why use submodules when you can properly vendor the upstream git, and export/import commits without breaking hashes on either side?
https://github.com/josh-project/josh
We've been using josh at TVL for years and it's just amazing.
- Josh: Just One Single History
- Just One Single History
- Metahead – An enterprise-grade, Git-based metarepo
-
PyPy has moved to Git, GitHub
Scalar explicitly does not implement the virtualized filesystem the OP is referring to. The original Git VFS for Windows that Microsoft designed did in fact do this, but as your second link notes, Microsoft abandoned that in favor of Scalar's totally different design which explicitly was about scaling repositories without filesystem virtualization.
There's a bunch of related features they added to Git to achieve scalability without virtualization. Those are all useful and Scalar is a welcome addition. But the need for a virtual filesystem layer for large-scale repositories is still a very real one. There are also some limitations that aren't ideal; for example Git's partial clones IIRC can only be used as a "cone" applied to the original filesystem hierarchy. More generalized designs would allow mapping any arbitrary paths in the original repository to any other path in the virtual checkout. Tools like Josh can do this today with existing Git repositories[1]. That helps you get even sparser and smaller checkouts.
The Git for Windows that was referenced isn't even that big at 300GB, by the way. Game studios regularly have repositories that exist at multi-terabyte size, and they have also converged on similar virtualization solutions. For example, Destiny 2 uses a "virtual file synchronization" layer called VirtualSync[2] that reduced the working size of their checkouts by over 98%, multiple terabytes of savings per person. And in a twist of fate, VirtualSync was implemented thanks to a feature called "ProjFS" that Microsoft added to Windows... which was motivated originally by the Git VFS for Windows they abandoned!
[1] https://github.com/josh-project/josh
[2] https://www.gdcvault.com/play/1027699/Virtual-Sync-Terabytes...
- Just One Single History – combine the advantages of monorepos with multirepos
-
Kubernetes Broke Git
Good overview, I know these sorts of pains well. Lots of hard questions and few definitive wins/right answers. How to organize a massive repository out in the open is still an open question. On that note, recently, I've been experimenting with this project called josh, which basically is like 'git subtree on extreme steroids, functioning as a git proxy':
https://josh-project.github.io/josh/
It basically lets you unify/view many repositories as a single one, or equivalent to split a mono-repo into smaller sized units of work for CI, specific teams, etc. It's bidirectional, so you push and pull from josh and everything goes into a single linear history in the mono repo. And because it's bidirectional, people in the mono-repo can still do things like make large-scale atomic changes across all sub-repositories, and those get reflected.
Josh currently isn't suitable for a lot of workloads due to various reasons (authentication is one that stands out), but it's actually the first tool I have seen that manages to offer BitKeeper-like "subtrees" that work really well, at scale, for large repos and teams. It requires some care to make sure "sub-trees" can be usable units of work, but it was one of the best features of BK in my opinion and really great for people doing one-off contributions, or isolating trees/changes to specific developers.
I'd be interested to know if there are other open alternatives to this. It's a nice point in the design space between solutions like "integrate with the filesystem layer to do sparse clones" or "just split up the repos."
-
What Comes After Git
With regard to repo composition, I have been following this project: https://github.com/josh-project/josh
scalar
-
Debian Git Monorepo
It's not only Windows that uses Git at Microsoft, but Sharepoint and Office (which includes the on-prem version of SharePoint). In terms of repo size Windows and Office are similar. I was part of the team that migrated Sharepoint from a Perforce clone to Git and helped build the tooling to allow Office to move as well. VFS for Git [1] and Scalar [2] are really good pieces of software.
[1] - https://github.com/microsoft/VFSForGit
[2] - https://github.com/microsoft/scalar
-
Serving a Website from a Git Repo Without Cloning It
Congratulations! That means you basically figured out how the clone procedure works and found a way to do so just in a partial way (also in an unsafe way). But it is a cool idea, nonetheless.
Also check out the Scalar [1] project and its predecessor, GVFS [2], both from Microsoft to manage their monorepo via a VFS layer.
[1]: https://github.com/microsoft/scalar
[2]: https://github.com/microsoft/VFSForGit
- Ask HN: Can we do better than Git for version control?
-
Software for managing config files
You mean like VFSforGit? Or the successor for that called Scalar? This has been a solved problem. Microsoft moved their entire Windows codebase to git. There have been a ton of huge improvements to performance as a result of that. And the above two plugins are easily better ways to deal with what you're referring to without resulting to dead tech.
-
WebKit Migrates from Subversion to GitHub
I was just looking at Microsoft's git VFS (https://github.com/microsoft/VFSForGit), which is deprecated and now points to Scalar (https://github.com/microsoft/scalar), which is also deprecated? What's Microsoft's story with git now? Is there still a virtual file system involved?
-
An ex-Googler's guide to dev tools
Microsoft has/had a mono-repo based on the Git Virtual Filesystem, but future efforts have apparently moved towards the use of Scalar: https://github.com/microsoft/scalar
-
Improve Git monorepo performance with a file system monitor
This has been superceded by Scalar (https://github.com/microsoft/scalar) and again merged into Microsoft's fork of git (https://github.com/microsoft/git)
It supports neat stuff like partial clone which seems like a pretty big deal.
- Haberdasher: Git-like version control for huge repos
-
We Put Half a Million Files in One Git Repository, Here’s What We Learned
As mentioned in the blog "we are moving towards providing a known version of git", probably Microsoft Git which includes the scalar command but also upstreams many of the optimizations to git core https://github.com/microsoft/scalar#why-did-scalar-move
disclaimer: canva staff working on source control
- Only Microsoft can give open source the gift of NTFS
What are some alternatives?
josh - Just One Single History
Git - Git Source Code Mirror - This is a publish-only repository but pull requests can be turned into patches to the mailing list via GitGitGadget (https://gitgitgadget.github.io/). Please follow Documentation/SubmittingPatches procedure for any of your improvements.
git-filter-repo - Quickly rewrite git repository history (filter-branch replacement)
git-lfs - Git extension for versioning large files
josh - Just One Single History [Moved to: https://github.com/josh-project/josh]
VFSForGit - Virtual File System for Git: Enable Git at Enterprise Scale
git-branchless - High-velocity, monorepo-scale workflow for Git
devops-tools - A mixed collection of tools supporting software development, CICD and deployment, etc.
EdenSCM - A Scalable, User-Friendly Source Control System. [Moved to: https://github.com/facebook/sapling]
ppwm - A site to promote diverse pair-programming
git - GitGitGadget's Git fork. Open Pull Requests here to submit them to the Git mailing list