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

Re: [GSoC] Draft Proposal (Convert submodule to builtin)

From
Chinmoy Chakraborty <chinmoy12c@gmail.com>
Date
Apr 6, 2021, 19:53 UTC
Message-ID
<f58da7ee-1f35-0e59-a5ac-ae1a268719ed@gmail.com>
In-Reply-To
<CAP8UFD0RyhnurYdWt1xWF2O-bpk-irSs71+XH1Zd8ghdzRKZ8Q@mail.gmail.com>
On 4/5/21 8:14 PM, Christian Couder wrote:
> You could add something like "so that the `git submodule` is fully
> implemented using C".
>
Sure I'll add this.
Show 9 quoted lines
>> ##Work to be done##
>>
>> The only command that is left to be ported is `git submodule add`.
>> The previous work on this by Shourya Shukla in GSoC 2020, did
>> not reach a successful merge due to some issues in design and
>> was kicked out because it has been stale for so long.
> Maybe you could explain a bit what "kicked out" means, or replace it
> with something more explicit, for people who don't know well how Git
> development works.
Okay, I'll explain it in simple terms. Actually in the docs version
I added a link to the `kicked out` phrase directing to :
https://github.com/git/git/blob/1861aa482a38ae84f597cede48167ab43e7e50a3/whats-cooking.txt#L1158-L1169
I'll add this in the textual format too.
>> The first
>> and foremost aim of the project will be to finish porting this
>> command.
> You mean the "add" sub-command, or the full "submodule" command?
The "add" command.
Show 17 quoted lines
> Before porting the `git submodule add` command the initial work
>> would be dedicated to the implementation of small helper functions
>> in the form of small patches, which would be directly used by the
>> `add` command. This workflow is based on the suggestion by
>> Junio C Hamano on the thread:
>> https://lore.kernel.org/git/xmqqd01sugrg.fsf@gitster.c.googlers.com/.
>>
>> This workflow would help in the following ways:
>>
>> - It would help in sending patches in a small digestible format.
>> - It would help the reviewers easily review those small units
>>     of patches in a single sitting.
>> - It would help keep small logical units of code in different clean commits.
> Yeah, nice!
>
> How does this compare with Shourya's work? Will this avoid the design
> issues in Shourya's work?
It would help in faster and more thorough reviews by the reviewers.
Since last time, the patches sent were quite large in size, it became quite
tedious and difficult to review the patch at once. Due to this, the review
and changes cycle slacked off and hence the patch never made it to master.
Sending the patches in small chunks and separate logic units would speed up
the review cycle.
Show 5 quoted lines
> Nice! Maybe you could give an example and tell:
> - how you would name one of the above function,
> - what would be its arguments,
> - perhaps how you would test it
> ...
Sure I'll add example prototype of the functions.
Show 8 quoted lines
>> - After implementation of all these helper methods, the main
>>     `module_add()` function would be implemented using the helper
>>     functions listed above as well as those helper functions which
>>     are predefined.
>> =================================================
> Ok, I will review the other parts later.
>
> Thanks!
Thanks for the review, really helpful :).
Previous: Christian CouderNext: Chinmoy Chakraborty
Message 7 of 10 in “[GSoC] Draft Proposal (Convert submodule to builtin)”
  1. Chinmoy ChakrabortyApr 1, 2021
  2. Bagas SanjayaApr 2, 2021
  3. Christian CouderApr 2, 2021
  4. Chinmoy ChakrabortyApr 2, 2021
  5. Chinmoy ChakrabortyApr 3, 2021
  6. Christian CouderApr 5, 2021
  7. Chinmoy ChakrabortyApr 6, 2021
  8. Chinmoy ChakrabortyApr 8, 2021
  9. Christian CouderApr 10, 2021
  10. Chinmoy ChakrabortyApr 2, 2021

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.