From e5b6598da6b02a5f09ef6f94f3c5dcd073f3d41c Mon Sep 17 00:00:00 2001 From: Julia Beliaeva Date: Tue, 23 Aug 2016 22:20:21 +0300 Subject: [PATCH] [git] display tracking branches in format & --- .../src/git4idea/log/GitRefManager.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/plugins/git4idea/src/git4idea/log/GitRefManager.java b/plugins/git4idea/src/git4idea/log/GitRefManager.java index 03b54c2a9e66..29387a6c66c5 100644 --- a/plugins/git4idea/src/git4idea/log/GitRefManager.java +++ b/plugins/git4idea/src/git4idea/log/GitRefManager.java @@ -163,8 +163,27 @@ public class GitRefManager implements VcsLogRefManager { VcsRef firstRef = ObjectUtils.assertNotNull(ContainerUtil.getFirstItem(firstGroup.getValue())); VcsRefType firstRefType = firstGroup.getKey(); + String name = firstRefType.isBranch() && !firstRefType.equals(HEAD) ? firstRef.getName() : ""; - groups.add(new TableRefGroup(firstRefType.isBranch() && !firstRefType.equals(HEAD) ? firstRef.getName() : "", sortedReferences)); + if (firstRefType.equals(LOCAL_BRANCH)) { + GitRepository repository = myRepositoryManager.getRepositoryForRoot(firstRef.getRoot()); + if (repository == null) { + LOG.warn("No repository for root: " + firstRef.getRoot()); + } + else { + GitBranchTrackInfo trackInfo = + ContainerUtil.find(repository.getBranchTrackInfos(), info -> info.getLocalBranch().getName().equals(firstRef.getName())); + if (trackInfo != null) { + VcsRef trackedRef = ContainerUtil + .find(references, ref -> ref.getType().equals(REMOTE_BRANCH) && ref.getName().equals(trackInfo.getRemoteBranch().getName())); + if (trackedRef != null) { + name = trackInfo.getRemote().getName() + "&" + firstRef.getName(); + } + } + } + } + + groups.add(new TableRefGroup(name, sortedReferences)); return groups; }