 4db86e8b6e
			
		
	
	4db86e8b6e
	
	
	
		
			
			:/abc may mean two things: - as a revision, it means the revision that has "abc" in commit message. - as a pathpec, it means "abc" from root. Currently we see ":/abc" as a rev (most of the time), but never see it as a pathspec even if "abc" exists and "git log :/abc" will gladly take ":/abc" as rev even it's ambiguous. This patch makes it: - ambiguous when "abc" exists on worktree - a rev if abc does not exist on worktree - a path if abc is not found in any commits (although better use "--" to avoid ambiguation because searching through commit DAG is expensive) A plus from this patch is, because ":/" never matches anything as a rev, it is never considered a valid rev and because root directory always exists, ":/" is always unambiguously seen as a pathspec. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
			
				
	
	
		
			50 lines
		
	
	
		
			968 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			968 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| test_description='magic pathspec tests using git-log'
 | |
| 
 | |
| . ./test-lib.sh
 | |
| 
 | |
| test_expect_success 'setup' '
 | |
| 	test_commit initial &&
 | |
| 	test_tick &&
 | |
| 	git commit --allow-empty -m empty &&
 | |
| 	mkdir sub
 | |
| '
 | |
| 
 | |
| test_expect_success '"git log :/" should not be ambiguous' '
 | |
| 	git log :/
 | |
| '
 | |
| 
 | |
| test_expect_success '"git log :/a" should be ambiguous (applied both rev and worktree)' '
 | |
| 	: >a &&
 | |
| 	test_must_fail git log :/a 2>error &&
 | |
| 	grep ambiguous error
 | |
| '
 | |
| 
 | |
| test_expect_success '"git log :/a -- " should not be ambiguous' '
 | |
| 	git log :/a --
 | |
| '
 | |
| 
 | |
| test_expect_success '"git log -- :/a" should not be ambiguous' '
 | |
| 	git log -- :/a
 | |
| '
 | |
| 
 | |
| test_expect_success '"git log :" should be ambiguous' '
 | |
| 	test_must_fail git log : 2>error &&
 | |
| 	grep ambiguous error
 | |
| '
 | |
| 
 | |
| test_expect_success 'git log -- :' '
 | |
| 	git log -- :
 | |
| '
 | |
| 
 | |
| test_expect_success 'git log HEAD -- :/' '
 | |
| 	cat >expected <<-EOF &&
 | |
| 	24b24cf initial
 | |
| 	EOF
 | |
| 	(cd sub && git log --oneline HEAD -- :/ >../actual) &&
 | |
| 	test_cmp expected actual
 | |
| '
 | |
| 
 | |
| test_done
 |