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:
Junio C Hamano
2013-05-29 14:23:03 -07:00
9 changed files with 58 additions and 13 deletions

22
date.c
View File

@ -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;