Reintegrate: allow update/diff
							parent
							
								
									7bbd09786d
								
							
						
					
					
						commit
						3ec0851d85
					
				
							
								
								
									
										99
									
								
								Reintegrate
								
								
								
								
							
							
						
						
									
										99
									
								
								Reintegrate
								
								
								
								
							|  | @ -1,10 +1,17 @@ | ||||||
| #!/bin/sh | #!/bin/sh | ||||||
|  |  | ||||||
| accept_rerere=t generate=no | accept_rerere=t generate=no update= diff= | ||||||
| while case "$#,$1" in 0,*) break;; *,-*) ;; esac | while case "$#,$1" in 0,*) break;; *,-*) ;; esac | ||||||
| do | do | ||||||
| 	case "$1" in | 	case "$1" in | ||||||
| 	-n)	accept_rerere= ;; | 	-n)	accept_rerere= ;; | ||||||
|  | 	-d)	update=${2?"diff with what?"} | ||||||
|  | 		diff=yes | ||||||
|  | 		generate=yes | ||||||
|  | 		shift ;; | ||||||
|  | 	-u)	update=${2?"update what?"} | ||||||
|  | 		generate=yes | ||||||
|  | 		shift ;; | ||||||
| 	*)	generate=yes | 	*)	generate=yes | ||||||
| 		break ;; | 		break ;; | ||||||
| 	esac | 	esac | ||||||
|  | @ -34,9 +41,16 @@ no) | ||||||
| 	do | 	do | ||||||
| 		case "$eh" in | 		case "$eh" in | ||||||
| 		"") | 		"") | ||||||
|  | 			save=$(git rev-parse --verify HEAD) | ||||||
|  |  | ||||||
| 			echo >&2 "* $branch" | 			echo >&2 "* $branch" | ||||||
| 			git merge "$branch" || accept_rerere || exit | 			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 | 			then | ||||||
| 				git cherry-pick --no-commit "refs/merge-fix/$branch" && | 				git cherry-pick --no-commit "refs/merge-fix/$branch" && | ||||||
| 				EDITOR=: git commit --amend -a | 				EDITOR=: git commit --amend -a | ||||||
|  | @ -51,6 +65,14 @@ no) | ||||||
| 	exit | 	exit | ||||||
| esac | 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='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]' | ||||||
| x40="$x40$x40$x40$x40$x40$x40$x40$x40" | x40="$x40$x40$x40$x40$x40$x40$x40$x40" | ||||||
| LF=' | LF=' | ||||||
|  | @ -84,29 +106,56 @@ show_pick () { | ||||||
| 	merged="$(git rev-parse --verify "$commit") pick $msg"  | 	merged="$(git rev-parse --verify "$commit") pick $msg"  | ||||||
| } | } | ||||||
|  |  | ||||||
| echo '#!/bin/sh' | generate () { | ||||||
| echo "$0 <<\\EOF" | 	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" | | 			if test -z "$series" | ||||||
| { | 			then | ||||||
| 	series= | 				series="$merged" | ||||||
| 	while read commit msg | 			else | ||||||
| 	do | 				series="$merged$LF$series" | ||||||
| 		if other=$(git rev-parse -q --verify "$commit^2") | 			fi | ||||||
| 		then | 		done | ||||||
| 			show_merge | 		echo "$series" | ||||||
| 		else | 	} | ||||||
| 			show_pick | 	echo EOF | ||||||
| 		fi |  | ||||||
|  |  | ||||||
| 		if test -z "$series" |  | ||||||
| 		then |  | ||||||
| 			series="$merged" |  | ||||||
| 		else |  | ||||||
| 			series="$merged$LF$series" |  | ||||||
| 		fi |  | ||||||
| 	done |  | ||||||
| 	echo "$series" |  | ||||||
| } | } | ||||||
|  |  | ||||||
| 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