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

Re: [PATCH v10 12/12] bisect--helper: `get_terms` & `bisect_terms` shell function in C

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 25, 2016, 16:53 UTC
Message-ID
<xmqqh9bd7j6k.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<CAFZEwPOH+V+Nfq1KoOBBdVgeFD7YCG5c1PJrUHB50O1DkMg39Q@mail.gmail.com>
Pranit Bauva <pranit.bauva@gmail.com> writes:
Show 9 quoted lines
>>> +enum terms_defined {
>>> +       TERM_BAD = 1,
>>> +       TERM_GOOD = 2,
>>> +       TERM_NEW = 4,
>>> +       TERM_OLD = 8
>>> +};
>>> +
>>
>> What does TERM stand for  ?

The terms (words) used to denote the newer and the older parts of the history. Traditionally, as a regression-hunting tool (i.e. it used to work, where did I break it?), we called older parts of the history "good" and newer one "bad", but as people gained experience with the tool, it was found that the pair of words was error-prone to use for an opposite use case "I do not recall fixing it, but it seems to have been fixed magically, when did that happen?", and a more explicit "new" and "old" were introduced.

>> And why are the defines 1,2,4,8 ?
>> It looks as if a #define bitmap may be a better choice here ?
>> How do we do these kind of bit-wise opions otherwise ?

We might want to ask if these should even be bitwise option. A word with individually controllable bits (i.e. "flag word") makes sense only when the bits within it are largely independent. But the code does this pretty much upfront:

Show 5 quoted lines
>>> +       if (term_defined != 0 && term_defined != TERM_BAD &&
>>> +           term_defined != TERM_GOOD && term_defined != TERM_NEW &&
>>> +           term_defined != TERM_OLD)
>>> +               die(_("only one option among --term-bad, --term-good, "
>>> +                     "--term-new and --term-old can be used."));
which is a very strong indication that these bits are not.

I suspect that OPTION_CMDMODE would be a better choice to group these four options and mark them mutually incompatible automatically than OPT_BIT?

Previous: Pranit BauvaNext: Christian Couder
Message 6 of 20 in “bisect--helper: use OPT_CMDMODE instead of OPT_BOOL”
  1. 01/12 bisect--helper: use OPT_CMDMODE instead of OPT_BOOLPranit Bauva, Jul 20, 2016
  2. 06/12 wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()Pranit Bauva, Jul 20, 2016
  3. 12/12 bisect--helper: `get_terms` & `bisect_terms` shell function in CPranit Bauva, Jul 20, 2016
  4. Torsten BögershausenJul 22, 2016
  5. Pranit BauvaJul 22, 2016
  6. Junio C HamanoJul 25, 2016
  7. Christian CouderJul 25, 2016
  8. Torsten BögershausenJul 26, 2016
  9. Junio C HamanoJul 26, 2016
  10. Pranit BauvaJul 27, 2016
  11. Junio C HamanoJul 27, 2016
  12. 10/12 bisect--helper: `check_and_set_terms` shell function in CPranit Bauva, Jul 20, 2016
  13. 11/12 bisect--helper: `bisect_next_check` shell function in CPranit Bauva, Jul 20, 2016
  14. 04/12 bisect--helper: `bisect_clean_state` shell function in CPranit Bauva, Jul 20, 2016
  15. 05/12 t6030: explicitly test for bisection cleanupPranit Bauva, Jul 20, 2016
  16. 02/12 bisect: rewrite `check_term_format` shell function in CPranit Bauva, Jul 20, 2016
  17. 03/12 bisect--helper: `write_terms` shell function in CPranit Bauva, Jul 20, 2016
  18. 07/12 bisect--helper: `bisect_reset` shell function in CPranit Bauva, Jul 20, 2016
  19. 09/12 bisect--helper: `bisect_write` shell function in CPranit Bauva, Jul 20, 2016
  20. 08/12 bisect--helper: `is_expected_rev` & `check_expected_revs` shell function in CPranit Bauva, Jul 20, 2016

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.