mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[git] IJPL-149354 FUS: Add a collector to report if .idea is ignored, or tracked in VCS
GitOrigin-RevId: e95ad00dbb7d621e548856dc67163aa591637023
This commit is contained in:
committed by
intellij-monorepo-bot
parent
ecc62c47f3
commit
47915601d4
@@ -21,7 +21,6 @@ import com.intellij.openapi.diagnostic.Logger
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.project.getProjectCacheFileName
|
||||
import com.intellij.openapi.util.Comparing
|
||||
import com.intellij.openapi.vcs.FileStatus
|
||||
import com.intellij.openapi.vcs.VcsException
|
||||
import com.intellij.util.io.URLUtil
|
||||
import com.intellij.vcs.log.impl.VcsLogApplicationSettings
|
||||
@@ -32,7 +31,7 @@ import com.intellij.vcs.log.ui.VcsLogUiImpl
|
||||
import com.intellij.vcsUtil.VcsUtil
|
||||
import git4idea.branch.GitBranchUtil
|
||||
import git4idea.config.*
|
||||
import git4idea.index.getFileStatus
|
||||
import git4idea.index.getStatus
|
||||
import git4idea.repo.GitCommitTemplateTracker
|
||||
import git4idea.repo.GitRemote
|
||||
import git4idea.repo.GitRepository
|
||||
@@ -123,7 +122,7 @@ internal class GitStatisticsCollector : ProjectUsagesCollector() {
|
||||
set.add(repositoryMetric)
|
||||
|
||||
for (configDirName in ALL_IDE_CONFIG_NAMES) {
|
||||
getConfigFileStatus(executable, repository, configDirName)?.let { status ->
|
||||
getConfigFileStatus(repository, configDirName)?.let { status ->
|
||||
set.add(SHARED_IDE_CONFIG.metric(
|
||||
IDE_CONFIG_NAME.with(configDirName),
|
||||
IDE_CONFIG_STATUS.with(status)
|
||||
@@ -343,20 +342,22 @@ private fun GitRepository.isWorkTreeUsed(): Boolean {
|
||||
}
|
||||
}
|
||||
|
||||
private fun getConfigFileStatus(executable: GitExecutable, repository: GitRepository, configDirName: String): ConfigStatus? {
|
||||
private fun getConfigFileStatus(repository: GitRepository, configDirName: String): ConfigStatus? {
|
||||
return try {
|
||||
val rootPath = repository.root.toNioPath()
|
||||
val configDir = rootPath.resolve(configDirName)
|
||||
if (!configDir.exists() || !configDir.isDirectory()) return null
|
||||
|
||||
val file = repository.root.findChild(configDirName) ?: return null
|
||||
val filePath = VcsUtil.getFilePath(file)
|
||||
|
||||
val status = getFileStatus(repository.root, filePath, executable)
|
||||
when (status.getFileStatus()) {
|
||||
FileStatus.IGNORED -> return ConfigStatus.IGNORED
|
||||
else -> ConfigStatus.SHARED
|
||||
if (!configDir.exists() || !configDir.isDirectory()) {
|
||||
return null
|
||||
}
|
||||
|
||||
val filePath = VcsUtil.getFilePath(configDir, true)
|
||||
|
||||
val status = getStatus(repository.project, repository.root, listOf(filePath), false, true, true)
|
||||
val fileStatus = status.singleOrNull() ?: return ConfigStatus.SHARED
|
||||
if (fileStatus.isIgnored() && fileStatus.path.path == filePath.path) { // GitFileStatus has invalid FilePath.isDirectory values
|
||||
return ConfigStatus.IGNORED
|
||||
}
|
||||
return ConfigStatus.SHARED
|
||||
}
|
||||
catch (e: Exception) {
|
||||
if (e is ControlFlowException) throw e
|
||||
@@ -369,7 +370,7 @@ internal enum class ConfigStatus {
|
||||
SHARED
|
||||
}
|
||||
|
||||
enum class FsMonitor { NONE, BUILTIN, EXTERNAL_FS_MONITOR }
|
||||
internal enum class FsMonitor { NONE, BUILTIN, EXTERNAL_FS_MONITOR }
|
||||
|
||||
private fun GitRepository.detectFsMonitor(): FsMonitor {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user