| #!/bin/sh | 
 |  | 
 | test_description='push with --set-upstream' | 
 | . ./test-lib.sh | 
 |  | 
 | test_expect_success 'setup bare parent' ' | 
 | 	git init --bare parent && | 
 | 	git remote add upstream parent | 
 | ' | 
 |  | 
 | test_expect_success 'setup local commit' ' | 
 | 	echo content >file && | 
 | 	git add file && | 
 | 	git commit -m one | 
 | ' | 
 |  | 
 | check_config() { | 
 | 	(echo $2; echo $3) >expect.$1 | 
 | 	(git config branch.$1.remote | 
 | 	 git config branch.$1.merge) >actual.$1 | 
 | 	test_cmp expect.$1 actual.$1 | 
 | } | 
 |  | 
 | test_expect_success 'push -u master:master' ' | 
 | 	git push -u upstream master:master && | 
 | 	check_config master upstream refs/heads/master | 
 | ' | 
 |  | 
 | test_expect_success 'push -u master:other' ' | 
 | 	git push -u upstream master:other && | 
 | 	check_config master upstream refs/heads/other | 
 | ' | 
 |  | 
 | test_expect_success 'push -u --dry-run master:otherX' ' | 
 | 	git push -u --dry-run upstream master:otherX && | 
 | 	check_config master upstream refs/heads/other | 
 | ' | 
 |  | 
 | test_expect_success 'push -u master2:master2' ' | 
 | 	git branch master2 && | 
 | 	git push -u upstream master2:master2 && | 
 | 	check_config master2 upstream refs/heads/master2 | 
 | ' | 
 |  | 
 | test_expect_success 'push -u master2:other2' ' | 
 | 	git push -u upstream master2:other2 && | 
 | 	check_config master2 upstream refs/heads/other2 | 
 | ' | 
 |  | 
 | test_expect_success 'push -u :master2' ' | 
 | 	git push -u upstream :master2 && | 
 | 	check_config master2 upstream refs/heads/other2 | 
 | ' | 
 |  | 
 | test_expect_success 'push -u --all' ' | 
 | 	git branch all1 && | 
 | 	git branch all2 && | 
 | 	git push -u --all && | 
 | 	check_config all1 upstream refs/heads/all1 && | 
 | 	check_config all2 upstream refs/heads/all2 | 
 | ' | 
 |  | 
 | test_expect_success 'push -u HEAD' ' | 
 | 	git checkout -b headbranch && | 
 | 	git push -u upstream HEAD && | 
 | 	check_config headbranch upstream refs/heads/headbranch | 
 | ' | 
 |  | 
 | test_done |