Heads up: major rebase -i -p rework coming up
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Jan 24, 2009, 20:25 UTC
- Message-ID
- <alpine.DEB.1.00.0901242056070.14855@racer>
Hi all,
as probably everybody agrees, the code to preserve merges is a big mess right now.
Worse, the whole concept of "pick <merge-sha1>" just does not fly well.
So I started a _major_ cleanup, which happens to reduce the code very nicely so far.
It will take a few days to flesh out, I guess, but these are the major ideas of my work:
- pick $sha1
will only work on non-merges in the future
- merge $sha1 [$sha1...] was $sha1 "Merge ..."
will merge the given list of commits into the current HEAD, for the user's reference and to keep up-to-date what was rewritten, the original merge is shown after the keyword "was" (which is not a valid SHA-1, luckily)
- goto $sha1
will reset the HEAD to the given commit
- $sha1'
for merge and goto, if a $sha1 ends in a single quote, the rewritten commit is substituted (if there is one)
Example:
A - B - - - E
\ /
C - Dcould yield this TODO script:
pick A pick C pick D goto A' pick B merge D' was E
This should lead to a much more intuitive user experience.
I am very sorry if somebody actually scripted rebase -i -p (by setting GIT_EDITOR with a script), but I am very certain that this cleanup is absolutely necessary to make rebase -i -p useful.
As always, I am thankful for suggestions to make this even more useful, or even easier to operate.
Ciao, Dscho