Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Lay2011-12-07 08:50:45 +0000
committerStefan Lay2011-12-07 08:50:45 +0000
commit9a4d4680eaa0972429f63ba898100460303364db (patch)
treed84cb850da5eb22429925f645dad6062001ee632
parent5261edd8f530ee5dbac52e031631fc335436f28e (diff)
downloadegit-9a4d4680eaa0972429f63ba898100460303364db.tar.gz
egit-9a4d4680eaa0972429f63ba898100460303364db.tar.xz
egit-9a4d4680eaa0972429f63ba898100460303364db.zip
Fix NPE in RepositoriesView
There was a NullPointer exception in the Git Repositories View which caused the repo view to be broken. No repositories were shown anymore. The compare handling did not work properly for bare repositories. Bug: 365834 Change-Id: I3c914b31c5005e3320ef90cadcc1423423984b67 Signed-off-by: Stefan Lay <stefan.lay@sap.com>
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/RepositoryTreeNode.java28
1 files changed, 18 insertions, 10 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/RepositoryTreeNode.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/RepositoryTreeNode.java
index 57a840de6e..d2f412b249 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/RepositoryTreeNode.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/repository/tree/RepositoryTreeNode.java
@@ -269,23 +269,31 @@ public abstract class RepositoryTreeNode<T> extends PlatformObject implements Co
return ((Ref) myObject).getName().compareTo(
((Ref) otherNode.getObject()).getName());
case REPO:
- int nameCompare = ((Repository) myObject).getDirectory()
- .getParentFile().getName().compareTo(
- (((Repository) otherNode.getObject())
- .getDirectory().getParentFile().getName()));
+ int nameCompare = getDirectoryContainingRepo((Repository) myObject)
+ .getName()
+ .compareTo(
+ getDirectoryContainingRepo((Repository) otherNode.getObject())
+ .getName());
if (nameCompare != 0)
return nameCompare;
// if the name is not unique, let's look at the whole path
- return ((Repository) myObject).getDirectory().getParentFile()
- .getParentFile().getPath().compareTo(
- (((Repository) otherNode.getObject())
- .getDirectory().getParentFile()
- .getParentFile().getPath()));
-
+ return getDirectoryContainingRepo((Repository) myObject)
+ .getParentFile()
+ .getPath()
+ .compareTo(
+ getDirectoryContainingRepo((Repository) otherNode.getObject())
+ .getParentFile().getPath());
}
return 0;
}
+ private File getDirectoryContainingRepo(Repository repo) {
+ if (!repo.isBare())
+ return repo.getDirectory().getParentFile();
+ else
+ return repo.getDirectory();
+ }
+
private boolean checkObjectsEqual(Object otherObject) {
switch (myType) {
case REPO:

Back to the top