 4bf9dd9782
			
		
	
	4bf9dd9782
	
	
	
		
			
			Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
			
				
	
	
		
			207 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			207 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| #
 | |
| # Copyright (c) 2009 Red Hat, Inc.
 | |
| #
 | |
| 
 | |
| test_description='Test updating submodules
 | |
| 
 | |
| This test verifies that "git submodule update" detaches the HEAD of the
 | |
| submodule and "git submodule update --rebase/--merge" does not detach the HEAD.
 | |
| '
 | |
| 
 | |
| . ./test-lib.sh
 | |
| 
 | |
| 
 | |
| compare_head()
 | |
| {
 | |
|     sha_master=`git rev-list --max-count=1 master`
 | |
|     sha_head=`git rev-list --max-count=1 HEAD`
 | |
| 
 | |
|     test "$sha_master" = "$sha_head"
 | |
| }
 | |
| 
 | |
| 
 | |
| test_expect_success 'setup a submodule tree' '
 | |
| 	echo file > file &&
 | |
| 	git add file &&
 | |
| 	test_tick &&
 | |
| 	git commit -m upstream &&
 | |
| 	git clone . super &&
 | |
| 	git clone super submodule &&
 | |
| 	git clone super rebasing &&
 | |
| 	git clone super merging &&
 | |
| 	(cd super &&
 | |
| 	 git submodule add ../submodule submodule &&
 | |
| 	 test_tick &&
 | |
| 	 git commit -m "submodule" &&
 | |
| 	 git submodule init submodule
 | |
| 	) &&
 | |
| 	(cd submodule &&
 | |
| 	echo "line2" > file &&
 | |
| 	git add file &&
 | |
| 	git commit -m "Commit 2"
 | |
| 	) &&
 | |
| 	(cd super &&
 | |
| 	 (cd submodule &&
 | |
| 	  git pull --rebase origin
 | |
| 	 ) &&
 | |
| 	 git add submodule &&
 | |
| 	 git commit -m "submodule update"
 | |
| 	) &&
 | |
| 	(cd super &&
 | |
| 	 git submodule add ../rebasing rebasing &&
 | |
| 	 test_tick &&
 | |
| 	 git commit -m "rebasing"
 | |
| 	) &&
 | |
| 	(cd super &&
 | |
| 	 git submodule add ../merging merging &&
 | |
| 	 test_tick &&
 | |
| 	 git commit -m "rebasing"
 | |
| 	)
 | |
| '
 | |
| 
 | |
| test_expect_success 'submodule update detaching the HEAD ' '
 | |
| 	(cd super/submodule &&
 | |
| 	 git reset --hard HEAD~1
 | |
| 	) &&
 | |
| 	(cd super &&
 | |
| 	 (cd submodule &&
 | |
| 	  compare_head
 | |
| 	 ) &&
 | |
| 	 git submodule update submodule &&
 | |
| 	 cd submodule &&
 | |
| 	 ! compare_head
 | |
| 	)
 | |
| '
 | |
| 
 | |
| test_expect_success 'submodule update --rebase staying on master' '
 | |
| 	(cd super/submodule &&
 | |
| 	  git checkout master
 | |
| 	) &&
 | |
| 	(cd super &&
 | |
| 	 (cd submodule &&
 | |
| 	  compare_head
 | |
| 	 ) &&
 | |
| 	 git submodule update --rebase submodule &&
 | |
| 	 cd submodule &&
 | |
| 	 compare_head
 | |
| 	)
 | |
| '
 | |
| 
 | |
| test_expect_success 'submodule update --merge staying on master' '
 | |
| 	(cd super/submodule &&
 | |
| 	  git reset --hard HEAD~1
 | |
| 	) &&
 | |
| 	(cd super &&
 | |
| 	 (cd submodule &&
 | |
| 	  compare_head
 | |
| 	 ) &&
 | |
| 	 git submodule update --merge submodule &&
 | |
| 	 cd submodule &&
 | |
| 	 compare_head
 | |
| 	)
 | |
| '
 | |
