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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <spearce@xxxxxxxxxxx>
---
 .../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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux