Re: [PATCH RFC 2/2] Move libgit.a sources into separate "lib/" directory
- From
Elijah Newren <newren@gmail.com>
- Date
- Apr 17, 2026, 17:08 UTC
- Message-ID
- <CABPp-BHr9R1_7P46v=azQE7FnecW7-WkLjVs48OLXBNZp-M-qQ@mail.gmail.com>
- In-Reply-To
- <20260416-pks-libgit-in-subdir-v1-2-03afc731df55@pks.im>
On Thu, Apr 16, 2026 at 6:33 AM Patrick Steinhardt <ps@pks.im> wrote:
Show 35 quoted lines
> > The Git project is not exactly the easiest project to get started in: > it's written in C and POSIX shell, with bits of Perl, Rust and other > languages sprinkled into it. On top of that, the project has grown > somewhat organically over time, making the codebase hard to navigate. > > These are problems that we're aware of, and there have been and still > are efforts to clean up some of the technical debt that is natural to > exist an a project that is more than 20 years old. Furthermore, we > provide resources to newcomers that help them out like our coding > guidelines, code of conduct or "MyFirstContribution.adoc". > > But there is a rather practical problem: finding your way around in our > project's tree is not easy. Doing a directory listing in the top-level > directory will present you with more than 550 files, which makes it > extremely hard for a newcomer to figure out what files they are even > supposed to look at. This makes the onboarding experience somewhat > harder than it really needs to be. This isn't only a problem for > newcomers though, as I myself struggle to find the files I am looking > for because of the sheer number of files. > > Besides the problem of discoverability it also creates a problem of > structure. It is not obvious at all which files are part of "libgit.a" > and which files are only linked into our final executables. So while we > have this split in our build systems, that split is not evident at all > in our tree. > > Introduce a new "lib/" directory and move all of our sources for > "libgit.a" into it to fix these issues. It makes the split we have > evident and reduces the number of files in our top-level tree from 550 > files to ~80 files. > > This is still a lot of files, but it's significantly easier to navigate > already. Furthermore, we can further iterate after this step and think > about introducing a better structure for remaining files, as well.
I think this change makes sense. The only thing that made me raise an eyebrow was the moving of the sha1collisiondetection submodule into lib/ , but only because I think renames and submodules is bumpy in general. Since we rarely update that submodule, that won't really affect us.