![]() After getting pretty far in a macOS port, Apple deprecated the kernel features that provided the filesystem virtualization that was required for that flow. Initially, the Microsoft Office monorepo was going to onboard to Git using VFS for Git, but they needed cross-platform support, specifically for macOS development. NET VFS for Git software and use Azure Repos to host the repository. This greatly reduced the amount of work Git needed to do, but required installing the microsoft/git fork as well as the. VFS for Git utilizes a virtual filesystem to lazily load files only when a filesystem read occurs. ![]() The Virtual FileSystem for Git project ( VFS for Git for short-previously “GVFS”) was built specifically to transition the Microsoft Windows OS monorepo to Git. Now that we’ve established these values, let’s begin the story of Scalar. Not only did we value that transparency during Scalar’s development, but now we have a history of public code changes to talk about here. By contrast, VFS for Git was built as a tool for Microsoft’s internal use first, and open sourcing it was a bonus after it reached enough adoption. Scalar was an open source project from day one, and was never intended to be a project only for internal use. Other than the earliest prototypes, all changes were reviewed and merged completely in public, either in the microsoft/scalar repository or the microsoft/git repository. With a robust test suite available, we were able to make significant changes to our architecture with confidence. That risk is mitigated when we have a large set of battle-hardened tests. Making any kind of software change adds risk to a project. The biggest reason we focused on incremental changes was because of our next value. NET to C and then from our fork to upstream Git, but each individual movement was relatively small compared to the entire system. While making those changes, we also optimized for reducing our technical debt and creating a better architecture, and that resulted in code moving from. We intend to demonstrate exactly the opposite: Scalar moved with small incremental changes that solved an immediate need. Looking at where we started to where we ended, it might seem like we are proponents of rewriting things from scratch. Incremental changes over complete rewrites Then, we’d throw everything we could at the prototype to make sure it was correct and fast.īased on the prototype, we would commit to doing the careful engineering of building the feature again but with a test strategy, thoughtful architecture, and a plan for delivering it to users. During this prototyping phase, we would take shortcuts to get to that point of measurement. We could design an architecture all we want on paper, but when solving problems at scale, we need to have actual code running before we can make a final decision.īefore committing to a decision, we would quickly build a prototype and measure its performance. Here are a few that are particularly important to this story. We entered the project with certain values that we used to guide our decisions. Special thanks to and all of the other contributors who helped make this happen! Our development principlesīefore we get into specifics about how Scalar was built and eventually rewritten and contributed upstream, we need to first establish some context. Each step of the way was guided by a set of development principles that helped us with each challenge and opportunity. We’ll start from what inspired its creation, how it evolved from a prototype carved out of the VFS for Git codebase, and finally how it landed in upstream Git. Today, we will share the story of how Scalar got to this point. Scalar and Git, together at lastĪlthough Scalar is only now making its formal Git debut, this release represents the culmination of a multi-year journey. Have you already cloned your repository? Run scalar register in it to get the same features. By simply switching from git clone to scalar clone, you will have all of Git’s most impactful performance features, such as partial clone, sparse-checkout, background maintenance, and advanced config options neatly configured for your repository. At its core, Scalar enables the latest and greatest Git features for working with large repositories. When you install Git v2.38, you’ll find a new executable tool available called scalar.
0 Comments
Leave a Reply. |