diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/attributes/AttributesMatcherTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/attributes/AttributesMatcherTest.java index 686540692..9f82b8a1e 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/attributes/AttributesMatcherTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/attributes/AttributesMatcherTest.java @@ -51,9 +51,6 @@ /** * Tests git attributes pattern matches - *
- * Inspired by {@link org.eclipse.jgit.ignore.IgnoreMatcherTest} - *
*/ public class AttributesMatcherTest { diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/FastIgnoreRuleTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/FastIgnoreRuleTest.java index 007bdcc5f..a4b799a72 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/FastIgnoreRuleTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/ignore/FastIgnoreRuleTest.java @@ -47,30 +47,11 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import static org.junit.Assume.assumeFalse; -import static org.junit.Assume.assumeTrue; - -import java.util.Arrays; import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameter; -import org.junit.runners.Parameterized.Parameters; -@SuppressWarnings("deprecation") -@RunWith(Parameterized.class) public class FastIgnoreRuleTest { - @Parameters(name = "OldRule? {0}") - public static Iterable- * TODO: this method works directly on File IO, we may need another - * abstraction (like WorkingTreeIterator). This way we could tell e.g. - * Eclipse that Files in the workspace got changed - *
- * - * @param repository - * @param f - * this parameter is ignored. - * @param entry - * the entry containing new mode and content - * @throws IOException - * @deprecated Use the overloaded form that accepts {@link ObjectReader}. - */ - @Deprecated - public static void checkoutEntry(final Repository repository, File f, - DirCacheEntry entry) throws IOException { - ObjectReader or = repository.newObjectReader(); - try { - checkoutEntry(repository, f, entry, or); - } finally { - or.release(); - } - } - - /** - * Updates the file in the working tree with content and mode from an entry - * in the index. The new content is first written to a new temporary file in - * the same directory as the real file. Then that new file is renamed to the - * final filename. - * - *- * TODO: this method works directly on File IO, we may need another - * abstraction (like WorkingTreeIterator). This way we could tell e.g. - * Eclipse that Files in the workspace got changed - *
- * - * @param repo - * @param f - * this parameter is ignored. - * @param entry - * the entry containing new mode and content - * @param or - * object reader to use for checkout - * @throws IOException - * @deprecated Do not pass File object. - */ - @Deprecated - public static void checkoutEntry(final Repository repo, File f, - DirCacheEntry entry, ObjectReader or) throws IOException { - if (f == null || repo.getWorkTree() == null) - throw new IllegalArgumentException(); - if (!f.equals(new File(repo.getWorkTree(), entry.getPathString()))) - throw new IllegalArgumentException(); - checkoutEntry(repo, entry, or); - } - /** * Updates the file in the working tree with content and mode from an entry * in the index. The new content is first written to a new temporary file in diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/IgnoreRule.java b/org.eclipse.jgit/src/org/eclipse/jgit/ignore/IgnoreRule.java deleted file mode 100644 index f14d1bd0b..000000000 --- a/org.eclipse.jgit/src/org/eclipse/jgit/ignore/IgnoreRule.java +++ /dev/null @@ -1,278 +0,0 @@ -/* - * Copyright (C) 2010, Red Hat Inc. - * and other copyright owners as documented in the project's IP log. - * - * This program and the accompanying materials are made available - * under the terms of the Eclipse Distribution License v1.0 which - * accompanies this distribution, is reproduced below, and is - * available at http://www.eclipse.org/org/documents/edl-v10.php - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * - * - Neither the name of the Eclipse Foundation, Inc. nor the - * names of its contributors may be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package org.eclipse.jgit.ignore; - -import org.eclipse.jgit.errors.InvalidPatternException; -import org.eclipse.jgit.fnmatch.FileNameMatcher; - -/** - * A single ignore rule corresponding to one line in a .gitignore or ignore - * file. Parses the ignore pattern - * - * Inspiration from: Ferry Huberts - * - * @deprecated this rule does not support double star pattern and is slow - * parsing glob expressions. Consider to use {@link FastIgnoreRule} - * instead. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=440732 - */ -@Deprecated -public class IgnoreRule { - private String pattern; - private boolean negation; - private boolean nameOnly; - private boolean dirOnly; - private FileNameMatcher matcher; - - /** - * Create a new ignore rule with the given pattern. Assumes that - * the pattern is already trimmed. - * - * @param pattern - * Base pattern for the ignore rule. This pattern will - * be parsed to generate rule parameters. - */ - public IgnoreRule (String pattern) { - this.pattern = pattern; - negation = false; - nameOnly = false; - dirOnly = false; - matcher = null; - setup(); - } - - /** - * Remove leading/trailing characters as needed. Set up - * rule variables for later matching. - */ - private void setup() { - int startIndex = 0; - int endIndex = pattern.length(); - if (pattern.startsWith("!")) { //$NON-NLS-1$ - startIndex++; - negation = true; - } - - if (pattern.endsWith("/")) { //$NON-NLS-1$ - endIndex --; - dirOnly = true; - } - - pattern = pattern.substring(startIndex, endIndex); - boolean hasSlash = pattern.contains("/"); //$NON-NLS-1$ - - if (!hasSlash) - nameOnly = true; - else if (!pattern.startsWith("/")) { //$NON-NLS-1$ - //Contains "/" but does not start with one - //Adding / to the start should not interfere with matching - pattern = "/" + pattern; //$NON-NLS-1$ - } - - if (pattern.contains("*") || pattern.contains("?") || pattern.contains("[")) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ - try { - matcher = new FileNameMatcher(pattern, Character.valueOf('/')); - } catch (InvalidPatternException e) { - // Ignore pattern exceptions - } - } - } - - - /** - * @return - * True if the pattern is just a file name and not a path - */ - public boolean getNameOnly() { - return nameOnly; - } - - /** - * - * @return - * True if the pattern should match directories only - */ - public boolean dirOnly() { - return dirOnly; - } - - /** - * - * @return - * True if the pattern had a "!" in front of it - */ - public boolean getNegation() { - return negation; - } - - /** - * @return - * The blob pattern to be used as a matcher - */ - public String getPattern() { - return pattern; - } - - /** - * Returns true if a match was made. - *isMatch(String, boolean)
was previously
- * made, this will return whether or not the target was ignored. Otherwise
- * this just indicates whether the rule is non-negation or negation.
- *
- * @return
- * True if the target is to be ignored, false otherwise.
- */
- public boolean getResult() {
- return !negation;
- }
-
- private boolean doesMatchDirectoryExpectations(boolean isDirectory, int segmentIdx, int segmentLength) {
- // The segment we are checking is a directory, expectations are met.
- if (segmentIdx < segmentLength - 1) {
- return true;
- }
-
- // We are checking the last part of the segment for which isDirectory has to be considered.
- return !dirOnly || isDirectory;
- }
-
- @Override
- public String toString() {
- return pattern;
- }
-}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java
index 6d0c8e6cd..1422c5ef0 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/pack/PackWriter.java
@@ -136,8 +136,8 @@
* Typical usage consists of creating instance intended for some pack,
* configuring options, preparing the list of objects by calling
* {@link #preparePack(Iterator)} or
- * {@link #preparePack(ProgressMonitor, Collection, Collection)}, and finally
- * producing the stream with
+ * {@link #preparePack(ProgressMonitor, Set, Set)}, and finally producing the
+ * stream with
* {@link #writePack(ProgressMonitor, ProgressMonitor, OutputStream)}.
*
*
@@ -293,7 +293,7 @@ public static Iterable
* Objects for packing are specified in {@link #preparePack(Iterator)} or
- * {@link #preparePack(ProgressMonitor, Collection, Collection)}.
+ * {@link #preparePack(ProgressMonitor, Set, Set)}.
*
* @param repo
* repository where objects are stored.
@@ -306,7 +306,7 @@ public PackWriter(final Repository repo) {
* Create a writer to load objects from the specified reader.
*
* Objects for packing are specified in {@link #preparePack(Iterator)} or
- * {@link #preparePack(ProgressMonitor, Collection, Collection)}.
+ * {@link #preparePack(ProgressMonitor, Set, Set)}.
*
* @param reader
* reader to read from the repository with.
@@ -319,7 +319,7 @@ public PackWriter(final ObjectReader reader) {
* Create writer for specified repository.
*
* Objects for packing are specified in {@link #preparePack(Iterator)} or
- * {@link #preparePack(ProgressMonitor, Collection, Collection)}.
+ * {@link #preparePack(ProgressMonitor, Set, Set)}.
*
* @param repo
* repository where objects are stored.
@@ -334,7 +334,7 @@ public PackWriter(final Repository repo, final ObjectReader reader) {
* Create writer with a specified configuration.
*
* Objects for packing are specified in {@link #preparePack(Iterator)} or
- * {@link #preparePack(ProgressMonitor, Collection, Collection)}.
+ * {@link #preparePack(ProgressMonitor, Set, Set)}.
*
* @param config
* configuration for the pack writer.
@@ -495,7 +495,7 @@ public void setIndexDisabled(boolean noIndex) {
/**
* @return true to ignore objects that are uninteresting and also not found
* on local disk; false to throw a {@link MissingObjectException}
- * out of {@link #preparePack(ProgressMonitor, Collection, Collection)} if an
+ * out of {@link #preparePack(ProgressMonitor, Set, Set)} if an
* uninteresting object is not in the source repository. By default,
* true, permitting gracefully ignoring of uninteresting objects.
*/
@@ -648,86 +648,6 @@ public void preparePack(final Iterator
- * Basing on these 2 sets, another set of objects to put in a pack file is
- * created: this set consists of all objects reachable (ancestors) from
- * interesting objects, except uninteresting objects and their ancestors.
- * This method uses class {@link ObjectWalk} extensively to find out that
- * appropriate set of output objects and their optimal order in output pack.
- * Order is consistent with general git in-pack rules: sort by object type,
- * recency, path and delta-base first.
- *
- * Basing on these 2 sets, another set of objects to put in a pack file is
- * created: this set consists of all objects reachable (ancestors) from
- * interesting objects, except uninteresting objects and their ancestors.
- * This method uses class {@link ObjectWalk} extensively to find out that
- * appropriate set of output objects and their optimal order in output pack.
- * Order is consistent with general git in-pack rules: sort by object type,
- * recency, path and delta-base first.
- *