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

Re: My Git Dev Blog - Week 9

From
Kaartic Sivaraam <kaartic.sivaraam@gmail.com>
Date
Jul 19, 2021, 02:58 UTC
Message-ID
<a8122438-8d8b-9e7d-d66a-dc6eff7a0817@gmail.com>
In-Reply-To
<09edd920-e9ef-f8f9-79e6-d27badd2e5a6@gmail.com>
Hi Atharva and all,
On 19/07/21 12:49 am, Kaartic Sivaraam wrote:
Show 10 quoted lines
> 
> On 18/07/21 5:29 pm, Atharva Raykar wrote:
> 
>> Passing the superprefix explicitly
> 
> My gut instinct tells me we could get away without having to go this way but
> I haven't yet been able to figure out how. How 'prefix', 'super-prefix' and
> 'recursive-prefix' is still puzzling me. In case anyone has knowledge about
> this please chime in and enlighten us. It would be very helpful.
>

I just noticed I was short and unhelpful here. To expand on what information would be helpful on this respect, here's a snippet of a private e-mail I sent which I've tweaked a little to make it relevant for the list audience:

-- 8< --
Show 28 quoted lines
>> Problem:
>> -------
>> I cannot get 'submodule update --init --recursive' to work properly.
>> 
>> Cause:
>> -----
>> The paths get malformed in my first implementation[1] because I am not able
>> to transfer the git 'superprefix' to the 'init_submodule_cb' callback with the
>> current interface. The superprefix is required by the
>> 'get_submodule_displaypath()' function to create the correct display path.
>>
>> Thus, t406.5 fails.
>> 
>> For more details on this and the exact error,
>> cf.: https://atharvaraykar.me/gitnotes/week8#path-pains
>>
>> [ snip ]
>>
>> The link at [1] is the one where it fails only one test in my machine.
>>
>> [ snip ]
>>
>> This version does *not* start a subprocess for running init before the
>> update. The relevant lines for this are here:
>> https://github.com/tfidfwastaken/git/blob/7ad995f465072b60a8c33e51c4f91d08ee3d2484/builtin/submodule--helper.c#L3325-L3344
>>
>> [1]: https://github.com/tfidfwastaken/git/commits/submodule-helper-update-1b
>>

I took a look at this. I'm not able to find the exact issue but my gut instinct tells me it has something to do with how prefix, super-prefix and recursive-prefix are handled before and after the conversion. To be more specific, I'm having doubts about whether the following code snippet[4] in shell ...

     prefix=$(git submodule--helper relative-path "$prefix$sm_path/" "$wt_prefix")
     wt_prefix=
     sanitize_submodule_env
     cd "$sm_path" &&
     eval cmd_update

... has been properly converted to C. Particularly, the fact that recursive calls to 'cmd_update' is made in the existing shell implementation in case '--recusive' is passed needs to be observed well. This would subsequently result in multiple calls to 'cmd_init' with different 'prefix' and 'wt_prefix' values. So, that needs to be observed well too.

I have not been able to get a complete picture of this myself. I'll try to take better look later and see if I could get anything.

Note that this could also be me just not being able to get a proper picture of it. Just wanted to share it in case others are able to get any ideas or able to think of a possible cause.

[4]: https://github.com/git/git/blob/abb21c7263616f01c5e950861a29279ab21cb02f/git-submodule.sh#L654-L658 -- >8 --

I hope that gives a better idea about what kind of information would be helpful. Kindly let me know if it doesn't.

Atharva,

In the meanwhile, I think you could continue polishing your attempted solution and preparing to send it to the list. I'll try to dig more on my gut instinct and let you know if I get anything. If you have some free time left after polishing your series, you could try digging into it too :)

-- 
Sivaraam
Previous: Kaartic SivaraamNext: Atharva Raykar
Message 5 of 8 in “My Git Dev Blog - Week 9”
  1. Atharva RaykarJul 18, 2021
  2. Christian CouderJul 18, 2021
  3. Atharva RaykarJul 19, 2021
  4. Kaartic SivaraamJul 18, 2021
  5. Kaartic SivaraamJul 19, 2021
  6. Atharva RaykarJul 19, 2021
  7. Bagas SanjayaJul 19, 2021
  8. Atharva RaykarJul 19, 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.