summaryrefslogtreecommitdiffstats
path: root/ignore/Cargo.toml
AgeCommit message (Collapse)Author
2018-02-04logger: drop env_loggerAndrew Gallant
This commit updates the `log` crate to 0.4 and drops the dependency on env_logger. In particular, the latest version of env_logger brings in additional non-optional dependencies such as chrono that I don't think is worth including into ripgrep. It turns out ripgrep doesn't need any fancy logging. We just need a concept of log levels and the ability to print to stderr. Therefore, we just roll our own super simple logger. This update is motivated by the persistent configuration task. In particular, we need the ability to toggle the global log level more than once, and this doesn't appear to be possible with older versions of the log crate.
2018-02-01windows: fix OneDrive traversalsAndrew Gallant
This commit fixes a bug on Windows where directory traversals were completely broken when attempting to scan OneDrive directories that use the "file on demand" strategy. The specific problem was that Rust's standard library treats OneDrive directories as reparse points instead of directories, which causes methods like `FileType::is_file` and `FileType::is_dir` to always return false, even when retrieved via methods like `metadata` that purport to follow symbolic links. We fix this by peppering our code with checks on the underlying file attributes exposed by Windows. We consider an entry a directory if and only if the directory bit is set on the attributes. We are careful to make sure that the code remains the same on non-Windows platforms. Note that we also bump the dependency on `walkdir`, which contains a similar fix for its traversals. This bug is recorded upstream: https://github.com/rust-lang/rust/issues/46484 Upstream also has a pending PR: https://github.com/rust-lang/rust/pull/47956 Fixes #705
2017-12-30deps: bump lazy_static to 1Igor Gnatenko
2017-12-19Speeding CI buildsLilian A. Moraru
2017-11-10bump crossbeam to 0.3Igor Gnatenko
2017-10-22deps: bump ignore to 0.3.1Andrew Gallant
2017-10-21cargo: bump to 0.7.0ignore-0.3.0grep-0.1.7globset-0.2.10.7.0Andrew Gallant
2017-10-21ignore: upgrade to walkdir 2Andrew Gallant
The uninteresting bits of this commit involve mechanical changes for updates to walkdir 2. The more interesting bits of this commit are the breaking changes, although none of them should require any significant change on users of this library. The breaking changes are as follows: * `DirEntry::path_is_symbolic_link` has been renamed to `DirEntry::path_is_symlink`. This matches the conventions in the standard library, and also the corresponding name change in walkdir. * Removed the `From<walkdir::Error> for ignore::Error` impl. This was intended to only be used internally, but was the only thing that made `walkdir` a public dependency of `ignore`. Therefore, we remove it since it seems unnecessary. * Renamed `WalkBuilder::sort_by` to `WalkBuilder::sort_by_file_name`, and changed the type of the comparator from Fn(&OsString, &OsString) -> cmp::Ordering + 'static to Fn(&OsStr, &OsStr) -> cmp::Ordering + Send + Sync + 'static The corresponding change in `walkdir` retains the `sort_by` name, but gives the comparator a pair of `&DirEntry` values instead of a pair of `&OsStr` values. Ideally, `ignore` would hand off its own pair of `&ignore::DirEntry` values, but this requires more design work. So for now, we retain previous functionality, but leave room to make a proper `sort_by` method. [breaking-change]
2017-10-21deps: upgrade to memchr 2Andrew Gallant
2017-07-17ignore-0.2.2ignore-0.2.2Andrew Gallant
2017-07-12ignore-0.2.1ignore-0.2.1Andrew Gallant
2017-05-11bump ripgrep, ignore, globset0.5.2Andrew Gallant
The `ignore` and `globset` crates both got breaking changes in the course of fixing #444, so increase 0.x to 0.(x+1).
2017-04-09bump ignoreignore-0.1.9Andrew Gallant
2017-03-12Bump and update deps.wincolor-0.1.3termcolor-0.3.1ignore-0.1.8grep-0.1.6globset-0.1.4Andrew Gallant
2017-01-130.4.00.4.0Andrew Gallant
2017-01-09Don't search stdout redirected file.Andrew Gallant
When running ripgrep like this: rg foo > output we must be careful not to search `output` since ripgrep is actively writing to it. Searching it can cause massive blowups where the file grows without bound. While this is conceptually easy to fix (check the inode of the redirection and the inode of the file you're about to search), there are a few problems with it. First, inodes are a Unix thing, so we need a Windows specific solution to this as well. To resolve this concern, I created a new crate, `same-file`, which provides a cross platform abstraction. Second, stat'ing every file is costly. This is not avoidable on Windows, but on Unix, we can get the inode number directly from directory traversal. However, this information wasn't exposed, but now it is (through both the ignore and walkdir crates). Fixes #286
2017-01-01Update to regex 0.2.Andrew Gallant
2016-12-30bump various versionsAndrew Gallant
2016-12-05ignore-0.1.6ignore-0.1.6Andrew Gallant
2016-11-09ignore-0.1.5ignore-0.1.5Andrew Gallant
2016-11-06Update sub-crate dependency versions.Andrew Gallant
2016-11-06ignore-0.1.4ignore-0.1.4Andrew Gallant
2016-11-05Add parallel recursive directory iterator.Andrew Gallant
This adds a new walk type in the `ignore` crate, `WalkParallel`, which provides a way for recursively iterating over a set of paths in parallel while respecting various ignore rules. The API is a bit strange, as a closure producing a closure isn't something one often sees, but it does seem to work well. This also allowed us to simplify much of the worker logic in ripgrep proper, where MultiWorker is now gone.
2016-10-31ignore-0.1.3ignore-0.1.3Andrew Gallant
2016-10-31ignore-0.1.2Andrew Gallant
2016-10-29ignore-0.1.1ignore-0.1.1Andrew Gallant
2016-10-29bump thread_localAndrew Gallant
2016-10-29ignore-0.1.0ignore-0.1.0Andrew Gallant
2016-10-29bump globset dep in ignoreAndrew Gallant
2016-10-29Move all gitignore matching to separate crate.Andrew Gallant
This PR introduces a new sub-crate, `ignore`, which primarily provides a fast recursive directory iterator that respects ignore files like gitignore and other configurable filtering rules based on globs or even file types. This results in a substantial source of complexity moved out of ripgrep's core and into a reusable component that others can now (hopefully) benefit from. While much of the ignore code carried over from ripgrep's core, a substantial portion of it was rewritten with the following goals in mind: 1. Reuse matchers built from gitignore files across directory iteration. 2. Design the matcher data structure to be amenable for parallelizing directory iteration. (Indeed, writing the parallel iterator is the next step.) Fixes #9, #44, #45