From 21bbfdc1d3ca5ee42a4c52300790391b4d34ba94 Mon Sep 17 00:00:00 2001 From: "Dmitriy.Panov" Date: Wed, 17 Apr 2024 14:34:09 +0200 Subject: [PATCH] IJI-1504 show my last safe-push action GitOrigin-RevId: 2ec1e861aea264824b158ae18ff81fb0e604a39d --- .../GitBranchIncomingOutgoingManager.java | 5 ++--- .../src/git4idea/repo/GitRefUtil.java | 20 ++++++++++++++++++- .../git4idea/repo/GitRepositoryReader.java | 4 ++-- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/plugins/git4idea/src/git4idea/branch/GitBranchIncomingOutgoingManager.java b/plugins/git4idea/src/git4idea/branch/GitBranchIncomingOutgoingManager.java index 3112c1e19918..312020b25279 100644 --- a/plugins/git4idea/src/git4idea/branch/GitBranchIncomingOutgoingManager.java +++ b/plugins/git4idea/src/git4idea/branch/GitBranchIncomingOutgoingManager.java @@ -44,7 +44,6 @@ import org.jetbrains.annotations.CalledInAny; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.io.IOException; import java.nio.file.Path; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -155,7 +154,7 @@ public final class GitBranchIncomingOutgoingManager implements GitRepositoryChan if (myConnection == null) { myConnection = myProject.getMessageBus().connect(this); myConnection.subscribe(GitRepository.GIT_REPO_CHANGE, this); - myConnection.subscribe(GitAuthenticationListener.GIT_AUTHENTICATION_SUCCESS, this); + myConnection.subscribe(GIT_AUTHENTICATION_SUCCESS, this); } updateBranchesWithOutgoing(); updateIncomingScheduling(); @@ -367,7 +366,7 @@ public final class GitBranchIncomingOutgoingManager implements GitRepositoryChan GitCommandResult lsRemoteResult = Git.getInstance().runCommand(() -> createLsRemoteHandler(repository, remote, params, authenticationMode)); if (lsRemoteResult.success()) { - Map hashWithNameMap = ContainerUtil.map2MapNotNull(lsRemoteResult.getOutput(), GitRefUtil::parseRefsLine); + Map hashWithNameMap = ContainerUtil.map2MapNotNull(lsRemoteResult.getOutput(), GitRefUtil::parseBranchesLine); result.putAll(getResolvedHashes(hashWithNameMap)); myErrorMap.remove(repository, remote); myAuthSuccessMap.putValue(repository, remote); diff --git a/plugins/git4idea/src/git4idea/repo/GitRefUtil.java b/plugins/git4idea/src/git4idea/repo/GitRefUtil.java index 272dfbb0dffb..4bdab77e32a5 100644 --- a/plugins/git4idea/src/git4idea/repo/GitRefUtil.java +++ b/plugins/git4idea/src/git4idea/repo/GitRefUtil.java @@ -6,6 +6,7 @@ import com.intellij.openapi.util.Pair; import com.intellij.util.containers.ContainerUtil; import com.intellij.vcs.log.Hash; import com.intellij.vcs.log.impl.HashImpl; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -31,6 +32,23 @@ public final class GitRefUtil { return branchName; } + /** + * @return only branches + * @see #parseRefsLine + */ + @ApiStatus.Internal + public static @Nullable Pair parseBranchesLine(@NotNull String line) { + var parsedRef = parseRefsLine(line); + if (parsedRef == null) { + return null; + } + var branch = parsedRef.first; + if (!branch.startsWith(REFS_HEADS_PREFIX) && !branch.startsWith(REFS_REMOTES_PREFIX)) { + return null; + } + return parsedRef; + } + /** * Parses a line with a pair of hash and ref name e.g. see the .git/packed-refs file. * Comments and tags are ignored, and null is returned. @@ -76,7 +94,7 @@ public final class GitRefUtil { branch = line.substring(start, i); } - if (branch == null || !branch.startsWith(REFS_HEADS_PREFIX) && !branch.startsWith(REFS_REMOTES_PREFIX)) { + if (branch == null) { return null; } return Pair.create(branch, hash.trim()); diff --git a/plugins/git4idea/src/git4idea/repo/GitRepositoryReader.java b/plugins/git4idea/src/git4idea/repo/GitRepositoryReader.java index 2fa36e48bc22..47cc878a5c4a 100644 --- a/plugins/git4idea/src/git4idea/repo/GitRepositoryReader.java +++ b/plugins/git4idea/src/git4idea/repo/GitRepositoryReader.java @@ -151,7 +151,7 @@ public class GitRepositoryReader { private @Nullable GitLocalBranch findCurrentBranch(@NotNull HeadInfo headInfo, @NotNull Repository.State state, - @NotNull Set localBranches) { + @NotNull Set localBranches) { final String currentBranchName = findCurrentBranchName(state, headInfo); if (currentBranchName == null) { return null; @@ -224,7 +224,7 @@ public class GitRepositoryReader { } try { String content = DvcsUtil.tryLoadFile(myPackedRefsFile, CharsetToolkit.UTF8); - return ContainerUtil.map2MapNotNull(LineTokenizer.tokenize(content, false), GitRefUtil::parseRefsLine); + return ContainerUtil.map2MapNotNull(LineTokenizer.tokenize(content, false), GitRefUtil::parseBranchesLine); } catch (RepoStateException e) { return emptyMap();