Rewrite the Excludes code
commitb1c8ef57114d96cf240add03b932d2927392dcd1
authorJonas Fonseca <fonseca@diku.dk>
Fri, 14 Aug 2009 15:05:29 +0000 (14 11:05 -0400)
committerJonas Fonseca <fonseca@diku.dk>
Sat, 15 Aug 2009 16:02:17 +0000 (15 12:02 -0400)
treedac9d3eb770516303171910efe4e1d90051683e5
parent0a828b70ebe62b0dfedcfccf965e13b7965ad7c4
Rewrite the Excludes code

This moves pattern matching and reading of .gitignore files out of
Excludes into the new ExcludeCache class, which holds all exclude
patterns read from a repository. This makes it easier to test the
in-memory representation of .gitignore and .git/info/exclude files.
One test is introduced, which builds a "live" repository and checks
if the cache excludes and includes the correct files.

Most importantly it also changes the algorithm for matching a file to
start from the work directory root and iterate down into the
subdirectories ending with the file being queried.

Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
31 files changed:
src/org/nbgit/util/exclude/ExcludeCache.java [new file with mode: 0644]
src/org/nbgit/util/exclude/ExcludeUtils.java [new file with mode: 0644]
src/org/nbgit/util/exclude/Excludes.java
src/org/nbgit/util/exclude/PathPatternList.java [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.git/info/exclude [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/#comment [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/.gitignore [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/.gitmodules [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/.hidden [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/README.txt [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/all-ignored-but-gitignore/.gitignore [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/build.xml [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/build/classes/org/example/File.class [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/build/test/unit/classes/org/example/FileTest.class [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/docs/.gitattributes [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/docs/.gitignore [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/docs/NOT-IGNORED.txt [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/manifest.mf [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/nbproject/build-impl.xml [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/nbproject/genfiles.properties [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/nbproject/private/private.properties [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/nbproject/project.properties [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/nbproject/project.xml [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/path/.gitignore [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/path/also/to/other.file [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/path/to/file [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/random.pdf [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/src/org/example/File.java [new file with mode: 0644]
test/unit/data/org.nbgit.util.exclude.ExcludeCacheTest/testComplexWorkingDirectory/default.workdir/test/org/example/FileTest.java [new file with mode: 0644]
test/unit/src/org/nbgit/junit/RepositoryTestCase.java [new file with mode: 0644]
test/unit/src/org/nbgit/util/exclude/ExcludeCacheTest.java [new file with mode: 0644]