From 59e6b23acef9d29b9bdabc38ee80361e19ef7ebe Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sat, 25 Jun 2005 02:23:43 -0700 Subject: [PATCH] git-rebase-script: rebase local commits to new upstream head. Using git-cherry, forward port local commits missing from the new upstream head. This also depends on "-m" flag support in git-commit-script. Signed-off-by: Junio C Hamano Signed-off-by: Linus Torvalds --- git-rebase-script | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100755 git-rebase-script (limited to 'git-rebase-script') diff --git a/git-rebase-script b/git-rebase-script new file mode 100755 index 000000000..10ab700d0 --- /dev/null +++ b/git-rebase-script @@ -0,0 +1,49 @@ +#!/bin/sh +# +# Copyright (c) 2005 Junio C Hamano. +# + +usage="usage: $0 "' [] + +Uses output from git-cherry to rebase local commits to the new head of +upstream tree.' + +: ${GIT_DIR=.git} + +case "$#" in +1) linus=`git-rev-parse "$1"` && + junio=`git-rev-parse HEAD` || exit + ;; +2) linus=`git-rev-parse "$1"` && + junio=`git-rev-parse "$2"` || exit + ;; +*) echo >&2 "$usage"; exit 1 ;; +esac + +git-read-tree -m -u $junio $linus && +echo "$linus" >"$GIT_DIR/HEAD" || exit + +tmp=.rebase-tmp$$ +fail=$tmp-fail +trap "rm -rf $tmp-*" 0 1 2 3 15 + +>$fail + +git-cherry $linus $junio | +while read sign commit +do + case "$sign" in + -) continue ;; + esac + S=`cat "$GIT_DIR/HEAD"` && + GIT_EXTERNAL_DIFF=git-apply-patch-script git-diff-tree -p $commit && + git-commit-script -m "$commit" || { + echo $commit >>$fail + git-read-tree --reset -u $S + } +done +if test -s $fail +then + echo Some commits could not be rebased, check by hand: + cat $fail +fi -- cgit v1.2.1