Reintegrate: allow update/diff
							parent
							
								
									7bbd09786d
								
							
						
					
					
						commit
						3ec0851d85
					
				
							
								
								
									
										99
									
								
								Reintegrate
								
								
								
								
							
							
						
						
									
										99
									
								
								Reintegrate
								
								
								
								
							|  | @ -1,10 +1,17 @@ | |||
| #!/bin/sh | ||||
|  | ||||
| accept_rerere=t generate=no | ||||
| accept_rerere=t generate=no update= diff= | ||||
| while case "$#,$1" in 0,*) break;; *,-*) ;; esac | ||||
| do | ||||
| 	case "$1" in | ||||
| 	-n)	accept_rerere= ;; | ||||
| 	-d)	update=${2?"diff with what?"} | ||||
| 		diff=yes | ||||
| 		generate=yes | ||||
| 		shift ;; | ||||
| 	-u)	update=${2?"update what?"} | ||||
| 		generate=yes | ||||
| 		shift ;; | ||||
| 	*)	generate=yes | ||||
| 		break ;; | ||||
| 	esac | ||||
|  | @ -34,9 +41,16 @@ no) | |||
| 	do | ||||
| 		case "$eh" in | ||||
| 		"") | ||||
| 			save=$(git rev-parse --verify HEAD) | ||||
|  | ||||
| 			echo >&2 "* $branch" | ||||
| 			git merge "$branch" || accept_rerere || exit | ||||
| 			if git show-ref -q --verify "refs/merge-fix/$branch" | ||||
|  | ||||
| 			this=$(git rev-parse --verify HEAD) | ||||
| 			if test "$this" = "$save" | ||||
| 			then | ||||
| 				: | ||||
| 			elif git show-ref -q --verify "refs/merge-fix/$branch" | ||||
| 			then | ||||
| 				git cherry-pick --no-commit "refs/merge-fix/$branch" && | ||||
| 				EDITOR=: git commit --amend -a | ||||
|  | @ -51,6 +65,14 @@ no) | |||
| 	exit | ||||
| esac | ||||
|  | ||||
| if test -n "$update" && test $# = 0 | ||||
| then | ||||
| 	set x $(sed -n -e '2s/^# //p' <"$update") && | ||||
| 	shift | ||||
| fi | ||||
|  | ||||
| # Generation (or updating) | ||||
|  | ||||
| x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]' | ||||
| x40="$x40$x40$x40$x40$x40$x40$x40$x40" | ||||
| LF=' | ||||
|  | @ -84,29 +106,56 @@ show_pick () { | |||
| 	merged="$(git rev-parse --verify "$commit") pick $msg"  | ||||
| } | ||||
|  | ||||
| echo '#!/bin/sh' | ||||
| echo "$0 <<\\EOF" | ||||
| generate () { | ||||
| 	PROGRAM=$1 | ||||
| 	shift | ||||
| 	echo '#!/bin/sh' | ||||
| 	echo "# $1" | ||||
| 	echo "$PROGRAM" '"$@" <<\EOF' | ||||
| 	git log --pretty=oneline --first-parent "$1" | | ||||
| 	{ | ||||
| 		series= | ||||
| 		while read commit msg | ||||
| 		do | ||||
| 			if other=$(git rev-parse -q --verify "$commit^2") | ||||
| 			then | ||||
| 				show_merge | ||||
| 			else | ||||
| 				show_pick | ||||
| 			fi | ||||
|  | ||||
| git log --pretty=oneline --first-parent "$1" | | ||||
| { | ||||
| 	series= | ||||
| 	while read commit msg | ||||
| 	do | ||||
| 		if other=$(git rev-parse -q --verify "$commit^2") | ||||
| 		then | ||||
| 			show_merge | ||||
| 		else | ||||
| 			show_pick | ||||
| 		fi | ||||
|  | ||||
| 		if test -z "$series" | ||||
| 		then | ||||
| 			series="$merged" | ||||
| 		else | ||||
| 			series="$merged$LF$series" | ||||
| 		fi | ||||
| 	done | ||||
| 	echo "$series" | ||||
| 			if test -z "$series" | ||||
| 			then | ||||
| 				series="$merged" | ||||
| 			else | ||||
| 				series="$merged$LF$series" | ||||
| 			fi | ||||
| 		done | ||||
| 		echo "$series" | ||||
| 	} | ||||
| 	echo EOF | ||||
| } | ||||
|  | ||||
| echo EOF | ||||
| if test -z "$update" | ||||
| then | ||||
| 	generate "$0" "$@" | ||||
| elif test -z "$diff" | ||||
| then | ||||
| 	generate "$0" "$@" | diff -u "$update" - | ||||
| 	if test $? = 0 | ||||
| 	then | ||||
| 		echo >&2 "No changes." | ||||
| 	else | ||||
| 		echo >&2 -n "Update [Y/n]? " | ||||
| 		read yesno | ||||
| 		case "$yesno" in | ||||
| 		[Yy]*) | ||||
| 			generate "$0" "$@" | | ||||
| 			sed -e 's/ :rebased?.*//' >"$update" ;; | ||||
| 		*) | ||||
| 			echo >&2 "No update then." ;; | ||||
| 		esac | ||||
| 	fi | ||||
| else | ||||
| 	generate "$0" "$@" | diff -u "$update" - | ||||
| fi | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Junio C Hamano
						Junio C Hamano