Merge branch 'en/rebase-against-rebase-fix'
* en/rebase-against-rebase-fix: pull --rebase: Avoid spurious conflicts and reapplying unnecessary patches t5520-pull: Add testcases showing spurious conflicts from git pull --rebasemaint
						commit
						d25c72f7da
					
				|  | @ -273,6 +273,15 @@ then | |||
| 	exit | ||||
| fi | ||||
|  | ||||
| if test true = "$rebase" | ||||
| then | ||||
| 	o=$(git show-branch --merge-base $curr_branch $merge_head $oldremoteref) | ||||
| 	if test "$oldremoteref" = "$o" | ||||
| 	then | ||||
| 		unset oldremoteref | ||||
| 	fi | ||||
| fi | ||||
|  | ||||
| merge_name=$(git fmt-merge-msg $log_arg <"$GIT_DIR/FETCH_HEAD") || exit | ||||
| case "$rebase" in | ||||
| true) | ||||
|  |  | |||
|  | @ -4,6 +4,11 @@ test_description='pulling into void' | |||
|  | ||||
| . ./test-lib.sh | ||||
|  | ||||
| modify () { | ||||
| 	sed -e "$1" <"$2" >"$2.x" && | ||||
| 	mv "$2.x" "$2" | ||||
| } | ||||
|  | ||||
| D=`pwd` | ||||
|  | ||||
| test_expect_success setup ' | ||||
|  | @ -160,4 +165,61 @@ test_expect_success 'pull --rebase works on branch yet to be born' ' | |||
| 	test_cmp expect actual | ||||
| ' | ||||
|  | ||||
| test_expect_success 'setup for detecting upstreamed changes' ' | ||||
| 	mkdir src && | ||||
| 	(cd src && | ||||
| 	 git init && | ||||
| 	 printf "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n" > stuff && | ||||
| 	 git add stuff && | ||||
| 	 git commit -m "Initial revision" | ||||
| 	) && | ||||
| 	git clone src dst && | ||||
| 	(cd src && | ||||
| 	 modify s/5/43/ stuff && | ||||
| 	 git commit -a -m "5->43" && | ||||
| 	 modify s/6/42/ stuff && | ||||
| 	 git commit -a -m "Make it bigger" | ||||
| 	) && | ||||
| 	(cd dst && | ||||
| 	 modify s/5/43/ stuff && | ||||
| 	 git commit -a -m "Independent discovery of 5->43" | ||||
| 	) | ||||
| ' | ||||
|  | ||||
| test_expect_success 'git pull --rebase detects upstreamed changes' ' | ||||
| 	(cd dst && | ||||
| 	 git pull --rebase && | ||||
| 	 test -z "$(git ls-files -u)" | ||||
| 	) | ||||
| ' | ||||
|  | ||||
| test_expect_success 'setup for avoiding reapplying old patches' ' | ||||
| 	(cd dst && | ||||
| 	 test_might_fail git rebase --abort && | ||||
| 	 git reset --hard origin/master | ||||
| 	) && | ||||
| 	git clone --bare src src-replace.git && | ||||
| 	rm -rf src && | ||||
| 	mv src-replace.git src && | ||||
| 	(cd dst && | ||||
| 	 modify s/2/22/ stuff && | ||||
| 	 git commit -a -m "Change 2" && | ||||
| 	 modify s/3/33/ stuff && | ||||
| 	 git commit -a -m "Change 3" && | ||||
| 	 modify s/4/44/ stuff && | ||||
| 	 git commit -a -m "Change 4" && | ||||
| 	 git push && | ||||
|  | ||||
| 	 modify s/44/55/ stuff && | ||||
| 	 git commit --amend -a -m "Modified Change 4" | ||||
| 	) | ||||
| ' | ||||
|  | ||||
| test_expect_success 'git pull --rebase does not reapply old patches' ' | ||||
| 	(cd dst && | ||||
| 	 test_must_fail git pull --rebase && | ||||
| 	 test 1 = $(find .git/rebase-apply -name "000*" | wc -l) | ||||
| 	) | ||||
| ' | ||||
|  | ||||
| test_done | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Junio C Hamano
						Junio C Hamano