'\" t .\" Title: scalar .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 2026-06-29 .\" Manual: Git Manual .\" Source: Git 2.55.0 .\" Language: English .\" .TH "SCALAR" "1" "2026\-06\-29" "Git 2\&.55\&.0" "Git Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" scalar \- A tool for managing large Git repositories .SH "SYNOPSIS" .sp .nf scalar clone [\-\-single\-branch] [\-\-branch ] [\-\-full\-clone] [\-\-[no\-]src] [\-\-[no\-]tags] [\-\-[no\-]maintenance] [] scalar list scalar register [\-\-[no\-]maintenance] [] scalar unregister [] scalar run ( all | config | commit\-graph | fetch | loose\-objects | pack\-files ) [] scalar reconfigure [\-\-maintenance=(enable|disable|keep)] [ \-\-all | ] scalar diagnose [] scalar delete .fi .sp .SH "DESCRIPTION" .sp Scalar is a repository management tool that optimizes Git for use in large repositories\&. Scalar improves performance by configuring advanced Git settings, maintaining repositories in the background, and helping to reduce data sent across the network\&. .sp An important Scalar concept is the enlistment: this is the top\-level directory of the project\&. It usually contains the subdirectory \fBsrc/\fR which is a Git worktree\&. This encourages the separation between tracked files (inside \fBsrc/\fR) and untracked files, such as build artifacts (outside \fBsrc/\fR)\&. When registering an existing Git worktree with Scalar whose name is not \fBsrc\fR, the enlistment will be identical to the worktree\&. .sp The \fBscalar\fR command implements various subcommands, and different options depending on the subcommand\&. With the exception of \fBclone\fR, \fBlist\fR and \fBreconfigure\fR \fB\-\-all\fR, all subcommands expect to be run in an enlistment\&. .sp The following options can be specified \fIbefore\fR the subcommand: .PP \-C .RS 4 Before running the subcommand, change the working directory\&. This option imitates the same option of \fBgit\fR(1)\&. .RE .PP \-c = .RS 4 For the duration of running the specified subcommand, configure this setting\&. This option imitates the same option of \fBgit\fR(1)\&. .RE .SH "COMMANDS" .SS "Clone" .PP clone [] [] .RS 4 Clones the specified repository, similar to \fBgit-clone\fR(1)\&. By default, only commit and tree objects are cloned\&. Once finished, the worktree is located at \fI\fR\fB/src\fR\&. .sp The sparse\-checkout feature is enabled (except when run with \fB\-\-full\-clone\fR) and the only files present are those in the top\-level directory\&. Use \fBgit\fR \fBsparse\-checkout\fR \fBset\fR to expand the set of directories you want to see, or \fBgit\fR \fBsparse\-checkout\fR \fBdisable\fR to expand to all files (see \fBgit-sparse-checkout\fR(1) for more details)\&. You can explore the subdirectories outside your sparse\-checkout by using \fBgit\fR \fBls\-tree\fR \fBHEAD\fR[\fB:\fR\fI\fR]\&. .RE .PP \-b , \-\-branch .RS 4 Instead of checking out the branch pointed to by the cloned repository\(cqs HEAD, check out the \fI\fR branch instead\&. .RE .PP \-\-single\-branch, \-\-no\-single\-branch .RS 4 Clone only the history leading to the tip of a single branch, either specified by the \fB\-\-branch\fR option or the primary branch remote\(cqs \fBHEAD\fR points at\&. .sp Further fetches into the resulting repository will only update the remote\-tracking branch for the branch this option was used for the initial cloning\&. If the HEAD at the remote did not point at any branch when \fB\-\-single\-branch\fR clone was made, no remote\-tracking branch is created\&. .RE .PP \-\-src, \-\-no\-src .RS 4 By default, \fBscalar\fR \fBclone\fR places the cloned repository within a \fI\fR\fB/src\fR directory\&. Use \fB\-\-no\-src\fR to place the cloned repository directly in the \fI\fR directory\&. .RE .PP \-\-tags, \-\-no\-tags .RS 4 By default, \fBscalar\fR \fBclone\fR will fetch the tag objects advertised by the remote and future \fBgit\fR \fBfetch\fR commands will do the same\&. Use \fB\-\-no\-tags\fR to avoid fetching tags in \fBscalar\fR \fBclone\fR and to configure the repository to avoid fetching tags in the future\&. To fetch tags after cloning with \fB\-\-no\-tags\fR, run \fBgit\fR \fBfetch\fR \fB\-\-tags\fR\&. .RE .PP \-\-full\-clone, \-\-no\-full\-clone .RS 4 A sparse\-checkout is initialized by default\&. This behavior can be turned off via \fB\-\-full\-clone\fR\&. .RE .PP \-\-maintenance, \-\-no\-maintenance .RS 4 By default, \fBscalar\fR \fBclone\fR configures the enlistment to use Git\(cqs background maintenance feature\&. Use the \fB\-\-no\-maintenance\fR to skip this configuration\&. .RE .SS "List" .PP list .RS 4 List enlistments that are currently registered by Scalar\&. This subcommand does not need to be run inside an enlistment\&. .RE .SS "Register" .PP register [] .RS 4 Adds the enlistment\(cqs repository to the list of registered repositories and starts background maintenance\&. If \fI\fR is not provided, then the enlistment associated with the current working directory is registered\&. .sp Note: when this subcommand is called in a worktree that is called \fBsrc/\fR, its parent directory is considered to be the Scalar enlistment\&. If the worktree is \fInot\fR called \fBsrc/\fR, it itself will be considered to be the Scalar enlistment\&. .RE .PP \-\-maintenance, \-\-no\-maintenance .RS 4 By default, \fBscalar\fR \fBregister\fR configures the enlistment to use Git\(cqs background maintenance feature\&. Use the \fB\-\-no\-maintenance\fR to skip this configuration\&. This does not disable any maintenance that may already be enabled in other ways\&. .RE .SS "Unregister" .PP unregister [] .RS 4 Remove the specified repository from the list of repositories registered with Scalar and stop the scheduled background maintenance\&. .RE .SS "Run" .PP scalar run ( all | config | commit\-graph | fetch | loose\-objects | pack\-files ) [] .RS 4 Run the given maintenance task (or all tasks, if \fBall\fR was specified)\&. Except for \fBall\fR and \fBconfig\fR, this subcommand simply hands off to \fBgit-maintenance\fR(1) (mapping \fBfetch\fR to \fBprefetch\fR and \fBpack\-files\fR to \fBincremental\-repack\fR)\&. .sp These tasks are run automatically as part of the scheduled maintenance, as soon as the repository is registered with Scalar\&. It should therefore not be necessary to run this subcommand manually\&. .sp The \fBconfig\fR task is specific to Scalar and configures all those opinionated default settings that make Git work more efficiently with large repositories\&. As this task is run as part of \fBscalar\fR \fBclone\fR automatically, explicit invocations of this task are rarely needed\&. .RE .SS "Reconfigure" .sp After a Scalar upgrade, or when the configuration of a Scalar enlistment was somehow corrupted or changed by mistake, this subcommand allows to reconfigure the enlistment\&. .PP \-\-all .RS 4 When \fB\-\-all\fR is specified, reconfigure all enlistments currently registered with Scalar by the \fBscalar\&.repo\fR config key\&. Use this option after each upgrade to get the latest features\&. .RE .PP \-\-maintenance=(enable|disable|keep) .RS 4 By default, Scalar configures the enlistment to use Git\(cqs background maintenance feature; this is the same as using the \(oqenable` value for this option\&. Use the \fBdisable\fR value to remove each considered enlistment from background maintenance\&. Use `keep\(cq to leave the background maintenance configuration untouched for these repositories\&. .RE .SS "Diagnose" .PP diagnose [] .RS 4 When reporting issues with Scalar, it is often helpful to provide the information gathered by this command, including logs and certain statistics describing the data shape of the current enlistment\&. .sp The output of this command is a \fB\&.zip\fR file that is written into a directory adjacent to the worktree in the \fBsrc\fR directory\&. .RE .SS "Delete" .PP delete .RS 4 This subcommand lets you delete an existing Scalar enlistment from your local file system, unregistering the repository\&. .RE .SH "RECOMMENDED CONFIG VALUES" .sp As part of both \fBscalar\fR \fBclone\fR and \fBscalar\fR \fBregister\fR, certain Git config values are set to optimize for large repositories or cross\-platform support\&. These options are updated in new Git versions according to the best known advice for large repositories, and users can get the latest recommendations by running \fBscalar\fR \fBreconfigure\fR [\fB\-\-all\fR]\&. .sp This section lists justifications for the config values that are set in the latest version\&. .PP am\&.keepCR=true .RS 4 This setting is important for cross\-platform development across Windows and non\-Windows platforms and keeping carriage return (\fB\er\fR) characters in certain workflows\&. .RE .PP commitGraph\&.changedPaths=true .RS 4 This setting helps the background maintenance steps that compute the serialized commit\-graph to also store changed\-path Bloom filters\&. This accelerates file history commands and allows users to automatically benefit without running a foreground command\&. .RE .PP commitGraph\&.generationVersion=1 .RS 4 While the preferred version is 2 for performance reasons, existing users that had version 1 by default will need special care in upgrading to version 2\&. This is likely to change in the future as the upgrade story solidifies\&. .RE .PP core\&.autoCRLF=false .RS 4 This removes the transformation of worktree files to add CRLF line endings when only LF line endings exist\&. This is removed for performance reasons\&. Repositories that use tools that care about CRLF line endings should commit the necessary files with those line endings instead\&. .RE .PP core\&.logAllRefUpdates=true .RS 4 This enables the reflog on all branches\&. While this is a performance cost for large repositories, it is frequently an important data source for users to get out of bad situations or to seek support from experts\&. .RE .PP core\&.safeCRLF=false .RS 4 Similar to \fBcore\&.autoCRLF=false\fR, this disables checks around whether the CRLF conversion is reversible\&. This is a performance improvement, but can be dangerous if \fBcore\&.autoCRLF\fR is reenabled by the user\&. .RE .PP credential\&.https://dev\&.azure\&.com\&.useHttpPath=true .RS 4 This setting enables the \fBcredential\&.useHttpPath\fR feature only for web URLs for Azure DevOps\&. This is important for users interacting with that service using multiple organizations and thus multiple credential tokens\&. .RE .PP feature\&.experimental=false .RS 4 This disables the "experimental" optimizations grouped under this feature config\&. The expectation is that all valuable optimizations are also set explicitly by Scalar config, and any differences are intentional\&. Notable differences include several bitmap\-related config options which are disabled for client\-focused Scalar repos\&. .RE .PP feature\&.manyFiles=false .RS 4 This disables the "many files" optimizations grouped under this feature config\&. The expectation is that all valuable optimizations are also set explicitly by Scalar config, and any differences are intentional\&. .RE .PP fetch\&.showForcedUpdates=false .RS 4 This disables the check at the end of \fBgit\fR \fBfetch\fR that notifies the user if the ref update was a forced update (one where the previous position is not reachable from the latest position)\&. This check can be very expensive in large repositories, so is disabled and replaced with an advice message\&. Set \fBadvice\&.fetchShowForcedUpdates=false\fR to disable this advice message\&. .RE .PP fetch\&.unpackLimit=1 .RS 4 This setting prevents Git from unpacking packfiles into loose objects as they are downloaded from the server\&. The default limit of 100 was intended as a way to prevent performance issues from too many packfiles, but Scalar uses background maintenance to group packfiles and cover them with a multi\-pack\-index, removing this issue\&. .RE .PP fetch\&.writeCommitGraph=false .RS 4 This config setting was created to help users automatically update their commit\-graph files as they perform fetches\&. However, this takes time from foreground fetches and pulls and Scalar uses background maintenance for this function instead\&. .RE .PP gc\&.auto=0 .RS 4 This disables automatic garbage collection, since Scalar uses background maintenance to keep the repository data in good shape\&. .RE .PP gui\&.GCWarning=false .RS 4 Since Scalar disables garbage collection by setting \fBgc\&.auto=0\fR, the \fBgit\-gui\fR tool may start to warn about this setting\&. Disable this warning as Scalar\(cqs background maintenance configuration makes the warning irrelevant\&. .RE .PP index\&.skipHash=true .RS 4 Disable computing the hash of the index contents as it is being written\&. This assists with performance, especially for large index files\&. .RE .PP index\&.threads=true .RS 4 This tells Git to automatically detect how many threads it should use when reading the index due to the default value of \fBcore\&.preloadIndex\fR, which enables parallel index reads\&. This explicit setting also enables \fBindex\&.recordOffsetTable=true\fR to speed up parallel index reads\&. .RE .PP index\&.version=4 .RS 4 This index version adds compression to the path names, reducing the size of the index in a significant way for large repos\&. This is an important performance boost\&. .RE .PP log\&.excludeDecoration=refs/prefetch/* .RS 4 Since Scalar enables background maintenance with the \fBincremental\fR strategy, this setting avoids polluting \fBgit\fR \fBlog\fR output with refs stored by the background prefetch operations\&. .RE .PP merge\&.renames=true .RS 4 When computing merges in large repos, it is particularly important to detect renames to maximize the potential for a result that will validate correctly\&. Users performing merges locally are more likely to be doing so because a server\-side merge (via pull request or similar) resulted in conflicts\&. While this is the default setting, it is set specifically to override a potential change to \fBdiff\&.renames\fR which a user may set for performance reasons\&. .RE .PP merge\&.stat=false .RS 4 This disables a diff output after computing a merge\&. This improves performance of \fBgit\fR \fBmerge\fR for large repos while reducing noisy output\&. .RE .PP pack\&.useBitmaps=false .RS 4 This disables the use of \fB\&.bitmap\fR files attached to packfiles\&. Bitmap files are optimized for server\-side use, not client\-side use\&. Scalar disables this to avoid some performance issues that can occur if a user accidentally creates \fB\&.bitmap\fR files\&. .RE .PP pack\&.usePathWalk=true .RS 4 This enables the \fB\-\-path\-walk\fR option to \fBgit\fR \fBpack\-objects\fR by default\&. This can accelerate the computation and compression of packfiles created by \fBgit\fR \fBpush\fR and other repack operations\&. .RE .PP receive\&.autoGC=false .RS 4 Similar to \fBgc\&.auto\fR, this setting is disabled in preference of background maintenance\&. .RE .PP status\&.aheadBehind=false .RS 4 This disables the ahead/behind calculation that would normally happen during a \fBgit\fR \fBstatus\fR command\&. This information is frequently ignored by users but can be expensive to calculate in large repos that receive thousands of commits per day\&. The calculation is replaced with an advice message that can be disabled by disabling the \fBadvice\&.statusAheadBehind\fR config\&. .RE .sp The following settings are different based on which platform is in use: .PP core\&.untrackedCache=(true|false) .RS 4 The untracked cache feature is important for performance benefits on large repositories, but has demonstrated some bugs on Windows filesystems\&. Thus, this is set for other platforms but disabled on Windows\&. .RE .PP http\&.sslBackend=schannel .RS 4 On Windows, the \fBopenssl\fR backend has some issues with certain types of remote providers and certificate types\&. Override the default setting to avoid these common problems\&. .RE .SH "SEE ALSO" .sp \fBgit-clone\fR(1), \fBgit-maintenance\fR(1)\&. .SH "GIT" .sp Part of the \fBgit\fR(1) suite