git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: fatal: bad numeric config value '60 days' for 'gc.rerereresolved': invalid unit

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 21, 2017, 14:33 UTC
Message-ID
<xmqqfudpj1vo.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<CAHNyMp8xeye8EvtOdrX34QVCDsBCu3aLQVdyGRTVqyHXjZ4FFQ@mail.gmail.com>
Uwe Hausbrand <uwe.hausbrand@gmx.de> writes:
Show 6 quoted lines
> seems like there is a bug with "git rerere gc" not understanding grace
> periods like "60 days" defined in the config.
>
> What I did:
>
> git config gc.rerereresolved "60 days"
Let's see how the variable is explained in the documentation.
    gc.rerereResolved::
            Records of conflicted merge you resolved earlier are
            kept for this many days when 'git rerere gc' is run.
            The default is 60 days.  See linkgit:git-rerere[1].

Notice that "for this many days" tries to (and probably unsuccessfully) tell you that this variable is expected to be set to an integer [*1*], counted in "days". IOW, you'd want "60" instead.

Having said that, it may not be a bad idea to enumerate these "expected to be an integer that counts in some unit" variables that are described in a similar way (i.e. look for "this many" in Documentation/config.txt), and then for each of them that could be counted in different unit (e.g. it is not outrageously wrong to expect that you could specify that rerere records that are older than 3 months are expired):

 - decide what kind of quantity the variable specifies (e.g. "this
   many days" and "this many seconds" variables are giving a
   "timeperiod").
 - keep the code that reacts to an integer without any unit to
   behave the same (e.g. "[gc] rerereresolved = 30" will keep
   meaning "30 days");
 - extend the code so that when the value given is not an integer,
   it tries to parse it as a specification for the expected quantity
   (e.g. "this many days" and "this many seconds" variables would
   understand if you said "60 days" or "2 months")
[Footnote]
 *1* I think we actually expect a scaled integer whenever we expect
     an integral value, so you probably could say "6k" to specify
     "6,000 days"; "days" not being any of the recognised unit
     suffix like k, M, G, etc. is where "invalid unit" comes from.
Previous: Martin ÅgrenNext: Uwe Hausbrand
Message 3 of 16 in “fatal: bad numeric config value '60 days' for 'gc.rerereresolved': invalid unit”
  1. Uwe HausbrandJul 21, 2017
  2. Martin ÅgrenJul 21, 2017
  3. Junio C HamanoJul 21, 2017
  4. Uwe HausbrandJul 21, 2017
  5. 0/2 accept non-integer for "this many days" expiry specificationJunio C Hamano, Aug 19, 2017
  6. 2/2 rerere: allow approxidate in gc.rerereResolved/gc.rerereUnresolvedJunio C Hamano, Aug 19, 2017
  7. Ramsay JonesAug 20, 2017
  8. Junio C HamanoAug 21, 2017
  9. 1/2 rerere: represent time duration in timestamp_t internallyJunio C Hamano, Aug 19, 2017
  10. 0/6 accept non-integer for "this many days" expiry specificationJunio C Hamano, Aug 22, 2017
  11. 1/6 t4200: give us a clean slate after "rerere gc" testsJunio C Hamano, Aug 22, 2017
  12. 3/6 t4200: gather "rerere gc" togetherJunio C Hamano, Aug 22, 2017
  13. 2/6 t4200: make "rerere gc" test more robustJunio C Hamano, Aug 22, 2017
  14. 4/6 t4200: parameterize "rerere gc" custom expiry testJunio C Hamano, Aug 22, 2017
  15. 5/6 rerere: represent time duration in timestamp_t internallyJunio C Hamano, Aug 22, 2017
  16. 6/6 rerere: allow approxidate in gc.rerereResolved/gc.rerereUnresolvedJunio C Hamano, Aug 22, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.