Skip to content

Commit f9f79e3

Browse files
committed
SoC-2019-Ideas: add two more ideas
Those are smaller projects, so that Git can accept students from a wider audience (i.e. students who are not already familiar with C, or with mailing list-centered project workflows). The downside is that this will require more effort from the mentors than was common in past years. The upside is that this will bring all the benefits of more inclusive development. Signed-off-by: Johannes Schindelin <[email protected]>
1 parent 8b4af9f commit f9f79e3

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

SoC-2019-Ideas.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,56 @@ This would consist in taking care of the following issues:
218218
`This reverts commit <sha-of-rewritten-A>`.)
219219
Do this for both sha1sums and sha1sum abbreviations in commit messages.
220220

221+
### `git revert --drop` and `git commit --reword`
222+
223+
- Language: C, shell (bash)
224+
- Difficulty: easy
225+
- Possible mentors: N/A
226+
227+
The interactive rebase already supports the special oneline prefixes
228+
`fixup!` and `squash!` in the `--autosquash` mode; these commits will
229+
be reordered in the todo list and their `pick` commands adjusted
230+
accordingly.
231+
232+
These commits can be crafted conveniently via the `--fixup` and
233+
`--squash` options of `git commit`.
234+
235+
The idea of this project is to add two more actions, `drop!` and
236+
`reword!`:
237+
238+
* The `drop!` action (for convenience, `git revert --drop <commit>`)
239+
would not only revert the commit, but a subsequent `git rebase -i
240+
--autosquash` would reorder the `drop!` commit directly after the
241+
matching commit, then change the matching commit's `pick` to `drop`
242+
and comment out the `drop!` one.
243+
244+
* The `reword!` action (for convenience, `git commit --reword <commit>`)
245+
would let the user edit the commit message of the referenced commit,
246+
and add an "empty" commit (i.e. a commit that does not modify any
247+
files) with that commit message, prefixed with the `reword!` oneline.
248+
The next `git rebase -i --autosquash` would then not only reorder
249+
that commit after verifying that it is indeed an empty commit, it
250+
would then also replace the `pick` command with an appropriate new
251+
command (say, by extending the `squash` command to accept a `--reword`
252+
option).
253+
254+
This project will need to begin by implementing test cases to define
255+
the expected outcome, and then implement the actual functionality.
256+
257+
### Teach `git stash` to handle unmerged index entries
258+
259+
- Language: C, shell (bash)
260+
- Difficulty: easy
261+
- Possible mentors: N/A
262+
263+
When the index is unmerged, `git stash` refuses to do anything. That is
264+
unnecessary, though, as it could easily craft e.g. an octopus merge
265+
of the various stages. A subsequent `git stash apply` can detect that
266+
octopus and re-generate the unmerged index.
267+
268+
See also the discussion in [this Git mailing list
269+
thread](https://public-inbox.org/git/[email protected]/).
270+
221271
## Note about refactoring projects versus projects that implement new features
222272

223273
Over the years we have been favoring refactoring projects over

0 commit comments

Comments
 (0)