aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit/src/org/eclipse/jgit/treewalk
diff options
context:
space:
mode:
authorAndrey Loskutov <loskutov@gmx.de>2015-07-24 23:26:43 +0200
committerAndrey Loskutov <loskutov@gmx.de>2015-08-12 13:44:58 -0400
commit63bc1d862d33bc99b68efddece2e69fb7ae04734 (patch)
tree0822fa85cabbbd3bf0e5999a87d72a0cb9518eba /org.eclipse.jgit/src/org/eclipse/jgit/treewalk
parent6bc6e9520e99f012a8d516ae8ac135f440efd38e (diff)
downloadjgit-63bc1d862d33bc99b68efddece2e69fb7ae04734.tar.gz
jgit-63bc1d862d33bc99b68efddece2e69fb7ae04734.zip
Consider original file mode while checking parent ignore rules
The WorkingTreeIterator.isEntryIgnored() should use originally requested file mode while descending to the file tree root and checking ignore rules. Original code asking isEntryIgnored() on a file was using directory mode instead if the .gitignore was not located in the same directory. Bug: 473506 Change-Id: I9f16ba714c3ea9e6585e9c11623270dbdf4fb1df Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
Diffstat (limited to 'org.eclipse.jgit/src/org/eclipse/jgit/treewalk')
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java11
1 files changed, 7 insertions, 4 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java
index d7c93d1a1c..73ab04f9cb 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java
@@ -596,7 +596,7 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
* a relevant ignore rule file exists but cannot be read.
*/
protected boolean isEntryIgnored(final int pLen) throws IOException {
- return isEntryIgnored(pLen, false);
+ return isEntryIgnored(pLen, mode, false);
}
/**
@@ -605,13 +605,16 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
*
* @param pLen
* the length of the path in the path buffer.
+ * @param fileMode
+ * the original iterator file mode
* @param negatePrevious
* true if the previous matching iterator rule was negation
* @return true if the entry is ignored by an ignore rule.
* @throws IOException
* a relevant ignore rule file exists but cannot be read.
*/
- private boolean isEntryIgnored(final int pLen, boolean negatePrevious)
+ private boolean isEntryIgnored(final int pLen, int fileMode,
+ boolean negatePrevious)
throws IOException {
IgnoreNode rules = getIgnoreNode();
if (rules != null) {
@@ -623,7 +626,7 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
if (0 < pOff)
pOff--;
String p = TreeWalk.pathOf(path, pOff, pLen);
- switch (rules.isIgnored(p, FileMode.TREE.equals(mode),
+ switch (rules.isIgnored(p, FileMode.TREE.equals(fileMode),
negatePrevious)) {
case IGNORED:
return true;
@@ -638,7 +641,7 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
}
}
if (parent instanceof WorkingTreeIterator)
- return ((WorkingTreeIterator) parent).isEntryIgnored(pLen,
+ return ((WorkingTreeIterator) parent).isEntryIgnored(pLen, fileMode,
negatePrevious);
return false;
}