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 | 	exit | ||||||
| fi | 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 | merge_name=$(git fmt-merge-msg $log_arg <"$GIT_DIR/FETCH_HEAD") || exit | ||||||
| case "$rebase" in | case "$rebase" in | ||||||
| true) | true) | ||||||
|  |  | ||||||
|  | @ -4,6 +4,11 @@ test_description='pulling into void' | ||||||
|  |  | ||||||
| . ./test-lib.sh | . ./test-lib.sh | ||||||
|  |  | ||||||
|  | modify () { | ||||||
|  | 	sed -e "$1" <"$2" >"$2.x" && | ||||||
|  | 	mv "$2.x" "$2" | ||||||
|  | } | ||||||
|  |  | ||||||
| D=`pwd` | D=`pwd` | ||||||
|  |  | ||||||
| test_expect_success setup ' | 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_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 | test_done | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Junio C Hamano
						Junio C Hamano