@@ -50,6 +50,12 @@ all affected code paths continue to work correctly. This includes
5050updating tests, fixing any regressions, and documenting the
5151architectural 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
92105Some 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
103116potential improvements, and then implement them. It requires the
104117desire 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
128157The first goal of this project is to rebase and finalize Eric Ju's
129158patch series by addressing the remaining feedback, so that the
130- improved series get merged.
159+ improved series can be merged.
131160
132161The 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