Merge branch 'vd/scalar-to-main'
Hoist the remainder of "scalar" out of contrib/ to the main part of the codebase. * vd/scalar-to-main: Documentation/technical: include Scalar technical doc t/perf: add 'GIT_PERF_USE_SCALAR' run option t/perf: add Scalar performance tests scalar-clone: add test coverage scalar: add to 'git help -a' command list scalar: implement the `help` subcommand git help: special-case `scalar` scalar: include in standard Git build & installation scalar: fix command documentation section header
This commit is contained in:
@ -95,6 +95,10 @@ You can set the following variables (also in your config.mak):
|
||||
Git (e.g., performance of index-pack as the number of threads
|
||||
changes). These can be enabled with GIT_PERF_EXTRA.
|
||||
|
||||
GIT_PERF_USE_SCALAR
|
||||
Boolean indicating whether to register test repo(s) with Scalar
|
||||
before executing tests.
|
||||
|
||||
You can also pass the options taken by ordinary git tests; the most
|
||||
useful one is:
|
||||
|
||||
|
39
t/perf/p9210-scalar.sh
Executable file
39
t/perf/p9210-scalar.sh
Executable file
@ -0,0 +1,39 @@
|
||||
#!/bin/sh
|
||||
|
||||
test_description='test scalar performance'
|
||||
. ./perf-lib.sh
|
||||
|
||||
test_perf_large_repo "$TRASH_DIRECTORY/to-clone"
|
||||
|
||||
test_expect_success 'enable server-side partial clone' '
|
||||
git -C to-clone config uploadpack.allowFilter true &&
|
||||
git -C to-clone config uploadpack.allowAnySHA1InWant true
|
||||
'
|
||||
|
||||
test_perf 'scalar clone' '
|
||||
rm -rf scalar-clone &&
|
||||
scalar clone "file://$(pwd)/to-clone" scalar-clone
|
||||
'
|
||||
|
||||
test_perf 'git clone' '
|
||||
rm -rf git-clone &&
|
||||
git clone "file://$(pwd)/to-clone" git-clone
|
||||
'
|
||||
|
||||
test_compare_perf () {
|
||||
command=$1
|
||||
shift
|
||||
args=$*
|
||||
test_perf "$command $args (scalar)" "
|
||||
$command -C scalar-clone/src $args
|
||||
"
|
||||
|
||||
test_perf "$command $args (non-scalar)" "
|
||||
$command -C git-clone $args
|
||||
"
|
||||
}
|
||||
|
||||
test_compare_perf git status
|
||||
test_compare_perf test_commit --append --no-tag A
|
||||
|
||||
test_done
|
@ -49,6 +49,9 @@ export TEST_DIRECTORY TRASH_DIRECTORY GIT_BUILD_DIR GIT_TEST_CMP
|
||||
MODERN_GIT=$GIT_BUILD_DIR/bin-wrappers/git
|
||||
export MODERN_GIT
|
||||
|
||||
MODERN_SCALAR=$GIT_BUILD_DIR/bin-wrappers/scalar
|
||||
export MODERN_SCALAR
|
||||
|
||||
perf_results_dir=$TEST_RESULTS_DIR
|
||||
test -n "$GIT_PERF_SUBSECTION" && perf_results_dir="$perf_results_dir/$GIT_PERF_SUBSECTION"
|
||||
mkdir -p "$perf_results_dir"
|
||||
@ -120,6 +123,10 @@ test_perf_create_repo_from () {
|
||||
# status" due to a locked index. Since we have
|
||||
# a copy it's fine to remove the lock.
|
||||
rm .git/index.lock
|
||||
fi &&
|
||||
if test_bool_env GIT_PERF_USE_SCALAR false
|
||||
then
|
||||
"$MODERN_SCALAR" register
|
||||
fi
|
||||
) || error "failed to copy repository '$source' to '$repo'"
|
||||
}
|
||||
@ -130,7 +137,11 @@ test_perf_fresh_repo () {
|
||||
"$MODERN_GIT" init -q "$repo" &&
|
||||
(
|
||||
cd "$repo" &&
|
||||
test_perf_do_repo_symlink_config_
|
||||
test_perf_do_repo_symlink_config_ &&
|
||||
if test_bool_env GIT_PERF_USE_SCALAR false
|
||||
then
|
||||
"$MODERN_SCALAR" register
|
||||
fi
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -171,6 +171,9 @@ run_subsection () {
|
||||
get_var_from_env_or_config "GIT_PERF_MAKE_COMMAND" "perf" "makeCommand"
|
||||
get_var_from_env_or_config "GIT_PERF_MAKE_OPTS" "perf" "makeOpts"
|
||||
|
||||
get_var_from_env_or_config "GIT_PERF_USE_SCALAR" "perf" "useScalar" "--bool"
|
||||
export GIT_PERF_USE_SCALAR
|
||||
|
||||
get_var_from_env_or_config "GIT_PERF_REPO_NAME" "perf" "repoName"
|
||||
export GIT_PERF_REPO_NAME
|
||||
|
||||
|
Reference in New Issue
Block a user