Merge branch 'jc/prune-all'
We used the approxidate() parser for "--expire=<timestamp>" options of various commands, but it is better to treat --expire=all and --expire=now a bit more specially than using the current timestamp. Update "git gc" and "git reflog" with a new parsing function for expiry dates. * jc/prune-all: prune: introduce OPT_EXPIRY_DATE() and use it api-parse-options.txt: document "no-" for non-boolean options git-gc.txt, git-reflog.txt: document new expiry options date.c: add parse_expiry_date()
This commit is contained in:
22
date.c
22
date.c
@ -711,6 +711,28 @@ int parse_date_basic(const char *date, unsigned long *timestamp, int *offset)
|
||||
return 0; /* success */
|
||||
}
|
||||
|
||||
int parse_expiry_date(const char *date, unsigned long *timestamp)
|
||||
{
|
||||
int errors = 0;
|
||||
|
||||
if (!strcmp(date, "never") || !strcmp(date, "false"))
|
||||
*timestamp = 0;
|
||||
else if (!strcmp(date, "all") || !strcmp(date, "now"))
|
||||
/*
|
||||
* We take over "now" here, which usually translates
|
||||
* to the current timestamp. This is because the user
|
||||
* really means to expire everything she has done in
|
||||
* the past, and by definition reflogs are the record
|
||||
* of the past, and there is nothing from the future
|
||||
* to be kept.
|
||||
*/
|
||||
*timestamp = ULONG_MAX;
|
||||
else
|
||||
*timestamp = approxidate_careful(date, &errors);
|
||||
|
||||
return errors;
|
||||
}
|
||||
|
||||
int parse_date(const char *date, char *result, int maxlen)
|
||||
{
|
||||
unsigned long timestamp;
|
||||
|
||||
Reference in New Issue
Block a user