#!/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