Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMathias Kinzler2011-02-03 14:36:52 +0000
committerMathias Kinzler2011-02-03 14:36:52 +0000
commit0c9c952ba0bbb393b602c278d1628a3467c03320 (patch)
tree1c0efd5592b0f8449555bf49db548e91c574226a
parentd0e9c3f568f1032c3ec8ede26a0ba008ce35c695 (diff)
downloadegit-0c9c952ba0bbb393b602c278d1628a3467c03320.tar.gz
egit-0c9c952ba0bbb393b602c278d1628a3467c03320.tar.xz
egit-0c9c952ba0bbb393b602c278d1628a3467c03320.zip
Merge tool: skip ignored resources when building the diff
Ignored resources should not appear in the Merge tool. Bug: 330983 Change-Id: I8fb19e78bb42a7684920945fdccc22ebec7098f6 Signed-off-by: Mathias Kinzler <mathias.kinzler@sap.com>
-rw-r--r--org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/merge/GitMergeEditorInput.java35
1 files changed, 22 insertions, 13 deletions
diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/merge/GitMergeEditorInput.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/merge/GitMergeEditorInput.java
index fdae04e61b..c4e283c4c6 100644
--- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/merge/GitMergeEditorInput.java
+++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/merge/GitMergeEditorInput.java
@@ -51,6 +51,8 @@ import org.eclipse.jgit.revwalk.filter.RevFilter;
import org.eclipse.jgit.treewalk.AbstractTreeIterator;
import org.eclipse.jgit.treewalk.FileTreeIterator;
import org.eclipse.jgit.treewalk.TreeWalk;
+import org.eclipse.jgit.treewalk.filter.AndTreeFilter;
+import org.eclipse.jgit.treewalk.filter.NotIgnoredFilter;
import org.eclipse.jgit.treewalk.filter.OrTreeFilter;
import org.eclipse.jgit.treewalk.filter.PathFilter;
import org.eclipse.jgit.treewalk.filter.TreeFilter;
@@ -246,30 +248,41 @@ public class GitMergeEditorInput extends CompareEditorInput {
TreeWalk tw = new TreeWalk(repository);
try {
+ int dirCacheIndex = tw.addTree(new DirCacheIterator(repository
+ .readDirCache()));
+ int fileTreeIndex = tw.addTree(new FileTreeIterator(repository));
+ int repositoryTreeIndex = tw.addTree(rw.parseTree(repository
+ .resolve(Constants.HEAD)));
+
+ // skip ignored resources
+ NotIgnoredFilter notIgnoredFilter = new NotIgnoredFilter(
+ fileTreeIndex);
// filter by selected resources
if (filterPaths.size() > 1) {
List<TreeFilter> suffixFilters = new ArrayList<TreeFilter>();
for (String filterPath : filterPaths)
suffixFilters.add(PathFilter.create(filterPath));
TreeFilter otf = OrTreeFilter.create(suffixFilters);
- tw.setFilter(otf);
+ tw.setFilter(AndTreeFilter.create(otf, notIgnoredFilter));
} else if (filterPaths.size() > 0)
- tw.setFilter(PathFilter.create(filterPaths.get(0)));
+ tw.setFilter(AndTreeFilter.create(PathFilter.create(filterPaths
+ .get(0)), notIgnoredFilter));
+ else
+ tw.setFilter(notIgnoredFilter);
tw.setRecursive(true);
- int dirCacheIndex = tw.addTree(new DirCacheIterator(repository
- .readDirCache()));
- int fileTreeIndex = tw.addTree(new FileTreeIterator(repository));
- int repositoryTreeIndex = tw.addTree(rw.parseTree(repository
- .resolve(Constants.HEAD)));
-
while (tw.next()) {
if (monitor.isCanceled())
throw new InterruptedException();
-
String gitPath = tw.getPathString();
monitor.setTaskName(gitPath);
+
+ FileTreeIterator fit = tw.getTree(fileTreeIndex,
+ FileTreeIterator.class);
+ if (fit == null)
+ continue;
+
DirCacheIterator dit = tw.getTree(dirCacheIndex,
DirCacheIterator.class);
@@ -282,10 +295,6 @@ public class GitMergeEditorInput extends CompareEditorInput {
AbstractTreeIterator rt = tw.getTree(repositoryTreeIndex,
AbstractTreeIterator.class);
- FileTreeIterator fit = tw.getTree(fileTreeIndex,
- FileTreeIterator.class);
- if (fit == null || fit.isEntryIgnored())
- continue;
// compare local file against HEAD to see if it was modified
boolean modified = rt != null
&& !fit.getEntryObjectId()

Back to the top