This patch series provides the bare minimum to run more than the trivial
rebase (i.e. `git rebase <upstream>`).

Here, I have implemented essential options needed to make this a
builtin rebase. Ofcourse, to accomplish the task of builtin rebase, I had to
do essential optimizations and add certain shield which weren't present in
original rebase.

It is based the latest iteration of pk/rebase-in-c, i.e. ac7f467fef8b
(builtin/rebase: support running "git rebase <upstream>", 2018-08-07).

This is the second patch series that brings us more closer to a
builtin "git rebase".
If you like to view the development branch, you can view
(https://github.com/git/git/pull/505), where I have kept my commits up to date
and leveraged Travis(there is sporadic failures in t5520 for macos gcc and
isn't due to my patches) for extra testing other than my system.

I plan on submitting the next patch series today, in this order:

bultin rebase actions: The builtin rebase will add all the rebase actions.
builtin rebase options: The builtin rebase will add all the options supported
by original rebase.
builtin rebase rest: The builtin rebase will convert all the remaining shell
scripts from the original rebase to C.
default to builtin rebase: This will turn on the feature-complete builtin
rebase to on.

These patch series are built on top of each other, i.e. they depend on this 
order.

The motivation to organize these patch series is to make review easier and
for pleasant read with the help of my GSoC mentors since, this is the final
week of GSoC and other GSoC students most likely have submitted their
respective works which will need lots of review.

Pratik Karki (11):
  builtin rebase: support --onto
  builtin rebase: support `git rebase --onto A...B`
  builtin rebase: handle the pre-rebase hook (and add --no-verify)
  builtin rebase: support --quiet
  builtin rebase: support the `verbose` and `diffstat` options
  builtin rebase: require a clean worktree
  builtin rebase: try to fast forward when possible
  builtin rebase: support --force-rebase
  builtin rebase: start a new rebase only if none is in progress
  builtin rebase: only store fully-qualified refs in `options.head_name`
  builtin rebase: support `git rebase <upstream> <switch-to>`

 builtin/rebase.c | 333 +++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 320 insertions(+), 13 deletions(-)

-- 
2.18.0

Reply via email to