зеркало из https://github.com/microsoft/git.git
repack: refactor to avoid double-negation of update-server-info
By default, git-repack(1) runs `update_server_info()` to generate info required for the dumb HTTP protocol. This can be disabled via the `-n` flag, which then sets the `no_update_server_info` flag. Further down the code this leads to some double-negation logic, which is about to become more confusing as we're about to add a new config which allows the user to permanently disable generation of the info. Refactor the code to avoid the double-negation and add some tests which verify that the flag continues to work as expected. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
4c53a8c20f
Коммит
64a6151da7
|
@ -620,7 +620,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
|
||||||
const char *unpack_unreachable = NULL;
|
const char *unpack_unreachable = NULL;
|
||||||
int keep_unreachable = 0;
|
int keep_unreachable = 0;
|
||||||
struct string_list keep_pack_list = STRING_LIST_INIT_NODUP;
|
struct string_list keep_pack_list = STRING_LIST_INIT_NODUP;
|
||||||
int no_update_server_info = 0;
|
int run_update_server_info = 1;
|
||||||
struct pack_objects_args po_args = {NULL};
|
struct pack_objects_args po_args = {NULL};
|
||||||
int geometric_factor = 0;
|
int geometric_factor = 0;
|
||||||
int write_midx = 0;
|
int write_midx = 0;
|
||||||
|
@ -637,8 +637,8 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
|
||||||
N_("pass --no-reuse-delta to git-pack-objects")),
|
N_("pass --no-reuse-delta to git-pack-objects")),
|
||||||
OPT_BOOL('F', NULL, &po_args.no_reuse_object,
|
OPT_BOOL('F', NULL, &po_args.no_reuse_object,
|
||||||
N_("pass --no-reuse-object to git-pack-objects")),
|
N_("pass --no-reuse-object to git-pack-objects")),
|
||||||
OPT_BOOL('n', NULL, &no_update_server_info,
|
OPT_NEGBIT('n', NULL, &run_update_server_info,
|
||||||
N_("do not run git-update-server-info")),
|
N_("do not run git-update-server-info"), 1),
|
||||||
OPT__QUIET(&po_args.quiet, N_("be quiet")),
|
OPT__QUIET(&po_args.quiet, N_("be quiet")),
|
||||||
OPT_BOOL('l', "local", &po_args.local,
|
OPT_BOOL('l', "local", &po_args.local,
|
||||||
N_("pass --local to git-pack-objects")),
|
N_("pass --local to git-pack-objects")),
|
||||||
|
@ -939,7 +939,7 @@ int cmd_repack(int argc, const char **argv, const char *prefix)
|
||||||
prune_shallow(PRUNE_QUICK);
|
prune_shallow(PRUNE_QUICK);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!no_update_server_info)
|
if (run_update_server_info)
|
||||||
update_server_info(0);
|
update_server_info(0);
|
||||||
remove_temporary_files();
|
remove_temporary_files();
|
||||||
|
|
||||||
|
|
|
@ -385,4 +385,36 @@ test_expect_success TTY '--quiet disables progress' '
|
||||||
test_must_be_empty stderr
|
test_must_be_empty stderr
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'setup for update-server-info' '
|
||||||
|
git init update-server-info &&
|
||||||
|
test_commit -C update-server-info message
|
||||||
|
'
|
||||||
|
|
||||||
|
test_server_info_present () {
|
||||||
|
test_path_is_file update-server-info/.git/objects/info/packs &&
|
||||||
|
test_path_is_file update-server-info/.git/info/refs
|
||||||
|
}
|
||||||
|
|
||||||
|
test_server_info_missing () {
|
||||||
|
test_path_is_missing update-server-info/.git/objects/info/packs &&
|
||||||
|
test_path_is_missing update-server-info/.git/info/refs
|
||||||
|
}
|
||||||
|
|
||||||
|
test_server_info_cleanup () {
|
||||||
|
rm -f update-server-info/.git/objects/info/packs update-server-info/.git/info/refs &&
|
||||||
|
test_server_info_missing
|
||||||
|
}
|
||||||
|
|
||||||
|
test_expect_success 'updates server info by default' '
|
||||||
|
test_server_info_cleanup &&
|
||||||
|
git -C update-server-info repack &&
|
||||||
|
test_server_info_present
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success '-n skips updating server info' '
|
||||||
|
test_server_info_cleanup &&
|
||||||
|
git -C update-server-info repack -n &&
|
||||||
|
test_server_info_missing
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Загрузка…
Ссылка в новой задаче