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