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

Re: GSoC Project | Improvise git bisect

From
Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Date
Mar 20, 2016, 13:24 UTC
Message-ID
<vpq4mc1e0yv.fsf@anie.imag.fr>
In-Reply-To
<CAFZEwPP2OLOQanazPXxK1u5GVHzFWqx8GuRad7tLUyHrWR_+Tw@mail.gmail.com>
Pranit Bauva <pranit.bauva@gmail.com> writes:
Show 9 quoted lines
> The project Idea: Incremental Rewrite from shell to C of git-bisect.sh
>
> The plan:
>
>  - Place bisect.c in builtin/
>  - Implement a skeletal cmd_bisect() which will redirect to
> git-bisect.sh (1e1ea69f)
>  - Introduce a structure for parsing the command line flags.
>  - Start converting individual functions and place it in bisect.c

The most important question is missing from this: how do you ensure that you periodically fall back to a consistant state (i.e. a state where your code is used and the whole testsuite passes)?

Without this, the timeline may look like:
- day 1: the 3 first steps above
- 2 months: convert individual functions
- last day: submit the whole thing

And you absolutely want to avoid this. You need to get reviewable and mergeable code ASAP.

As I wrote earlier, I'm not convinced that your plan is the best approach. Converting shell functions to the bisect helper is IMHO a better first step, and having a builtin cmd_bisect can come later.

> a list of commits and then store the standard output in an array as
> bash can directly do the conversion, but it would not be a good thing
> to do in C.

Small confusion here: there's no bash involved, just a POSIX /bin/sh (which may, or may not point to bash), and POSIX /bin/sh has no notion of array.

> The goal would be to produce quality code that can be included in the
> next maintenance release 2.7.5.

I don't think this is a candidate for a maintenance release. Maintenance release include fixes for which we're confident enough that no regression or unexpected behavior change will happen. Complete rewrite is the opposite of that.

Show 6 quoted lines
> Also I am quite unsure how
> the patches would be maintained by Junio. Would he create a separate
> branch for me in his personal repo and then add the patches to it
> without merging it to pu and then when it is completely done, the
> merge will take place? Or he will individually first place every patch
> in pu and the normal process?

Junio usually does not maintain branches that are not merged in pu. "merged in pu" does not mean "accepted", just "worth paying attention". But this implies "does not introduce obvious regression" (cf. above).

Each series is applied in its own branch, and then this branch is merged into pu.

We consider GSoC students as normal contributors when it comes to submitting code (that's one of the reason why Junio is not a mentor).

> Should I also include "How git bisect works internally?" in the
> proposal along with this?

You should include any convincing argument to support the claim that you are able to comptlete the project. I think this includes re-explaining in your own words how you understand bisect in its current form.

> And most importantly, Would anyone like to mentor me for this project?

Christian is a potential mentor and he knows bisect very well. I can't speak for him, but he'd probably be a good mentor for such project.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
Previous: Pranit BauvaNext: Christian Couder
Message 8 of 16 in “GSoC Project | Improvise git bisect”
  1. Pranit BauvaMar 19, 2016
  2. Matthieu MoyMar 19, 2016
  3. Christian CouderMar 19, 2016
  4. Pranit BauvaMar 19, 2016
  5. Stefan BellerMar 19, 2016
  6. Pranit BauvaMar 20, 2016
  7. Pranit BauvaMar 20, 2016
  8. Matthieu MoyMar 20, 2016
  9. Christian CouderMar 20, 2016
  10. Johannes SchindelinMar 20, 2016
  11. Pranit BauvaMar 20, 2016
  12. Matthieu MoyMar 20, 2016
  13. Johannes SchindelinMar 21, 2016
  14. Pranit BauvaMar 21, 2016
  15. Christian CouderMar 21, 2016
  16. Pranit BauvaMar 21, 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.