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 - D could 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html