This also bumps the stable nixpkgs to 20.09 as of 2020-11-21, because there is some breakage in the git build related to the netrc credentials helper which someone has taken care of in nixpkgs. The stable channel is not used for anything other than git, so this should be fine. Change-Id: I3575a19dab09e1e9556cf8231d717de9890484fb
		
			
				
	
	
		
			75 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| test_description='checkout can handle submodules'
 | |
| 
 | |
| . ./test-lib.sh
 | |
| . "$TEST_DIRECTORY"/lib-submodule-update.sh
 | |
| 
 | |
| test_expect_success 'setup' '
 | |
| 	mkdir submodule &&
 | |
| 	(cd submodule &&
 | |
| 	 git init &&
 | |
| 	 test_commit first) &&
 | |
| 	git add submodule &&
 | |
| 	test_tick &&
 | |
| 	git commit -m superproject &&
 | |
| 	(cd submodule &&
 | |
| 	 test_commit second) &&
 | |
| 	git add submodule &&
 | |
| 	test_tick &&
 | |
| 	git commit -m updated.superproject
 | |
| '
 | |
| 
 | |
| test_expect_success '"reset <submodule>" updates the index' '
 | |
| 	git update-index --refresh &&
 | |
| 	git diff-files --quiet &&
 | |
| 	git diff-index --quiet --cached HEAD &&
 | |
| 	git reset HEAD^ submodule &&
 | |
| 	test_must_fail git diff-files --quiet &&
 | |
| 	git reset submodule &&
 | |
| 	git diff-files --quiet
 | |
| '
 | |
| 
 | |
| test_expect_success '"checkout <submodule>" updates the index only' '
 | |
| 	git update-index --refresh &&
 | |
| 	git diff-files --quiet &&
 | |
| 	git diff-index --quiet --cached HEAD &&
 | |
| 	git checkout HEAD^ submodule &&
 | |
| 	test_must_fail git diff-files --quiet &&
 | |
| 	git checkout HEAD submodule &&
 | |
| 	git diff-files --quiet
 | |
| '
 | |
| 
 | |
| test_expect_success '"checkout <submodule>" honors diff.ignoreSubmodules' '
 | |
| 	git config diff.ignoreSubmodules dirty &&
 | |
| 	echo x> submodule/untracked &&
 | |
| 	git checkout HEAD >actual 2>&1 &&
 | |
| 	test_must_be_empty actual
 | |
| '
 | |
| 
 | |
| test_expect_success '"checkout <submodule>" honors submodule.*.ignore from .gitmodules' '
 | |
| 	git config diff.ignoreSubmodules none &&
 | |
| 	git config -f .gitmodules submodule.submodule.path submodule &&
 | |
| 	git config -f .gitmodules submodule.submodule.ignore untracked &&
 | |
| 	git checkout HEAD >actual 2>&1 &&
 | |
| 	test_must_be_empty actual
 | |
| '
 | |
| 
 | |
| test_expect_success '"checkout <submodule>" honors submodule.*.ignore from .git/config' '
 | |
| 	git config -f .gitmodules submodule.submodule.ignore none &&
 | |
| 	git config submodule.submodule.path submodule &&
 | |
| 	git config submodule.submodule.ignore all &&
 | |
| 	git checkout HEAD >actual 2>&1 &&
 | |
| 	test_must_be_empty actual
 | |
| '
 | |
| 
 | |
| KNOWN_FAILURE_DIRECTORY_SUBMODULE_CONFLICTS=1
 | |
| test_submodule_switch_recursing_with_args "checkout"
 | |
| 
 | |
| test_submodule_forced_switch_recursing_with_args "checkout -f"
 | |
| 
 | |
| test_submodule_switch "checkout"
 | |
| 
 | |
| test_submodule_forced_switch "checkout -f"
 | |
| 
 | |
| test_done
 |