зеркало из https://github.com/microsoft/git.git
Merge branch 'jc/parseopt-expiry-errors'
"git gc --prune=nonsense" spent long time repacking and then silently failed when underlying "git prune --expire=nonsense" failed to parse its command line. This has been corrected. * jc/parseopt-expiry-errors: parseopt: handle malformed --expire arguments more nicely gc: do not upcase error message shown with die()
This commit is contained in:
Коммит
3915f9a4fa
|
@ -354,6 +354,7 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
|
|||
const char *name;
|
||||
pid_t pid;
|
||||
int daemonized = 0;
|
||||
timestamp_t dummy;
|
||||
|
||||
struct option builtin_gc_options[] = {
|
||||
OPT__QUIET(&quiet, N_("suppress progress reporting")),
|
||||
|
@ -382,7 +383,7 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
|
|||
/* default expiry time, overwritten in gc_config */
|
||||
gc_config();
|
||||
if (parse_expiry_date(gc_log_expire, &gc_log_expire_time))
|
||||
die(_("Failed to parse gc.logexpiry value %s"), gc_log_expire);
|
||||
die(_("failed to parse gc.logexpiry value %s"), gc_log_expire);
|
||||
|
||||
if (pack_refs < 0)
|
||||
pack_refs = !is_bare_repository();
|
||||
|
@ -392,6 +393,9 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
|
|||
if (argc > 0)
|
||||
usage_with_options(builtin_gc_usage, builtin_gc_options);
|
||||
|
||||
if (prune_expire && parse_expiry_date(prune_expire, &dummy))
|
||||
die(_("failed to parse prune expiry value %s"), prune_expire);
|
||||
|
||||
if (aggressive) {
|
||||
argv_array_push(&repack, "-f");
|
||||
if (aggressive_depth > 0)
|
||||
|
|
|
@ -38,7 +38,11 @@ int parse_opt_approxidate_cb(const struct option *opt, const char *arg,
|
|||
int parse_opt_expiry_date_cb(const struct option *opt, const char *arg,
|
||||
int unset)
|
||||
{
|
||||
return parse_expiry_date(arg, (timestamp_t *)opt->value);
|
||||
if (unset)
|
||||
arg = "never";
|
||||
if (parse_expiry_date(arg, (timestamp_t *)opt->value))
|
||||
die(_("malformed expiration date '%s'"), arg);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int parse_opt_color_flag_cb(const struct option *opt, const char *arg,
|
||||
|
|
|
@ -320,4 +320,14 @@ test_expect_success 'prune: handle HEAD reflog in multiple worktrees' '
|
|||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'prune: handle expire option correctly' '
|
||||
test_must_fail git prune --expire 2>error &&
|
||||
test_i18ngrep "requires a value" error &&
|
||||
|
||||
test_must_fail git prune --expire=nyah 2>error &&
|
||||
test_i18ngrep "malformed expiration" error &&
|
||||
|
||||
git prune --no-expire
|
||||
'
|
||||
|
||||
test_done
|
||||
|
|
Загрузка…
Ссылка в новой задаче