This series adds a "ref" command to rebase -i, and options --rewrite-{refs,heads,tags} to generate "ref" commands in the original TODO file. This makes it easy to rebase a branch together with intermediate markers, or a series of branches. For example, in this situation: part1 part2 topic | | | v v v A--*--*--*--*--*--* \ B <--master we may want to rebase 'topic' onto the new master, rewriting the intermediate branches 'part1', 'part2' to the corresponding new commits. This can be done with a sequence of "git rebase --onto" commands, but it's tricky to get right. With this series, the command $ git rebase --rewrite-heads master topic suffices to produce this result: part1 part2 topic A | | | \ v v v B--*--*--*--*--*--* ^ | master I originally submitted a version of this series nearly a year and a half ago [1]. This version has been rebased to the new release 1.7.6 (Martin von Zweigbergk's cleanups gave me quite some conflicts to resolve, but are nevertheless much appreciated!) and the interface has been adjusted for the comments of Junio and others [2]. The general command is --rewrite-refs=PATTERN; --rewrite-heads and --rewrite-tags are provided as shortcuts, the former being equivalent to the --refs of my original proposal. [1] http://www.amailbox.net/mailarchive/git/2009/12/22/18967 [2] http://www.amailbox.net/mailarchive/git/2009/12/22/18972 I have no excuse for the year and a half of delay in submitting the revised version, but I believe that late is better than never. =) The series contains two preparatory patches that are independently useful: pretty: Add %D for script-friendly decoration for-each-ref: --stdin to match specified refs against pattern Each one exposes a bit more knowledge of the repository in a machine-readable form convenient for scripting. I hope other people may find them useful in writing other scripts. Greg --- Greg Price (6): rebase -i: Add the "ref" command pretty: Add %D for script-friendly decoration for-each-ref: --stdin to match specified refs against pattern rebase: --rewrite-{refs,heads,tags} to pull refs along with branch t/lib-rebase.sh: pass through ref commands rebase --rewrite-refs: tests Documentation/git-rebase.txt | 15 ++++++++ Documentation/pretty-formats.txt | 1 + builtin/for-each-ref.c | 22 ++++++++++- git-rebase--interactive.sh | 37 ++++++++++++++++++- git-rebase.sh | 28 ++++++++++++++ pretty.c | 33 +++++++++++++---- t/lib-rebase.sh | 2 +- t/t3420-rebase-ref.sh | 75 ++++++++++++++++++++++++++++++++++++++ 8 files changed, 201 insertions(+), 12 deletions(-) create mode 100644 t/t3420-rebase-ref.sh -- 1.7.5.4 -- 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