GitRepoInfo () { return computeWithSpan(TelemetryManager.getInstance().getTracer(VcsScopeKt.VcsScope), GitTelemetrySpan.Repository.ReadGitRepositoryInfo.getName(), span -> { span.setAttribute("repository", getShortRepositoryName(this)); File configFile = myRepositoryFiles.getConfigFile(); GitConfig config = GitConfig.read(configFile); myRepositoryFiles.updateCustomPaths(config.parseCore()); Collection<GitRemote> remotes = config.parseRemotes(); GitBranchState state = myReader.readState(remotes); boolean isShallow = myReader.hasShallowCommits(); Collection<GitBranchTrackInfo> trackInfos = config.parseTrackInfos(state.getLocalBranches().keySet(), state.getRemoteBranches().keySet()); GitHooksInfo hooksInfo = myReader.readHooksInfo(); Collection<GitSubmoduleInfo> submodules = new GitModulesFileReader().read(getSubmoduleFile()); Map<GitLocalBranch, Hash> localBranches = new HashMap<>(state.getLocalBranches()); myRecentCheckoutBranches = collectRecentCheckoutBranches(this, branch -> localBranches.containsKey(branch)); return new GitRepoInfo(state.getCurrentBranch(), state.getCurrentRevision(), state.getState(), new LinkedHashSet<>(remotes), localBranches, new HashMap<>(state.getRemoteBranches()), new LinkedHashSet<>(trackInfos), submodules, hooksInfo, isShallow); }); }