diff --git a/plugins/git4idea/src/git4idea/repo/GitRepositoryReader.java b/plugins/git4idea/src/git4idea/repo/GitRepositoryReader.java index 8370f2ed1ed0..06a32c52e434 100644 --- a/plugins/git4idea/src/git4idea/repo/GitRepositoryReader.java +++ b/plugins/git4idea/src/git4idea/repo/GitRepositoryReader.java @@ -31,6 +31,7 @@ import com.intellij.vcs.log.Hash; import com.intellij.vcs.log.impl.HashImpl; import git4idea.*; import git4idea.branch.GitBranchUtil; +import git4idea.validators.GitRefNameValidator; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -272,7 +273,7 @@ class GitRepositoryReader { if (relativePath != null) { String branchName = prefix + FileUtil.toSystemIndependentName(relativePath); String hash = loadHashFromBranchFile(file); - if (hash != null) { + if (hash != null && GitRefNameValidator.getInstance().checkInput(branchName)) { result.put(branchName, hash); } } diff --git a/plugins/git4idea/tests/git4idea/repo/GitRepositoryReaderNewTest.kt b/plugins/git4idea/tests/git4idea/repo/GitRepositoryReaderNewTest.kt index 12c6c79de260..7d5154365a98 100644 --- a/plugins/git4idea/tests/git4idea/repo/GitRepositoryReaderNewTest.kt +++ b/plugins/git4idea/tests/git4idea/repo/GitRepositoryReaderNewTest.kt @@ -19,13 +19,11 @@ import com.intellij.dvcs.repo.Repository.State import com.intellij.openapi.util.SystemInfo import git4idea.GitLocalBranch import git4idea.branch.GitBranchUtil +import git4idea.test.* import git4idea.test.GitScenarios.commit import git4idea.test.GitScenarios.conflict -import git4idea.test.GitSingleRepoTest -import git4idea.test.makeCommit -import git4idea.test.git -import git4idea.test.last import org.junit.Assume.assumeTrue +import java.io.File import kotlin.test.assertNotEquals /** @@ -153,6 +151,14 @@ class GitRepositoryReaderNewTest : GitSingleRepoTest() { assertNotEquals(GitLocalBranch("UpperCase"), GitLocalBranch("uppercase")) } + fun `test non-branch files are ignored`() { + tac("f.txt") + assertTrue(File(myRepo.repositoryFiles.refsHeadsFile, "master.lock").createNewFile()) + + myRepo.update() + assertSameElements(listOf("master"), myRepo.branches.localBranches.map { it.name }) + } + private fun moveToDetachedHead(): String { makeCommit("file.txt") makeCommit("file.txt")