| 
 | |
| test_expect_success 'submodule update - rebase in .git/config' '
 | |
| 	(cd super &&
 | |
| 	 git config submodule.submodule.update rebase
 | |
| 	) &&
 | |
| 	(cd super/submodule &&
 | |
| 	  git reset --hard HEAD~1
 | |
| 	) &&
 | |
| 	(cd super &&
 | |
| 	 (cd submodule &&
 | |
| 	  compare_head
 | |
| 	 ) &&
 | |
| 	 git submodule update submodule &&
 | |
| 	 cd submodule &&
 | |
| 	 compare_head
 | |
| 	)
 | |
| '
 | |
| 
 | |
| test_expect_success 'submodule update - checkout in .git/config but --rebase given' '
 | |
| 	(cd super &&
 | |
| 	 git config submodule.submodule.update checkout
 | |
| 	) &&
 | |
| 	(cd super/submodule &&
 | |
| 	  git reset --hard HEAD~1
 | |
| 	) &&
 | |
| 	(cd super &&
 | |
| 	 (cd submodule &&
 | |
| 	  compare_head
 | |
| 	 ) &&
 | |
| 	 git submodule update --rebase submodule &&
 | |
| 	 cd submodule &&
 | |
| 	 compare_head
 | |
| 	)
 | |
| '
 | |
| 
 | |
| test_expect_success 'submodule update - merge in .git/config' '
 | |
| 	(cd super &&
 | |
| 	 git config submodule.submodule.update merge
 | |
| 	) &&
 | |
| 	(cd super/submodule &&
 | |
| 	  git reset --hard HEAD~1
 | |
| 	) &&
 | |
| 	(cd super &&
 | |
| 	 (cd submodule &&
 | |
| 	  compare_head
 | |
| 	 ) &&
 | |
| 	 git submodule update submodule &&
 | |
| 	 cd submodule &&
 | |
| 	 compare_head
 | |
| 	)
 | |
| '
 | |
| 
 | |
| test_expect_success 'submodule update - checkout in .git/config but --merge given' '
 | |
| 	(cd super &&
 | |
| 	 git config submodule.submodule.update checkout
 | |
| 	) &&
 | |
| 	(cd super/submodule &&
 | |
| 	  git reset --hard HEAD~1
 | |
| 	) &&
 | |
| 	(cd super &&
 | |
| 	 (cd submodule &&
 | |
| 	  compare_head
 | |
| 	 ) &&
 | |
| 	 git submodule update --merge submodule &&
 | |
| 	 cd submodule &&
 | |
| 	 compare_head
 | |
| 	)
 | |
| '
 | |
| 
 | |
| test_expect_success 'submodule update - checkout in .git/config' '
 | |
| 	(cd super &&
 | |
| 	 git config submodule.submodule.update checkout
 | |
| 	) &&
 | |
| 	(cd super/submodule &&
 | |
| 	  git reset --hard HEAD^
 | |
| 	) &&
 | |
| 	(cd super &&
 | |
| 	 (cd submodule &&
 | |
| 	  compare_head
 | |
| 	 ) &&
 | |
| 	 git submodule update submodule &&
 | |
| 	 cd submodule &&
 | |
| 	 ! compare_head
 | |
| 	)
 | |
| '
 | |
| 
 | |
| test_expect_success 'submodule init picks up rebase' '
 | |
| 	(cd super &&
 | |
| 	 git config -f .gitmodules submodule.rebasing.update rebase &&
 | |
| 	 git submodule init rebasing &&
 | |
| 	 test "rebase" = "$(git config submodule.rebasing.update)"
 | |
| 	)
 | |
| '
 | |
| 
 | |
| test_expect_success 'submodule init picks up merge' '
 | |
| 	(cd super &&
 | |
| 	 git config -f .gitmodules submodule.merging.update merge &&
 | |
| 	 git submodule init merging &&
 | |
| 	 test "merge" = "$(git config submodule.merging.update)"
 | |
| 	)
 | |
| '
 | |
| 
 | |
| test_done
 |