50 lines
		
	
	
		
			978 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			50 lines
		
	
	
		
			978 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
| #!/bin/sh
 | |
| #
 | |
| # Copyright (c) 2005 Junio C Hamano.
 | |
| #
 | |
| 
 | |
| usage="usage: $0 "'<upstream> [<head>]
 | |
| 
 | |
| 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 --verify "$1"` &&
 | |
|    junio=`git-rev-parse --verify HEAD` || exit
 | |
|    ;;
 | |
| 2) linus=`git-rev-parse --verify "$1"` &&
 | |
|    junio=`git-rev-parse --verify "$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 -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
 |