This is the idea page for Summer of Code 2023 for Git.
Please completely read the general application information page before reading the idea list below.
Students: Please consider these ideas as starting points for generating proposals. We are also more than happy to receive proposals for other ideas related to Git. Make sure you have read the “Note about refactoring projects versus projects that implement new features” in the general application information page though.
The spare index feature accelerates Git commands when using sparse-checkout in cone mode. This works by modifying the on-disk index file in a way that includes “sparse directory” entries instead of only file entries. This requires care when enabling the sparse index for different commands, as custom logic might be necessary. At minimum, interaction with the sparse index needs to be carefully tested in the Git test suite when enabling it.
The most-used commands have already been integrated with the sparse index feature. This process usually takes a few steps:
t1092-sparse-checkout-compatibility.sh
for the builtin, with a focus on what happens for paths outside of the
sparse-checkout cone.command_requires_full_index
setting
in the builtin and ensure the tests pass.Here is a list of builtins that could be integrated with the sparse index. They are generally organized in order of least-difficult to most-difficult. This allows the student to gain partial success early in the project and the student can complete as many as possible in the timeframe (without expectation that all will be completed during the project).
git describe
git write-tree
git diff-files
git diff-index
git diff-tree
git worktree
git check-attr
git checkout--worker
(for parallel checkout)git apply
git am
git fsck
git merge-index
git rerere
Expected Project Size: 175 hours or 350 hours
Difficulty: Medium
Languages: C, shell(bash)
Possible mentor: Victoria Dye < vdye@github.com >
Git has an old problem of duplicated implementations of some logic. For example, Git had at least 4 different implementations to format command output for different commands.
Our previous GSoC students and Outreachy interns unified some of the formatting logic into ref-filter and got rid of similar logic in some command specific files. Current task is to continue this work and reuse ref-filter formatting logic in pretty.
See:
Expected Project Size: 175 hours or 350 hours
Difficulty: Medium
Languages: C, shell(bash)
Possible mentors: