#!/bin/sh # # Copyright (c) 2005 Junio C Hamano. # . git-sh-setup-script || die "Not a git archive." usage="usage: $0 "' [] Uses output from git-cherry to rebase local commits to the new head of upstream tree.' case "$#,$1" in 1,*..*) upstream=$(expr "$1" : '\(.*\)\.\.') ours=$(expr "$1" : '.*\.\.\(.*\)$') set x "$upstream" "$ours" shift ;; esac case "$#" in 1) upstream=`git-rev-parse --verify "$1"` && ours=`git-rev-parse --verify HEAD` || exit ;; 2) upstream=`git-rev-parse --verify "$1"` && ours=`git-rev-parse --verify "$2"` || exit ;; *) echo >&2 "$usage"; exit 1 ;; esac git-read-tree -m -u $ours $upstream && git-rev-parse --verify "$upstream^0" >"$GIT_DIR/HEAD" || exit tmp=.rebase-tmp$$ fail=$tmp-fail trap "rm -rf $tmp-*" 0 1 2 3 15 >$fail git-cherry $upstream $ours | 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 -C "$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