Skip to content

Commit 219fbc3

Browse files
author
Kaartic Sivaraam
committed
SoC-2026: improve ideas page information
1 parent b5df936 commit 219fbc3

File tree

1 file changed

+64
-26
lines changed

1 file changed

+64
-26
lines changed

SoC-2026-Ideas.md

Lines changed: 64 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,12 @@ all affected code paths continue to work correctly. This includes
5050
updating tests, fixing any regressions, and documenting the
5151
architectural changes.
5252

53+
**Getting started:** Build Git from source, study the `environment.c` file
54+
and its global variables, understand how `struct repository` and
55+
`struct repository_settings` work, and submit a micro-patch to demonstrate
56+
familiarity with the codebase. Review recent mailing list discussions about
57+
reducing global state.
58+
5359
_Expected Project Size_: 90 or 175 hours or 350 hours
5460

5561
_Difficulty_: Medium
@@ -67,42 +73,62 @@ _Possible mentors_:
6773

6874
### Improve the new `git repo` command
6975

70-
The `git repo` command now has the `info` and `structure` sub-commands
71-
to retrieve and display information about a repository. A number of
72-
improvements could be made to both of these.
76+
The `git repo` command was introduced as part of GSoC 2025 (released in Git 2.52.0)
77+
to provide a cleaner interface for querying repository metadata and configuration.
78+
The command currently has two sub-commands: `git repo info` for retrieving repository
79+
information in machine-readable formats, and `git repo structure` for displaying
80+
repository statistics.
81+
82+
See the [mailing list discussion](https://public-inbox.org/git/20250610152117.14826-1-lucasseikioshiro@gmail.com/t/#u)
83+
introducing the command and the [official documentation](https://git-scm.com/docs/git-repo)
84+
for current functionality.
85+
86+
A number of improvements could be made to both sub-commands:
7387

74-
For example `git repo info` could be improved in the following ways:
88+
For `git repo info`, potential improvements include:
7589

76-
- remove the dependency on `the_repository` global variable
77-
- use the category as key
78-
- add the path-related values (copied from git-rev-parse "Options for
79-
Files"):
90+
- Remove the dependency on `the_repository` global variable
91+
- Use the category as key (e.g., `git repo info layout` would return all layout-related values)
92+
- Add path-related values currently obtained through `git rev-parse` (see "Options for Files" in git-rev-parse documentation):
8093
- git-dir
8194
- common-dir
8295
- toplevel
8396
- superproject-working-tree
84-
- add more values currently obtained through `git rev-parse --git-path`:
97+
- Add more values currently obtained through `git rev-parse --git-path`:
8598
- grafts file
8699
- index file
87100
- objects directory
88101
- hooks directory
89102
- git-prefix
90-
- other paths that are adjusted by `update_common_dir()`
103+
- other paths adjusted by `update_common_dir()`
91104

92105
Some work to add path-related values
93106
[has already started](https://github.com/lucasoshiro/git/compare/master...repo-info-path/),
94-
so completing that work might be a good start. It would require a
95-
decision to be made whether relative or absolute paths should be used
96-
though.
107+
so completing that work might be a good starting point. It would require a
108+
decision to be made on whether relative or absolute paths should be used.
97109

98-
For `git repo structure` some functionality from
99-
[git-sizer](https://github.com/github/git-sizer) could be added.
110+
For `git repo structure`, functionality from
111+
[git-sizer](https://github.com/github/git-sizer) could be added to provide
112+
more detailed repository analysis.
100113

101-
The goal of this project would be to discuss possible improvements to
114+
The goal of this project is to discuss possible improvements to
102115
`git repo` with the community, reach an agreement about the best
103116
potential improvements, and then implement them. It requires the
104117
desire to be involved in design discussions on the mailing list.
105118

119+
**Getting started:** Build Git from source, experiment with `git repo info` and
120+
`git repo structure` commands, study the implementation in `builtin/repo.c`,
121+
review the initial GSoC proposal and discussions, compare functionality with
122+
`git rev-parse` and identify gaps, and submit a micro-patch to demonstrate
123+
familiarity with the codebase.
124+
125+
**Resources:**
126+
- [Initial implementation discussion](https://public-inbox.org/git/20250610152117.14826-1-lucasseikioshiro@gmail.com/t/#u)
127+
- [Official git-repo documentation](https://git-scm.com/docs/git-repo)
128+
- [git-rev-parse documentation](https://git-scm.com/docs/git-rev-parse)
129+
- [git-sizer tool](https://github.com/github/git-sizer)
130+
- [Work-in-progress branch for path-related values](https://github.com/lucasoshiro/git/compare/master...repo-info-path/)
131+
106132
_Expected Project Size_: 90 or 175 hours or 350 hours
107133

108134
_Difficulty_: Medium
@@ -119,19 +145,33 @@ _Possible mentors_:
119145

120146
### Complete and extend the `remote-object-info` command for `git cat-file`
121147

122-
From around June 2024 to March 2025 some work to add a
123-
`remote-object-info` sub-command to `git cat-file` was undertaken by
124-
Eric Ju (see https://lore.kernel.org/git/20240628190503.67389-1-eric.peijian@gmail.com/).
125-
This client side work uses previous work by Calvin Wan on the server
126-
side that was merged in 2021.
148+
From around June 2024 to March 2025, work was undertaken by Eric Ju to add a
149+
`remote-object-info` sub-command to `git cat-file`. This client-side work
150+
builds upon previous server-side work by Calvin Wan that was merged in 2021.
151+
The feature allows clients to request information about objects from a remote
152+
repository without downloading the full object content.
153+
154+
See the [initial patch series](https://lore.kernel.org/git/20240628190503.67389-1-eric.peijian@gmail.com/)
155+
for the original proposal and discussion.
127156

128157
The first goal of this project is to rebase and finalize Eric Ju's
129158
patch series by addressing the remaining feedback, so that the
130-
improved series get merged.
159+
improved series can be merged.
131160

132161
The second goal is to build on top of that work to add support for
133-
object type information (`%(objecttype)`). This supports should be
134-
added both on the server and on the client side.
162+
object type information (`%(objecttype)`). This support should be
163+
added both on the server side and on the client side, extending the
164+
protocol to include this metadata.
165+
166+
**Getting started:** Build Git from source, study the existing `git cat-file`
167+
command and its batch modes, review Eric Ju's patch series and the community
168+
feedback, understand Calvin Wan's merged server-side work from 2021, and
169+
submit a micro-patch to demonstrate familiarity with the codebase.
170+
171+
**Resources:**
172+
- [Eric Ju's patch series (June 2024)](https://lore.kernel.org/git/20240628190503.67389-1-eric.peijian@gmail.com/)
173+
- [git-cat-file documentation](https://git-scm.com/docs/git-cat-file)
174+
- Calvin Wan's server-side work (2021) - search mailing list archives
135175

136176
_Expected Project Size_: 90 or 175 hours or 350 hours
137177

@@ -148,5 +188,3 @@ _Possible mentors_:
148188
* Siddharth Asthana < <siddharthasthana31@gmail.com> >
149189
* Lucas Seiki Oshiro < <lucasseikioshiro@gmail.com> >
150190
* Chandra Pratap < <chandrapratap3519@gmail.com> >
151-
152-

0 commit comments

Comments
 (0)