Scalar

Scalar: 一套针对 Git 的工具和扩展,让超大型单核处理器无需虚拟化层即可在 Git 上运行。「Scalar: A set of tools and extensions for Git to allow very large monorepos to run on Git without a virtualization layer」

Github stars Tracking Chart

Scalar

What is Scalar?

Scalar is a tool that helps Git scale to some of the largest Git repositories.
It achieves this by enabling some advanced Git features, such as:

  • Partial clone: reduces time to get a working repository by not
    downloading all Git objects right away.

  • Background prefetch: downloads Git object data from all remotes every
    hour, reducing the amount of time for foreground git fetch calls.

  • Sparse-checkout: limits the size of your working directory.

  • File system monitor: tracks the recently modified files and eliminates
    the need for Git to scan the entire worktree.

  • Commit-graph: accelerates commit walks and reachability calculations,
    speeding up commands like git log.

  • Multi-pack-index: enables fast object lookups across many pack-files.

  • Incremental repack: Repacks the packed Git data into fewer pack-file
    without disrupting concurrent commands by using the multi-pack-index.

As new versions of Git are released, we update the list of features that
Scalar automatically configures. This reduces your effort to keep your
repositories as efficient as possible.

Scalar has moved!

Through significant effort from our team, we have successfully transitioned
Scalar from a modified version of VFS for Git into a thin shell
around core Git features. The Scalar executable has now been ported to be
included in the microsoft/git fork. Please visit that
fork for all of your Scalar needs:

Why did Scalar move?

Scalar started as a modification of VFS for Git to
create a working solution with a robust test suite in a short amount of
time. The goal was to depend more on features that exist within Git itself
instead of creating new functionality within this project. Since the start,
we have focused on this goal with efforts such as
improving sparse-checkout performance in Git,
implementing background maintenance in Git,
and integrating the GVFS protocol into microsoft/git
which allowed us to drop the Scalar.Mount process.
All of these changes reduced the size of the code in Scalar itself until
it could be replaced with a small command-line interface.

Additional benefits to this change include making our release and
installation mechanism much simpler. Users now only need to install one
tool, not multiple, to take advantage of all of the benefits.

What remains in this repository?

We are keeping the microsoft/scalar repository available since we have
linked to it and want to make sure those links continue to work. We
added pointers in several places to navigate readers to the microsoft/git
repository for the latest versions.

We also have a large set of functional tests that verify that Scalar
enlistments continue to work in a variety of advanced Git scenarios. These
tests are incredibly helpful as we advance features in microsoft/git, so
those tests remain in this repository. We run them as part of pull request
validation in microsoft/git, so no changes are made there without passing
this suite of tests.

What if I already installed Scalar and want the new version?

We are working to ensure that users on the .NET version of Scalar have a
painless experience while changing to the new version.

  • On Windows, users can install microsoft/git and the
    installer will remove the .NET version and update any registered
    enlistments to work with the new version.

  • On macOS, users should run brew uninstall --cask scalar or
    brew uninstall --cask scalar-azrepos depending on their version and
    then run brew install --cask microsoft-git to get the new version.
    At the moment, users on macOS will need to re-run scalar register
    on their enlistments to ensure they are registered for future upgrades.

  • On Linux, there is no established uninstall mechanism, but the .NET
    version can be removed via sudo rm -rf /usr/local/lib/scalar/. Installing
    the new version will overwrite the scalar binary in /usr/local/bin.
    At the moment, users on Linux will need to re-run scalar register
    on their enlistments to ensure they are registered for future upgrades.

You can check if the new Scalar version is installed correctly by running
scalar version which should have the same output as git version.

License

The Scalar source code in this repo is available under the MIT license. See License.md.

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct.
For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Overview

Name With Ownermicrosoft/scalar
Primary LanguageC#
Program languageC# (Language Count: 4)
Platform
License:MIT License
Release Count15
Last Release Namev21.03.185.1 (Posted on )
First Release NameRelease-19.08.158.0 (Posted on )
Created At2019-08-07 19:27:18
Pushed At2023-02-10 17:11:43
Last Commit At2020-07-24 15:35:15
Stargazers Count1.3k
Watchers Count25
Fork Count64
Commits Count2.9k
Has Issues Enabled
Issues Count192
Issue Open Count0
Pull Requests Count286
Pull Requests Open Count0
Pull Requests Close Count50
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private
To the top