Skip to content

Latest commit

 

History

History
103 lines (68 loc) · 3.79 KB

notes.md

File metadata and controls

103 lines (68 loc) · 3.79 KB

Project ideas

I am going through project ideas from earlier GSoC and outreachy applications to see if I like something.

  • Pack bitmap support for libgit2.
  • Teach git stash to handle unmerged index entries.
  • Port a script to builtin.

Improve consistency of sequencer commands:

Make pack access thread safe:

  • Proposal:
  • Report:

Convert interactive rebase to C:

His repository is a gold mine and I have been digging through code. Do refer to his proposal while drafting my own.

Patch 1:

rebase--interactive.sh has large overlaps with code specialized with preserve merges, splitting which makes the conversion process simpler. preserve-merges is set to be deprecated, so converting it does not make much sense.

  • Add git-rebase--preserve-merges to gitignore
  • Add git-rebase--preserve-merges to Makefile
  • Move relevant code from git-rebase--interactive.sh to git-rebase--preserve-merges.sh
  • Clean out git rebase.sh

Functionally, there are no changes. Code is moved from a shell script to another.

Patch 2:

Rewrite append_todo_help().

  • Create new files rebase-interactive.c and rebase-interactive.h to store specialized functions.
  • Add rebase-interactive.o to Makefile. !!!
  • Remove append_todo_help() call from shell and call rebase--helper with appropriate options. !!!

This is the magic trick of conversion process.

  1. Create a helper C file and implement functions piecewise.
  2. Replace calls within the shell script to the helper -> This ensures that git builds at each step.
  3. Remove the script and rename helper once all calls are implemented.
  4. Modify build process so that everything works.

Patch 3:

Rewrite edit_todo().

  • Modify some settings related to editor.
  • Implement edit_todo() in rebase-interactive.c.
  • Add a flag to trigger edit_todo in rebase--helper.c
  • Replace call in shell script with exec git rebase--helper --edit-todo
  • Use getpid() while debugging so that the process flow works as expected.
  • Maintain a long running integration branch instead of small patches. Avoids the hell of rebasing and sending emails every so often.

Convert interactive rebase to C

Convert git stash to builtin

Incremental rewrite of git-submodules

Incremental rewrite of git bisect

Read up on the process of creating builtin - builtin.h

mergetools should not be a part of main binary and must be implemented as mergetools.c.

Read up on my first contribution which covers the process of implementing a function.

Go through the test suite

Include links to the mailing-list discussions related to project chosen.

Include links to previous drafts of application

Johannes earlier work on conversion of difftool is important!

Johannes, Hannes, David, Denton are possible co-mentors/reviewers.

Create an example repository as in test suite to see how it works.


Shell timings: {real: 12.946s, user: 9.576s, sys: 4.229s} C timings: