/
usr
/
share
/
doc
/
git
/
technical
/
/usr/share/doc/git/technical
mkdir
upload
Name
Size
Mode
Actions
api-error-handling.html
22259
0644
edit
dl
rm
api-error-handling.txt
3818
0644
edit
dl
rm
api-index-skel.txt
432
0644
edit
dl
rm
api-index.html
17183
0644
edit
dl
rm
api-index.sh
611
0644
edit
dl
rm
api-index.txt
648
0644
edit
dl
rm
api-merge.html
18305
0644
edit
dl
rm
api-merge.txt
1090
0644
edit
dl
rm
api-parse-options.html
36657
0644
edit
dl
rm
api-parse-options.txt
13157
0644
edit
dl
rm
api-simple-ipc.html
22388
0644
edit
dl
rm
api-simple-ipc.txt
4852
0644
edit
dl
rm
api-trace2.html
77619
0644
edit
dl
rm
api-trace2.txt
44255
0644
edit
dl
rm
bitmap-format.html
30403
0644
edit
dl
rm
bitmap-format.txt
8871
0644
edit
dl
rm
bundle-uri.html
51387
0644
edit
dl
rm
bundle-uri.txt
26787
0644
edit
dl
rm
commit-graph.txt
17957
0644
edit
dl
rm
directory-rename-detection.txt
5199
0644
edit
dl
rm
hash-function-transition.html
64539
0644
edit
dl
rm
hash-function-transition.txt
35894
0644
edit
dl
rm
long-running-process-protocol.html
18995
0644
edit
dl
rm
long-running-process-protocol.txt
1929
0644
edit
dl
rm
multi-pack-index.html
22462
0644
edit
dl
rm
multi-pack-index.txt
4459
0644
edit
dl
rm
pack-heuristics.html
43594
0644
edit
dl
rm
pack-heuristics.txt
18040
0644
edit
dl
rm
packfile-uri.txt
3748
0644
edit
dl
rm
parallel-checkout.html
31715
0644
edit
dl
rm
parallel-checkout.txt
12301
0644
edit
dl
rm
partial-clone.html
36496
0644
edit
dl
rm
partial-clone.txt
14968
0644
edit
dl
rm
racy-git.html
27995
0644
edit
dl
rm
racy-git.txt
9121
0644
edit
dl
rm
reftable.html
73792
0644
edit
dl
rm
reftable.txt
37525
0644
edit
dl
rm
remembering-renames.txt
30360
0644
edit
dl
rm
repository-version.txt
4311
0644
edit
dl
rm
rerere.txt
6510
0644
edit
dl
rm
scalar.html
20458
0644
edit
dl
rm
scalar.txt
2935
0644
edit
dl
rm
send-pack-pipeline.html
19315
0644
edit
dl
rm
send-pack-pipeline.txt
1969
0644
edit
dl
rm
shallow.html
19685
0644
edit
dl
rm
shallow.txt
2548
0644
edit
dl
rm
sparse-checkout.txt
47499
0644
edit
dl
rm
sparse-index.txt
9501
0644
edit
dl
rm
trivial-merge.html
22273
0644
edit
dl
rm
trivial-merge.txt
4264
0644
edit
dl
rm
Edit:
/usr/share/doc/git/technical/scalar.txt
(2935B)
Scalar ====== Scalar is a repository management tool that optimizes Git for use in large repositories. It accomplishes this by helping users to take advantage of advanced performance features in Git. Unlike most other Git built-in commands, Scalar is not executed as a subcommand of 'git'; rather, it is built as a separate executable containing its own series of subcommands. Background ---------- Scalar was originally designed as an add-on to Git and implemented as a .NET Core application. It was created based on the learnings from the VFS for Git project (another application aimed at improving the experience of working with large repositories). As part of its initial implementation, Scalar relied on custom features in the Microsoft fork of Git that have since been integrated into core Git: * partial clone, * commit graphs, * multi-pack index, * sparse checkout (cone mode), * scheduled background maintenance, * etc With the requisite Git functionality in place and a desire to bring the benefits of Scalar to the larger Git community, the Scalar application itself was ported from C# to C and integrated upstream. Features -------- Scalar is comprised of two major pieces of functionality: automatically configuring built-in Git performance features and managing repository enlistments. The Git performance features configured by Scalar (see "Background" for examples) confer substantial performance benefits to large repositories, but are either too experimental to enable for all of Git yet, or only benefit large repositories. As new features are introduced, Scalar should be updated accordingly to incorporate them. This will prevent the tool from becoming stale while also providing a path for more easily bringing features to the appropriate users. Enlistments are how Scalar knows which repositories on a user's system should utilize Scalar-configured features. This allows it to update performance settings when new ones are added to the tool, as well as centrally manage repository maintenance. The enlistment structure - a root directory with a `src/` subdirectory containing the cloned repository itself - is designed to encourage users to route build outputs outside of the repository to avoid the performance-limiting overhead of ignoring those files in Git. Design ------ Scalar is implemented in C and interacts with Git via a mix of child process invocations of Git and direct usage of `libgit.a`. Internally, it is structured much like other built-ins with subcommands (e.g., `git stash`), containing a `cmd_<subcommand>()` function for each subcommand, routed through a `cmd_main()` function. Most options are unique to each subcommand, with `scalar` respecting some "global" `git` options (e.g., `-c` and `-C`). Because `scalar` is not invoked as a Git subcommand (like `git scalar`), it is built and installed as its own executable in the `bin/` directory, alongside `git`, `git-gui`, etc.
Save
cmd:
run