From: "Shawn O. Pearce" <spearce@spearce.org>
To: Robin Rosenberg <robin.rosenberg@dewire.com>,
Marek Zawirski <marek.zawirski@gmail.com>
Cc: git@vger.kernel.org
Subject: [EGIT PATCH 5/5] Correct getRepositoryMapping callers to use any IResource
Date: Tue, 5 Aug 2008 20:09:40 -0700 [thread overview]
Message-ID: <1217992180-5697-6-git-send-email-spearce@spearce.org> (raw)
In-Reply-To: <1217992180-5697-5-git-send-email-spearce@spearce.org>
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@spearce.org>
---
.../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
prev parent reply other threads:[~2008-08-06 3:10 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-06 3:09 [EGIT PATCH 0/5] Support linked resources in repositories Shawn O. Pearce
2008-08-06 3:09 ` [EGIT PATCH 1/5] Remove the pointless GitProjectData resource change listener Shawn O. Pearce
2008-08-06 3:09 ` [EGIT PATCH 2/5] Don't crash the decorator update loop when resources are deleted Shawn O. Pearce
2008-08-06 3:09 ` [EGIT PATCH 3/5] Fix RepositoryMapping.getRepoRelativePath to honor linked resources Shawn O. Pearce
2008-08-06 3:09 ` [EGIT PATCH 4/5] Change GitProjectData.getRepositoryMapping to work on " Shawn O. Pearce
2008-08-06 3:09 ` Shawn O. Pearce [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1217992180-5697-6-git-send-email-spearce@spearce.org \
--to=spearce@spearce.org \
--cc=git@vger.kernel.org \
--cc=marek.zawirski@gmail.com \
--cc=robin.rosenberg@dewire.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).