Re: help reproduce fast-forward in rebase
Hi Nguyen,
Nguyen Thai Ngoc Duy wrote:
> Hi,
>
> I'm rewriting rebase in C
Oh. First two remarks that may or may not affect you:
1. rebase -i -p is reworked by Dscho:
http://repo.or.cz/w/git/dscho.git?a=shortlog;h=refs/heads/rebase-i-p
2. sequencer, a C backend for git am and git rebase -i, actually exists
http://repo.or.cz/w/git/sbeyer.git?a=shortlog;h=refs/heads/seq-builtin-dev
although to even more lack of time the missing/non-perfect parts are not
getting fewer.Both remarks regard "rebase -i" and not the am-based rebase, which means you are not getting into some kind of conflict with these other developments (or IOW: you are not doing already done work a second or third time) when you keep your rebase rewrite close to the original in sh.
Show 12 quoted lines
> and do not quite understand this code inside git-rebase.sh
>
> # If the $onto is a proper descendant of the tip of the branch, then
> # we just fast forwarded.
> if test "$mb" = "$branch"
> then
> echo >&2 "Fast-forwarded $branch_name to $onto_name."
> move_to_original_branch
> exit 0
> fi
>
> Anyone has an example how to make "git rebase" execute that code?
Yes, "if the $onto is a proper descendant of the tip of the branch", then there are no commits that have to be rewritten. Rebasing can be done by simple fast-forwarding, i.e. setting the branch to another, yet existing commit.
Example:
* onto * onto, mybranch
| |
* *
| |
* mybranch => *
| |
* *
| |
Regards,
Stephan