Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDariusz Luksza2010-11-29 21:51:23 +0000
committerDariusz Luksza2010-12-13 20:03:34 +0000
commit708e8f6ce344648347e6c287e144e5168856e3d4 (patch)
tree927908cfa4dbb8011bd093d9dee5c083f44c1eda
parentab4217e47a0f224f0e680fbf0b73ddb4d3b4ad0a (diff)
downloadegit-708e8f6ce344648347e6c287e144e5168856e3d4.tar.gz
egit-708e8f6ce344648347e6c287e144e5168856e3d4.tar.xz
egit-708e8f6ce344648347e6c287e144e5168856e3d4.zip
Fix compare input for local changes nodes.
GitModelBlob class was using compare() and hashCode() methods implementation from GitModelCommit, therefore in some cases Compare View was showing wrong files in comparison. It also fixes wrong headers in the compare editor. Bug: 326674 Change-Id: If42607deca500f3439c512382af0b13b01b90b3d Signed-off-by: Dariusz Luksza <dariusz@luksza.org>
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java7
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/CompareUtils.java41
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/compare/GitCacheCompareInput.java54
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/compare/GitCompareInput.java52
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/compare/GitLocalCompareInput.java63
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelBlob.java58
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelCache.java2
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelCacheFile.java32
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelRepository.java4
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelWorkingFile.java17
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties2
11 files changed, 295 insertions, 37 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java
index b45afe847f..064de295bf 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/UIText.java
@@ -2159,6 +2159,12 @@ public class UIText extends NLS {
public static String GitCompareFileRevisionEditorInput_RevisionLabel;
/** */
+ public static String GitCompareFileRevisionEditorInput_LocalVersion;
+
+ /** */
+ public static String GitCompareFileRevisionEditorInput_StagedVersion;
+
+ /** */
public static String GitCreateGeneralProjectPage_DirLabel;
/** */
@@ -2708,4 +2714,5 @@ public class UIText extends NLS {
static {
initializeMessages(BUNDLE_NAME, UIText.class);
}
+
}
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/CompareUtils.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/CompareUtils.java
index 30f316f063..52a2fac198 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/CompareUtils.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/CompareUtils.java
@@ -7,6 +7,7 @@
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
+ * Dariusz Luksza - add getFileCachedRevisionTypedElement(String, Repository)
* Stefan Lay (SAP AG) - initial implementation
*******************************************************************************/
package org.eclipse.egit.ui.internal;
@@ -28,14 +29,16 @@ import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.preferences.DefaultScope;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener;
import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
+import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.egit.core.internal.storage.GitFileRevision;
import org.eclipse.egit.ui.Activator;
import org.eclipse.egit.ui.UIText;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.util.OpenStrategy;
+import org.eclipse.jgit.dircache.DirCache;
+import org.eclipse.jgit.dircache.DirCacheEntry;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Repository;
@@ -102,9 +105,9 @@ public class CompareUtils {
try {
IFileRevision nextFile = getFileRevision(gitPath, commit, db,
- blobId);
- if (nextFile != null)
- right = new FileRevisionTypedElement(nextFile);
+ blobId);
+ if (nextFile != null)
+ right = new FileRevisionTypedElement(nextFile);
} catch (IOException e) {
Activator.error(NLS.bind(UIText.GitHistoryPage_errorLookingUpPath,
gitPath, commit.getId()), e);
@@ -344,4 +347,34 @@ public class CompareUtils {
new InstanceScope().getNode(TEAM_UI_PLUGIN).putBoolean(
REUSE_COMPARE_EDITOR_PREFID, value);
}
+
+ /**
+ * Creates {@link ITypedElement} of file that was cached
+ *
+ * @param gitPath
+ * @param db
+ * @return {@link ITypedElement} instance for given cached file or
+ * {@code null} if file isn't cached
+ */
+ public static ITypedElement getFileCachedRevisionTypedElement(String gitPath,
+ Repository db) {
+ try {
+ DirCache dc = db.lockDirCache();
+ DirCacheEntry entry = dc.getEntry(gitPath);
+ dc.unlock();
+
+ // check if file is staged
+ if (entry != null) {
+ return new FileRevisionTypedElement(GitFileRevision.inIndex(db, gitPath));
+ }
+ } catch (IOException e) {
+ Activator.error(NLS.bind(UIText.GitHistoryPage_errorLookingUpPath,
+ gitPath), e);
+ }
+
+ return new GitCompareFileRevisionEditorInput.EmptyTypedElement(NLS
+ .bind(UIText.CompareWithIndexAction_FileNotInIndex,
+ gitPath.substring(gitPath.lastIndexOf("/")) + 1)); //$NON-NLS-1$
+ }
+
}
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/compare/GitCacheCompareInput.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/compare/GitCacheCompareInput.java
new file mode 100644
index 0000000000..4377754925
--- /dev/null
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/compare/GitCacheCompareInput.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (C) 2010, Dariusz Luksza <dariusz@luksza.org>
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.eclipse.egit.ui.internal.synchronize.compare;
+
+import static org.eclipse.egit.ui.internal.CompareUtils.getFileCachedRevisionTypedElement;
+import static org.eclipse.egit.ui.internal.CompareUtils.getFileRevisionTypedElement;
+
+import org.eclipse.compare.ITypedElement;
+import org.eclipse.jgit.lib.Repository;
+import org.eclipse.team.ui.mapping.ISynchronizationCompareInput;
+
+/**
+ * Specific implementation of {@link ISynchronizationCompareInput} for showing
+ * cached files
+ */
+public class GitCacheCompareInput extends GitCompareInput {
+
+ /**
+ * Creates {@link GitCacheCompareInput}
+ *
+ * @param repo
+ * repository that is connected with this object
+ * @param ancestorDataSource
+ * data that should be use to obtain common ancestor object data
+ * @param baseDataSource
+ * data that should be use to obtain base object data
+ * @param remoteDataSource
+ * data that should be used to obtain remote object data
+ * @param gitPath
+ * repository relative path of object
+ */
+ public GitCacheCompareInput(Repository repo,
+ ComparisonDataSource ancestorDataSource,
+ ComparisonDataSource baseDataSource,
+ ComparisonDataSource remoteDataSource, String gitPath) {
+ super(repo, ancestorDataSource, baseDataSource, remoteDataSource,
+ gitPath);
+ }
+
+ public ITypedElement getLeft() {
+ return getFileCachedRevisionTypedElement(gitPath, repo);
+ }
+
+ public ITypedElement getRight() {
+ return getFileRevisionTypedElement(gitPath, baseCommit, repo);
+ }
+
+}
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/compare/GitCompareInput.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/compare/GitCompareInput.java
index 95518e6bc8..a3e9d305ef 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/compare/GitCompareInput.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/compare/GitCompareInput.java
@@ -8,6 +8,7 @@
*******************************************************************************/
package org.eclipse.egit.ui.internal.synchronize.compare;
+import static org.eclipse.egit.core.internal.storage.GitFileRevision.INDEX;
import static org.eclipse.jgit.lib.ObjectId.zeroId;
import org.eclipse.compare.CompareConfiguration;
@@ -18,6 +19,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.egit.ui.UIText;
import org.eclipse.egit.ui.internal.CompareUtils;
import org.eclipse.egit.ui.internal.FileRevisionTypedElement;
+import org.eclipse.egit.ui.internal.LocalResourceTypedElement;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
@@ -39,15 +41,25 @@ public class GitCompareInput implements ISynchronizationCompareInput {
private final ObjectId remoteId;
- private final Repository repo;
-
- private final String gitPath;
-
private final RevCommit ancestorCommit;
private final RevCommit remoteCommit;
- private final RevCommit baseCommit;
+ /**
+ * {@link RevCommit} instance of base commit associated with this compare
+ * input
+ */
+ protected final RevCommit baseCommit;
+
+ /**
+ * {@link Repository} associated with this compare compare input
+ */
+ protected final Repository repo;
+
+ /**
+ * Git repository relative path of file associated with this compare input
+ */
+ protected final String gitPath;
/**
* Creates {@link GitCompareInput}
@@ -75,8 +87,8 @@ public class GitCompareInput implements ISynchronizationCompareInput {
this.ancestorId = ancestroDataSource.getObjectId();
this.remoteCommit = remoteDataSource.getRevCommit();
this.ancestorCommit = ancestroDataSource.getRevCommit();
- this.name = gitPath.lastIndexOf('/') < 0 ? gitPath :
- gitPath.substring(gitPath.lastIndexOf('/'));
+ this.name = gitPath.lastIndexOf('/') < 0 ? gitPath : gitPath
+ .substring(gitPath.lastIndexOf('/'));
}
public String getName() {
@@ -140,7 +152,6 @@ public class GitCompareInput implements ISynchronizationCompareInput {
IProgressMonitor monitor) throws CoreException {
configuration.setLeftLabel(getFileRevisionLabel(getLeft()));
configuration.setRightLabel(getFileRevisionLabel(getRight()));
-
}
public String getFullPath() {
@@ -155,15 +166,24 @@ public class GitCompareInput implements ISynchronizationCompareInput {
private String getFileRevisionLabel(ITypedElement element) {
if (element instanceof FileRevisionTypedElement) {
FileRevisionTypedElement castElement = (FileRevisionTypedElement) element;
+ if (INDEX.equals(castElement.getContentIdentifier()))
+ return NLS.bind(
+ UIText.GitCompareFileRevisionEditorInput_StagedVersion,
+ element.getName());
+ else
+ return NLS.bind(
+ UIText.GitCompareFileRevisionEditorInput_RevisionLabel,
+ new Object[] {
+ element.getName(),
+ CompareUtils.truncatedRevision(castElement
+ .getContentIdentifier()),
+ castElement.getAuthor() });
+
+ } else if (element instanceof LocalResourceTypedElement)
return NLS.bind(
- UIText.GitCompareFileRevisionEditorInput_RevisionLabel,
- new Object[] {
- element.getName(),
- CompareUtils.truncatedRevision(castElement
- .getContentIdentifier()),
- castElement.getAuthor() });
-
- } else
+ UIText.GitCompareFileRevisionEditorInput_LocalVersion,
+ element.getName());
+ else
return element.getName();
}
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/compare/GitLocalCompareInput.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/compare/GitLocalCompareInput.java
new file mode 100644
index 0000000000..7a1db64e8c
--- /dev/null
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/compare/GitLocalCompareInput.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (C) 2010, Dariusz Luksza <dariusz@luksza.org>
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.eclipse.egit.ui.internal.synchronize.compare;
+
+import static org.eclipse.egit.ui.internal.CompareUtils.getFileCachedRevisionTypedElement;
+
+import org.eclipse.compare.ITypedElement;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.egit.ui.internal.LocalResourceTypedElement;
+import org.eclipse.jgit.lib.Repository;
+import org.eclipse.team.ui.mapping.ISynchronizationCompareInput;
+
+/**
+ * Specific implementation of {@link ISynchronizationCompareInput} for showing
+ * locally changed files
+ */
+public class GitLocalCompareInput extends GitCompareInput {
+
+ /**
+ * Creates {@link GitLocalCompareInput}
+ *
+ * @param repo
+ * repository that is connected with this object
+ * @param ancestorDataSource
+ * data that should be use to obtain common ancestor object data
+ * @param baseDataSource
+ * data that should be use to obtain base object data
+ * @param remoteDataSource
+ * data that should be used to obtain remote object data
+ * @param gitPath
+ * repository relative path of object
+ */
+ public GitLocalCompareInput(Repository repo,
+ ComparisonDataSource ancestorDataSource,
+ ComparisonDataSource baseDataSource,
+ ComparisonDataSource remoteDataSource, String gitPath) {
+ super(repo, ancestorDataSource, baseDataSource, remoteDataSource,
+ gitPath);
+ }
+
+ public ITypedElement getLeft() {
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+ String absoluteFilePath = repo.getWorkTree().getAbsolutePath()
+ + "/" + gitPath; //$NON-NLS-1$
+ IFile file = root.getFileForLocation(new Path(absoluteFilePath));
+
+ return new LocalResourceTypedElement(file);
+ }
+
+ public ITypedElement getRight() {
+ return getFileCachedRevisionTypedElement(gitPath, repo);
+ }
+
+}
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelBlob.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelBlob.java
index f5b99da8a6..34d7be9e54 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelBlob.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelBlob.java
@@ -15,6 +15,7 @@ import java.io.IOException;
import org.eclipse.compare.CompareConfiguration;
import org.eclipse.compare.ITypedElement;
+import org.eclipse.compare.structuremergeviewer.ICompareInput;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -39,13 +40,17 @@ public class GitModelBlob extends GitModelCommit {
private final IPath location;
- private final String gitPath;
-
private static final GitModelObject[] empty = new GitModelObject[0];
private GitCompareInput compareInput;
/**
+ * Git repository relative path of file associated with this
+ * {@link GitModelBlob}
+ */
+ protected final String gitPath;
+
+ /**
*
* @param parent
* parent of this object
@@ -120,6 +125,36 @@ public class GitModelBlob extends GitModelCommit {
compareInput.prepareInput(configuration, monitor);
}
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == this)
+ return true;
+
+ if (obj instanceof GitModelBlob) {
+ GitModelBlob objBlob = (GitModelBlob) obj;
+
+ boolean equalsRemoteId;
+ ObjectId objRemoteId = objBlob.remoteId;
+ if (objRemoteId != null)
+ equalsRemoteId = objRemoteId.equals(remoteId);
+ else
+ equalsRemoteId = baseCommit == null;
+
+ return objBlob.baseId.equals(baseId) && equalsRemoteId;
+ }
+
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = baseId.hashCode();
+ if (remoteId != null)
+ result ^= remoteId.hashCode();
+
+ return result;
+ }
+
private void createCompareInput() {
if (compareInput == null) {
ComparisonDataSource baseData = new ComparisonDataSource(
@@ -128,8 +163,23 @@ public class GitModelBlob extends GitModelCommit {
remoteCommit, remoteId);
ComparisonDataSource ancestorData = new ComparisonDataSource(
ancestorCommit, ancestorId);
- compareInput = new GitCompareInput(getRepository(), ancestorData,
- baseData, remoteData, gitPath);
+ compareInput = getCompareInput(baseData, remoteData, ancestorData);
}
}
+
+ /**
+ * Returns specific instance of {@link GitCompareInput} for particular
+ * compare input.
+ *
+ * @param baseData
+ * @param remoteData
+ * @param ancestorData
+ * @return Git specific {@link ICompareInput}
+ */
+ protected GitCompareInput getCompareInput(ComparisonDataSource baseData,
+ ComparisonDataSource remoteData, ComparisonDataSource ancestorData) {
+ return new GitCompareInput(getRepository(), ancestorData, baseData,
+ remoteData, gitPath);
+ }
+
}
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelCache.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelCache.java
index f1311d362c..34d6bea64c 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelCache.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelCache.java
@@ -93,7 +93,7 @@ public class GitModelCache extends GitModelObjectContainer {
GitModelObjectContainer modelParent, RevCommit commit,
ObjectId repoId, ObjectId cacheId, String name)
throws IOException {
- return new GitModelBlob(modelParent, commit, repoId, repoId,
+ return new GitModelCacheFile(modelParent, commit, repoId,
cacheId, name);
}
});
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelCacheFile.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelCacheFile.java
new file mode 100644
index 0000000000..f393881322
--- /dev/null
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelCacheFile.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (C) 2010, Dariusz Luksza <dariusz@luksza.org>
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.eclipse.egit.ui.internal.synchronize.model;
+
+import java.io.IOException;
+
+import org.eclipse.egit.ui.internal.synchronize.compare.ComparisonDataSource;
+import org.eclipse.egit.ui.internal.synchronize.compare.GitCacheCompareInput;
+import org.eclipse.egit.ui.internal.synchronize.compare.GitCompareInput;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.revwalk.RevCommit;
+
+class GitModelCacheFile extends GitModelBlob {
+
+ public GitModelCacheFile(GitModelObjectContainer parent, RevCommit commit,
+ ObjectId repoId, ObjectId cacheId, String name) throws IOException {
+ super(parent, commit, repoId, repoId, cacheId, name);
+ }
+
+ @Override
+ protected GitCompareInput getCompareInput(ComparisonDataSource baseData,
+ ComparisonDataSource remoteData, ComparisonDataSource ancestorData) {
+ return new GitCacheCompareInput(getRepository(), ancestorData,
+ baseData, remoteData, gitPath);
+ }
+}
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelRepository.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelRepository.java
index 5352ad00d6..cd8875d1b7 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelRepository.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelRepository.java
@@ -150,8 +150,8 @@ public class GitModelRepository extends GitModelObject {
}
if (includeLocal) {
- result.add(new GitModelCache(this, dstCommit));
- result.add(new GitModelWorkingTree(this, dstCommit));
+ result.add(new GitModelCache(this, srcCommit));
+ result.add(new GitModelWorkingTree(this, srcCommit));
}
} catch (IOException e) {
Activator.logError(e.getMessage(), e);
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelWorkingFile.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelWorkingFile.java
index f308000a06..5c84789e7a 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelWorkingFile.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/synchronize/model/GitModelWorkingFile.java
@@ -10,13 +10,11 @@ package org.eclipse.egit.ui.internal.synchronize.model;
import java.io.IOException;
-import org.eclipse.compare.ITypedElement;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.egit.ui.internal.synchronize.compare.ComparisonDataSource;
+import org.eclipse.egit.ui.internal.synchronize.compare.GitCompareInput;
+import org.eclipse.egit.ui.internal.synchronize.compare.GitLocalCompareInput;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.revwalk.RevCommit;
-import org.eclipse.egit.ui.internal.LocalResourceTypedElement;
class GitModelWorkingFile extends GitModelBlob {
@@ -26,11 +24,10 @@ class GitModelWorkingFile extends GitModelBlob {
}
@Override
- public ITypedElement getLeft() {
- IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
- IFile file = root.getFileForLocation(getLocation());
-
- return new LocalResourceTypedElement(file);
+ protected GitCompareInput getCompareInput(ComparisonDataSource baseData,
+ ComparisonDataSource remoteData, ComparisonDataSource ancestorData) {
+ return new GitLocalCompareInput(getRepository(), ancestorData,
+ baseData, remoteData, gitPath);
}
}
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties
index ae6fdccf40..88e4a57fed 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/uitext.properties
@@ -761,6 +761,8 @@ GitCompareFileRevisionEditorInput_LocalHistoryLabel=Local history: {0} {1}
GitCompareFileRevisionEditorInput_LocalLabel=Local: {0}
GitCompareFileRevisionEditorInput_LocalRevision=Local Revision
GitCompareFileRevisionEditorInput_RevisionLabel={0} {1} ({2})
+GitCompareFileRevisionEditorInput_LocalVersion={0} (local version)
+GitCompareFileRevisionEditorInput_StagedVersion={0} (staged version)
GitCreateGeneralProjectPage_DirLabel=Directory
GitCreateGeneralProjectPage_DirNotExistMessage=Directory {0} does not exist
GitCreateGeneralProjectPage_EnterProjectNameMessage=Please provide a project name

Back to the top