Subject: Re: [GSoC] Microproject help

From: Patrick Steinhardt <[email-masked]>
Date: Wed, 27 Mar 2024 07:36:11 +0100

On Tue, Mar 26, 2024 at 07:56:19PM +0800, vk wrote:
> On 2024-03-26 02:25, Karthik Nayak wrote:
> > vk <[email-masked]> writes:
> > 
> > Hello!
> > 
> > > Hello all,
> > > 
> > > I'm Vk and I work as a software engineer. I am interested in
> > > contributing to git repository. Apologies for the late start as I only
> > > stumbled upon GSoC recently and git project interested me as I use it
> > > everyday at work and it would be meaningful for me to contribute to
> > > it.
> > > Even if I am not chosen, it will be great if I can start learning to
> > > contribute to git open source.
> > > 
> > > For the microproject, I have looked into the lists for 2024 and it
> > > seems
> > > that all the projects have been taken except for `Replace a
> > > run_command*() call by direct calls to C functions`. However, it seems
> > > that the issue has been solved. The command I ran to search throughout
> > > the repo is `git grep 'run_command*('` and the search result returns
> > > run_command functions which I assume are essential.
> > > 
> > 
> > When I ran the same, I saw around 135 results. Are you saying that
> > they're all essential?
> > 
> > For e.g. In `builtin/gc.c:maintenance_task_pack_refs`, shouldn't you be
> > able to replace the `run_command`?
> > 
> 
> My bad as the example uses `run_command_v_opt` and upon further inspection
> it seems that there might be similar situations like the example that can
> save an external process. However, for the maintenance_task_pack_refs, the
> command being run is `git pack-refs` which is a write process unlike the
> example which is a simple read only process of `git show-branch` to get the
> current commit? I will be searching the codebase for similar read only
> `run_command` and see if I can replace them.

Hint: the `maintenance_task_pack_refs()` can in fact be converted to use
`refs_pack_refs()` instead. I was briefly considering doing that in [1],
but then didn't want to do such an unrelated refactoring in an already
long patch series.

So if you decide to do that you should probably build on top of my patch
series to avoid conflicts. The patch series is available e.g. at [2],
branch "ps/pack-refs-auto". So if you decide to give it a try you should
build on top of that branch.

Patrick

[1]: https://lore.kernel.org/git/[email-masked]/
[2]: https://github.com/gitster/git.git