scalar: implement the `clone` subcommand
commit546f822d53aa4b4b35f962d61cdcd1204f9e96e3
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Fri, 3 Dec 2021 13:34:23 +0000 (3 13:34 +0000)
committerJunio C Hamano <gitster@pobox.com>
Sun, 5 Dec 2021 05:52:23 +0000 (4 21:52 -0800)
tree0e11c78d957143c9bfdb039ed7466119c1befbe4
parent2b7104573ce237398131562c465d838c018d5880
scalar: implement the `clone` subcommand

This implements Scalar's opinionated `clone` command: it tries to use a
partial clone and sets up a sparse checkout by default. In contrast to
`git clone`, `scalar clone` sets up the worktree in the `src/`
subdirectory, to encourage a separation between the source files and the
build output (which helps Git tremendously because it avoids untracked
files that have to be specifically ignored when refreshing the index).

Also, it registers the repository for regular, scheduled maintenance,
and configures a flurry of configuration settings based on the
experience and experiments of the Microsoft Windows and the Microsoft
Office development teams.

Note: since the `scalar clone` command is by far the most commonly
called `scalar` subcommand, we document it at the top of the manual
page.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/scalar/scalar.c
contrib/scalar/scalar.txt
contrib/scalar/t/t9099-scalar.sh