blob: 7d04f27f3c7d63f0ff93788a398b2750c479a058 [file] [log] [blame]
/*
* Copyright (C) 2010, Jens Baumgart <jens.baumgart@sap.com> and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0 which is available at
* https://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
package org.eclipse.jgit.treewalk.filter;
import java.io.IOException;
import org.eclipse.jgit.errors.IncorrectObjectTypeException;
import org.eclipse.jgit.errors.MissingObjectException;
import org.eclipse.jgit.treewalk.TreeWalk;
import org.eclipse.jgit.treewalk.WorkingTreeIterator;
/**
* Skip {@link org.eclipse.jgit.treewalk.WorkingTreeIterator} entries that
* appear in gitignore files.
*/
public class NotIgnoredFilter extends TreeFilter {
private final int index;
/**
* Construct a filter to ignore paths known to a particular iterator.
*
* @param workdirTreeIndex
* index of the workdir tree in the tree walk
*/
public NotIgnoredFilter(int workdirTreeIndex) {
this.index = workdirTreeIndex;
}
/** {@inheritDoc} */
@Override
public boolean include(TreeWalk tw) throws MissingObjectException,
IncorrectObjectTypeException, IOException {
WorkingTreeIterator i = tw.getTree(index, WorkingTreeIterator.class);
return i == null || !i.isEntryIgnored();
}
/** {@inheritDoc} */
@Override
public boolean shouldBeRecursive() {
return false;
}
/** {@inheritDoc} */
@Override
public TreeFilter clone() {
// immutable
return this;
}
/** {@inheritDoc} */
@SuppressWarnings("nls")
@Override
public String toString() {
return "NotIgnored(" + index + ")";
}
}