Thread (6 messages) flat view 6 messages, 1 author, 2016-06-15
DORMANTno replies

[EGIT PATCH 5/5] Correct getRepositoryMapping callers to use any IResource

From: Shawn O. Pearce <hidden>
Date: 2016-06-15 22:45:06
Subsystem: the rest · Maintainer: Linus Torvalds

We really need to use the exact resource we want a mapping for, even
if that is an IFile, because the file may be in a different repository
than the project it is contained in.  This can happen due to linked
resources, or due to submodules.  Either way the mapping cannot be
driven by the project.

Signed-off-by: Shawn O. Pearce <redacted>
---
 .../org/spearce/egit/core/op/UntrackOperation.java |    4 +---
 .../egit/core/project/RepositoryMapping.java       |   14 +++++++-------
 .../egit/ui/internal/actions/CommitAction.java     |    2 +-
 3 files changed, 9 insertions(+), 11 deletions(-)
diff --git a/org.spearce.egit.core/src/org/spearce/egit/core/op/UntrackOperation.java b/org.spearce.egit.core/src/org/spearce/egit/core/op/UntrackOperation.java
index 369ff38..b491e6d 100644
--- a/org.spearce.egit.core/src/org/spearce/egit/core/op/UntrackOperation.java
+++ b/org.spearce.egit.core/src/org/spearce/egit/core/op/UntrackOperation.java
@@ -15,7 +15,6 @@ import java.util.IdentityHashMap;
 import java.util.Iterator;
 
 import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IResourceVisitor;
 import org.eclipse.core.resources.IWorkspaceRunnable;
@@ -67,9 +66,8 @@ public class UntrackOperation implements IWorkspaceRunnable {
 				obj = ((IAdaptable)obj).getAdapter(IResource.class);
 				if (obj instanceof IResource) {
 					final IResource toRemove = (IResource)obj;
-					final IProject p = toRemove.getProject();					
 					final GitProjectData pd = GitProjectData.get(toRemove.getProject());
-					final RepositoryMapping rm = pd.getRepositoryMapping(p);
+					final RepositoryMapping rm = pd.getRepositoryMapping(toRemove);
 					final GitIndex index = rm.getRepository().getIndex();
 					tomerge.put(rm, Boolean.TRUE);
 					if (toRemove instanceof IContainer) {
diff --git a/org.spearce.egit.core/src/org/spearce/egit/core/project/RepositoryMapping.java b/org.spearce.egit.core/src/org/spearce/egit/core/project/RepositoryMapping.java
index 17e8142..961dbaf 100644
--- a/org.spearce.egit.core/src/org/spearce/egit/core/project/RepositoryMapping.java
+++ b/org.spearce.egit.core/src/org/spearce/egit/core/project/RepositoryMapping.java
@@ -221,15 +221,15 @@ public class RepositoryMapping {
 	 * @return the RepositoryMapping for this resource,
 	 *         or null for non GitProvider.
 	 */
-	public static RepositoryMapping getMapping(IResource resource) {
-		IProject project = resource.getProject();
+	public static RepositoryMapping getMapping(final IResource resource) {
+		final IProject project = resource.getProject();
 		if (project == null)
 			return null;
-		RepositoryProvider provider = RepositoryProvider.getProvider(project);
-		if (!(provider instanceof GitProvider))
+
+		final RepositoryProvider rp = RepositoryProvider.getProvider(project);
+		if (!(rp instanceof GitProvider))
 			return null;
-		GitProvider gp = (GitProvider)provider;
-		RepositoryMapping repositoryMapping = gp.getData().getRepositoryMapping(project);
-		return repositoryMapping;
+
+		return ((GitProvider)rp).getData().getRepositoryMapping(resource);
 	}
 }
diff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/CommitAction.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/CommitAction.java
index db38c10..4956be3 100644
--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/CommitAction.java
+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/actions/CommitAction.java
@@ -363,7 +363,7 @@ public class CommitAction extends RepositoryAction {
 
 		try {
 			RepositoryMapping repositoryMapping = projectData
-					.getRepositoryMapping(resource.getProject());
+					.getRepositoryMapping(resource);
 
 			if (isChanged(repositoryMapping, resource)) {
 				files.add(resource);
-- 
1.6.0.rc1.250.g9b5e2
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help