Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Sawicki2012-01-26 22:59:50 +0000
committerMatthias Sohn2012-01-26 22:59:50 +0000
commit0658d4b95b5de54c58bd3b4ee137fb0b0fa8cd3c (patch)
treefde3ca12095f091ad61660259411104be287fb3e /org.eclipse.egit.ui
parentdb038ced9db66ef96ca42501aab81dea4df69fa3 (diff)
downloadegit-0658d4b95b5de54c58bd3b4ee137fb0b0fa8cd3c.tar.gz
egit-0658d4b95b5de54c58bd3b4ee137fb0b0fa8cd3c.tar.xz
egit-0658d4b95b5de54c58bd3b4ee137fb0b0fa8cd3c.zip
[repoView] Hide 'Submodules' node when no configuration exists
Only show the 'Submodules' node when the repository either contains a '.gitmodules' file or has at least one 'submodule' section in the config file Bug: 367955 Change-Id: I1b8575bed7f018e1d4ee7273c4b83c8044232822 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
Diffstat (limited to 'org.eclipse.egit.ui')
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesViewContentProvider.java20
1 files changed, 19 insertions, 1 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesViewContentProvider.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesViewContentProvider.java
index 8c473f4592..2e57450872 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesViewContentProvider.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/RepositoriesViewContentProvider.java
@@ -61,6 +61,7 @@ import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jgit.events.ListenerHandle;
import org.eclipse.jgit.events.RefsChangedEvent;
import org.eclipse.jgit.events.RefsChangedListener;
+import org.eclipse.jgit.lib.ConfigConstants;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.RefDatabase;
@@ -309,7 +310,7 @@ public class RepositoriesViewContentProvider implements ITreeContentProvider,
if (!repo.isBare())
nodeList.add(new WorkingDirNode(node, repo));
nodeList.add(new RemotesNode(node, repo));
- if (!repo.isBare())
+ if (!repo.isBare() && hasConfiguredSubmodules(repo))
nodeList.add(new SubmodulesNode(node, repo));
return nodeList.toArray();
@@ -544,4 +545,21 @@ public class RepositoriesViewContentProvider implements ITreeContentProvider,
return filtered;
}
+ /**
+ * Does the repository have any submodule configurations?
+ * <p>
+ * This method checks for a '.gitmodules' file at the root of the working
+ * directory or any 'submodule' sections in the repository's config file
+ *
+ * @param repository
+ * @return true if submodules, false otherwise
+ */
+ private boolean hasConfiguredSubmodules(final Repository repository) {
+ if (new File(repository.getWorkTree(), Constants.DOT_GIT_MODULES)
+ .isFile())
+ return true;
+ return !repository.getConfig()
+ .getSubsections(ConfigConstants.CONFIG_SUBMODULE_SECTION)
+ .isEmpty();
+ }
}

Back to the top