зеркало из https://github.com/microsoft/git.git
multi-pack-index: add [--[no-]progress] option.
Add the --[no-]progress option to git multi-pack-index.
Pass the MIDX_PROGRESS flag to the subcommand functions
when progress should be displayed by multi-pack-index.
The progress feature was added to 'verify' in 144d703
("multi-pack-index: report progress during 'verify'", 2018-09-13)
but some subcommands were not updated to display progress, and
the ability to opt-out was overlooked.
Signed-off-by: William Baker <William.Baker@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
64d80e7d52
Коммит
680cba2c2b
|
@ -9,7 +9,7 @@ git-multi-pack-index - Write and verify multi-pack-indexes
|
|||
SYNOPSIS
|
||||
--------
|
||||
[verse]
|
||||
'git multi-pack-index' [--object-dir=<dir>] <subcommand>
|
||||
'git multi-pack-index' [--object-dir=<dir>] [--[no-]progress] <subcommand>
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
|
@ -23,6 +23,10 @@ OPTIONS
|
|||
`<dir>/packs/multi-pack-index` for the current MIDX file, and
|
||||
`<dir>/packs` for the pack-files to index.
|
||||
|
||||
--[no-]progress::
|
||||
Turn progress on/off explicitly. If neither is specified, progress is
|
||||
shown if standard error is connected to a terminal.
|
||||
|
||||
The following subcommands are available:
|
||||
|
||||
write::
|
||||
|
|
|
@ -6,21 +6,25 @@
|
|||
#include "trace2.h"
|
||||
|
||||
static char const * const builtin_multi_pack_index_usage[] = {
|
||||
N_("git multi-pack-index [--object-dir=<dir>] (write|verify|expire|repack --batch-size=<size>)"),
|
||||
N_("git multi-pack-index [<options>] (write|verify|expire|repack --batch-size=<size>)"),
|
||||
NULL
|
||||
};
|
||||
|
||||
static struct opts_multi_pack_index {
|
||||
const char *object_dir;
|
||||
unsigned long batch_size;
|
||||
int progress;
|
||||
} opts;
|
||||
|
||||
int cmd_multi_pack_index(int argc, const char **argv,
|
||||
const char *prefix)
|
||||
{
|
||||
unsigned flags = 0;
|
||||
|
||||
static struct option builtin_multi_pack_index_options[] = {
|
||||
OPT_FILENAME(0, "object-dir", &opts.object_dir,
|
||||
N_("object directory containing set of packfile and pack-index pairs")),
|
||||
OPT_BOOL(0, "progress", &opts.progress, N_("force progress reporting")),
|
||||
OPT_MAGNITUDE(0, "batch-size", &opts.batch_size,
|
||||
N_("during repack, collect pack-files of smaller size into a batch that is larger than this size")),
|
||||
OPT_END(),
|
||||
|
@ -28,12 +32,15 @@ int cmd_multi_pack_index(int argc, const char **argv,
|
|||
|
||||
git_config(git_default_config, NULL);
|
||||
|
||||
opts.progress = isatty(2);
|
||||
argc = parse_options(argc, argv, prefix,
|
||||
builtin_multi_pack_index_options,
|
||||
builtin_multi_pack_index_usage, 0);
|
||||
|
||||
if (!opts.object_dir)
|
||||
opts.object_dir = get_object_directory();
|
||||
if (opts.progress)
|
||||
flags |= MIDX_PROGRESS;
|
||||
|
||||
if (argc == 0)
|
||||
usage_with_options(builtin_multi_pack_index_usage,
|
||||
|
@ -47,16 +54,17 @@ int cmd_multi_pack_index(int argc, const char **argv,
|
|||
trace2_cmd_mode(argv[0]);
|
||||
|
||||
if (!strcmp(argv[0], "repack"))
|
||||
return midx_repack(the_repository, opts.object_dir, (size_t)opts.batch_size, 0);
|
||||
return midx_repack(the_repository, opts.object_dir,
|
||||
(size_t)opts.batch_size, flags);
|
||||
if (opts.batch_size)
|
||||
die(_("--batch-size option is only for 'repack' subcommand"));
|
||||
|
||||
if (!strcmp(argv[0], "write"))
|
||||
return write_midx_file(opts.object_dir, 0);
|
||||
return write_midx_file(opts.object_dir, flags);
|
||||
if (!strcmp(argv[0], "verify"))
|
||||
return verify_midx_file(the_repository, opts.object_dir, 0);
|
||||
return verify_midx_file(the_repository, opts.object_dir, flags);
|
||||
if (!strcmp(argv[0], "expire"))
|
||||
return expire_midx_packs(the_repository, opts.object_dir, 0);
|
||||
return expire_midx_packs(the_repository, opts.object_dir, flags);
|
||||
|
||||
die(_("unrecognized subcommand: %s"), argv[0]);
|
||||
}
|
||||
|
|
|
@ -147,6 +147,21 @@ test_expect_success 'write midx with two packs' '
|
|||
|
||||
compare_results_with_midx "two packs"
|
||||
|
||||
test_expect_success 'write progress off for redirected stderr' '
|
||||
git multi-pack-index --object-dir=$objdir write 2>err &&
|
||||
test_line_count = 0 err
|
||||
'
|
||||
|
||||
test_expect_success 'write force progress on for stderr' '
|
||||
git multi-pack-index --object-dir=$objdir --progress write 2>err &&
|
||||
test_file_not_empty err
|
||||
'
|
||||
|
||||
test_expect_success 'write with the --no-progress option' '
|
||||
git multi-pack-index --object-dir=$objdir --no-progress write 2>err &&
|
||||
test_line_count = 0 err
|
||||
'
|
||||
|
||||
test_expect_success 'add more packs' '
|
||||
for j in $(test_seq 11 20)
|
||||
do
|
||||
|
@ -169,6 +184,21 @@ test_expect_success 'verify multi-pack-index success' '
|
|||
git multi-pack-index verify --object-dir=$objdir
|
||||
'
|
||||
|
||||
test_expect_success 'verify progress off for redirected stderr' '
|
||||
git multi-pack-index verify --object-dir=$objdir 2>err &&
|
||||
test_line_count = 0 err
|
||||
'
|
||||
|
||||
test_expect_success 'verify force progress on for stderr' '
|
||||
git multi-pack-index verify --object-dir=$objdir --progress 2>err &&
|
||||
test_file_not_empty err
|
||||
'
|
||||
|
||||
test_expect_success 'verify with the --no-progress option' '
|
||||
git multi-pack-index verify --object-dir=$objdir --no-progress 2>err &&
|
||||
test_line_count = 0 err
|
||||
'
|
||||
|
||||
# usage: corrupt_midx_and_verify <pos> <data> <objdir> <string>
|
||||
corrupt_midx_and_verify() {
|
||||
POS=$1 &&
|
||||
|
@ -284,6 +314,21 @@ test_expect_success 'git-fsck incorrect offset' '
|
|||
"git -c core.multipackindex=true fsck"
|
||||
'
|
||||
|
||||
test_expect_success 'repack progress off for redirected stderr' '
|
||||
git multi-pack-index --object-dir=$objdir repack 2>err &&
|
||||
test_line_count = 0 err
|
||||
'
|
||||
|
||||
test_expect_success 'repack force progress on for stderr' '
|
||||
git multi-pack-index --object-dir=$objdir --progress repack 2>err &&
|
||||
test_file_not_empty err
|
||||
'
|
||||
|
||||
test_expect_success 'repack with the --no-progress option' '
|
||||
git multi-pack-index --object-dir=$objdir --no-progress repack 2>err &&
|
||||
test_line_count = 0 err
|
||||
'
|
||||
|
||||
test_expect_success 'repack removes multi-pack-index' '
|
||||
test_path_is_file $objdir/pack/multi-pack-index &&
|
||||
GIT_TEST_MULTI_PACK_INDEX=0 git repack -adf &&
|
||||
|
@ -413,6 +458,30 @@ test_expect_success 'expire does not remove any packs' '
|
|||
)
|
||||
'
|
||||
|
||||
test_expect_success 'expire progress off for redirected stderr' '
|
||||
(
|
||||
cd dup &&
|
||||
git multi-pack-index expire 2>err &&
|
||||
test_line_count = 0 err
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'expire force progress on for stderr' '
|
||||
(
|
||||
cd dup &&
|
||||
git multi-pack-index --progress expire 2>err &&
|
||||
test_file_not_empty err
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'expire with the --no-progress option' '
|
||||
(
|
||||
cd dup &&
|
||||
git multi-pack-index --no-progress expire 2>err &&
|
||||
test_line_count = 0 err
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'expire removes unreferenced packs' '
|
||||
(
|
||||
cd dup &&
|
||||
|
|
Загрузка…
Ссылка в новой задаче