diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/index/VcsLogPersistentIndex.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/index/VcsLogPersistentIndex.java index 3360c6fd0bac..7568864f4e85 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/data/index/VcsLogPersistentIndex.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/data/index/VcsLogPersistentIndex.java @@ -49,7 +49,7 @@ import java.util.concurrent.atomic.AtomicLong; import java.util.stream.IntStream; import static com.intellij.vcs.log.data.index.VcsLogFullDetailsIndex.INDEX; -import static com.intellij.vcs.log.util.PersistentUtil.calcLogId; +import static com.intellij.vcs.log.util.PersistentUtil.calcIndexId; public class VcsLogPersistentIndex implements VcsLogModifiableIndex, Disposable { private static final Logger LOG = Logger.getInstance(VcsLogPersistentIndex.class); @@ -96,7 +96,7 @@ public class VcsLogPersistentIndex implements VcsLogModifiableIndex, Disposable VcsUserRegistry userRegistry = ServiceManager.getService(myProject, VcsUserRegistry.class); - myIndexStorage = createIndexStorage(fatalErrorsConsumer, myProject.getName(), calcLogId(myProject, providers), userRegistry); + myIndexStorage = createIndexStorage(fatalErrorsConsumer, myProject.getName(), calcIndexId(myProject, myIndexers), userRegistry); if (myIndexStorage != null) { myDataGetter = new IndexDataGetter(myProject, myRoots, myIndexStorage, myStorage, myFatalErrorsConsumer); } diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/util/PersistentUtil.kt b/platform/vcs-log/impl/src/com/intellij/vcs/log/util/PersistentUtil.kt index c6f7df5fbdde..2b3388832269 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/util/PersistentUtil.kt +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/util/PersistentUtil.kt @@ -24,6 +24,7 @@ import com.intellij.util.PathUtilRt import com.intellij.util.indexing.impl.MapIndexStorage import com.intellij.util.io.IOUtil import com.intellij.vcs.log.VcsLogProvider +import com.intellij.vcs.log.impl.VcsLogIndexer import com.intellij.vcs.log.util.PersistentUtil.LOG_CACHE import java.io.File import java.nio.file.Path @@ -39,13 +40,19 @@ object PersistentUtil { @JvmStatic fun calcLogId(project: Project, logProviders: Map): String { - val hashcode = calcLogProvidersHash(logProviders) + val hashcode = calcHash(logProviders) { it.supportedVcs.name } return project.locationHash + "." + Integer.toHexString(hashcode) } - private fun calcLogProvidersHash(logProviders: Map): Int { + @JvmStatic + fun calcIndexId(project: Project, logProviders: Map): String { + val hashcode = calcHash(logProviders) { it.supportedVcs.name } + return project.locationHash + "." + Integer.toHexString(hashcode) + } + + private fun calcHash(logProviders: Map, mapping: (T) -> String): Int { val sortedRoots = logProviders.keys.sortedBy { it.path } - return StringUtil.join(sortedRoots, { root -> root.path + "." + logProviders.getValue(root).supportedVcs.name }, ".").hashCode() + return StringUtil.join(sortedRoots, { root -> root.path + "." + mapping(logProviders.getValue(root)) }, ".").hashCode() } }