summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2018-08-03grep-0.1.9grep-0.1.9Andrew Gallant
2018-08-03deps: update termcolor and encoding_rs_ioAndrew Gallant
2018-07-29tests: reduce reliance on state in testsAndrew Gallant
This commit improves the integration test setup by running tests inside the system's temporary directory instead of within ripgrep's `target` directory. The motivation here is to attempt to reduce the effect of unanticipated state on ripgrep's integration tests, such as the presence of `.gitignore` files in ripgrep's checkout directory hierarchy (including parent directories). This doesn't remove all possible state. For example, there's no guarantee that the system's temporary directory isn't itself within a git repository. Moreover, there may still be other ignore rules in the directory tree that might impact test behavior. Fixing this seems somewhat difficult. Conceptually, it seems like ripgrep should run each test in its own `chroot`-like environment, but doing this in a non-annoying and portable way (including Windows) doesn't appear to be possible. Another approach to take here might be to teach ripgrep itself that a particular directory should be treated as root, and therefore, never look at anything outside that directory. This also seems complex to implement, but tractable. Let's see how this approach works for now. Fixes #448, #996
2018-07-29tests/style: 80 columns, dammitAndrew Gallant
2018-07-29ignore: fix typoAndrew Gallant
2018-07-29ignore/style: 80 columns, dammitAndrew Gallant
2018-07-29ignore: fix bug in matched_path_or_any_parentsAndrew Gallant
This method was supposed to panic whenever the given path wasn't under the root of the gitignore patcher. Instead of using assert!, it was using debug_assert!. This actually caused tests to fail when running under release mode, because the debug_assert! wouldn't trip. Fixes #671
2018-07-28ignore-0.4.3ignore-0.4.3Andrew Gallant
2018-07-28globset-0.4.1globset-0.4.1Andrew Gallant
2018-07-28ignore: respect XDG_CONFIG_DIR/git/configAndrew Gallant
This commit updates the logic for finding the value of git's `core.excludesFile` configuration parameter. Namely, we now check `$XDG_CONFIG_DIR/git/config` in addition to `$HOME/.gitconfig` (where the latter overrules the former on a knob-by-knob basis). Fixes #995
2018-07-24complete: add --no-pre, improve --pre/--search-zip exclusivitydana
2018-07-22deps: update atty and winapiAndrew Gallant
This updates atty and winapi to their latest versions, including the bug fix in atty that allows it to work with winapi 0.3.5.
2018-07-22ripgrep: when given no patterns, don't matchAndrew Gallant
Generally speaking, ripgrep prevents the case of not having any patterns via its arg parsing. However, it is possible for users to provide a file of patterns via the `-f` flag. If that file is empty, then ripgrep has nothing to search for and therefore should not ever produce any match. One way of fixing this might be to replace the absence of patterns with a pattern that can never match, but this still requires opening and searching through every file, which is quite a waste. Instead, we detect this case explicitly and quit early. Fixes #900
2018-07-22tests: be looser with gzip failureAndrew Gallant
Don't expect the exact error message. Instead, just ask that the error message exist and be non-empty. Fixes #903
2018-07-22ripgrep: stop early when --files --quiet is usedAndrew Gallant
This commit tweaks the implementation of the --files flag to stop early when --quiet is provided. Fixes #907
2018-07-22ripgrep: don't skip tar archivesAndrew Gallant
This removes logic from the decompressor for skipping tar archives. This logic was originally added under the assumption that we probably want to avoid the cost of reading them. However, this is generally inconsistent with how ripgrep treats files like tar archives: it should search them and do binary detection like normal. Fixes #918
2018-07-22ripgrep: add --no-ignore-global flagAndrew Gallant
This commit adds a new --no-ignore-global flag that permits disabling the use of global gitignore filtering. Global gitignores are generally found in `$HOME/.config/git/ignore`, but its location can be configured via git's `core.excludesFile` option. Closes #934
2018-07-22ignore: only respect .gitignore in git reposAndrew Gallant
This commit fixes an interesting bug in the `ignore` crate where it would basically respect any `.gitignore` file anywhere (including global gitignores in `~/.config/git/ignore`), regardless of whether we were searching in a git repository or not. This commit rectifies that behavior to only respect gitignore rules when in a git repo. The key change here is to move the logic of whether to traverse parents into the directory matcher rather than putting the onus on the directory traverser. In particular, we now need to traverse parent directories in more cases than we previously did, since we need to determine whether we're in a git repository or not. Fixes #934
2018-07-22ripgrep: improve usage documentationAndrew Gallant
This shows an example for reading stdin. Fixes #951
2018-07-22ripgrep: better --path-separator error messageAndrew Gallant
This commit improves the error message when --path-separator fails. Namely, it prints the separator it got and also prints a notice for Windows users for common failure modes. Fixes #957
2018-07-22deps: pin winapi to 0.3.4Andrew Gallant
winapi 0.3.5 changed how it represents some of its structs, which caused a bug to surface in atty that prevents tty detection on Windows. atty has an open PR to fix this: https://github.com/softprops/atty/pull/28 Until a new release of atty, we pin winapi to a version that works.
2018-07-21ripgrep: add --no-pre switchAndrew Gallant
This switch explicitly disables the --pre behavior. An empty string will also disable --pre behavior, but actually utterring an empty flag value is quite awkward, so we provide an explicit switch to do the same thing. Thanks to @c-blake for pointing this out.
2018-07-21ripgrep: replace decoder with encoding_rs_ioAndrew Gallant
This commit mostly moves the transcoder implementation to its own crate: https://github.com/BurntSushi/encoding_rs_io The new crate adds clear documentation and cleans up the implementation to fully implement the contract of io::Read.
2018-07-21ripgrep: reformat --pre warningAndrew Gallant
2018-07-21ripgrep: add warning to --pre flagAndrew Gallant
The --pre flag can result in a pretty large performance penalty, so put a warning in the flag documentation. This warning is important because a flag like this could easily wind up in a user's configuration file.
2018-07-21ripgrep: add --pre flagCharles Blake
The preprocessor flag accepts a command program and executes this program for every input file that is searched. Instead of searching the file directly, ripgrep will instead search the stdout contents of the program. Closes #978, Closes #981
2018-07-21ripgrep: add support for lz4 decompressionKalle Samuels
This uses the lz4 binary for decompression. Closes #898
2018-07-21changelog: updatesAndrew Gallant
We continue our quest to update the CHANGELOG incrementally.
2018-07-21snap: build without wrappersMateusz MikuĊ‚a
Wrappers usually define things required for snaps to work like library path. Ripgrep being static binary doesn't need it at all. This will give minor speed up in scenarios when ripgrep is ran multiple times and can be considered as good practice for static binaries. PR #979
2018-07-21ignore: fix has_any_ignore_rules for explicit ignoresphiresky
When building a ignore::WalkBuilder by disabling all standard filters and adding a custom global ignore file, the ignore file is not used. Example: let mut walker = ignore::WalkBuilder::new(dir); walker.standard_filters(false); walker.add_ignore(myfile); This makes it impossible to use the ignore crate to walk a directory with only custom ignore files. Very similar to issue #800 (fixed in b71a110). PR #988
2018-07-21crates.io: use 'OR' instead of '/'Andrew Gallant
Fixes #987
2018-07-21globset: clarify documentation on regex methodAndrew Gallant
This makes it clear that the `bytes` API of the regex crate should be used instead of the Unicode API. Fixes #985
2018-07-18deps: update regex to 1.0.2Andrew Gallant
And also update to regex-syntax 0.6.2.
2018-07-17readme: update rogue 1.20 referenceAndrew Gallant
2018-07-17deps: update all transitive dependenciesAndrew Gallant
This updates all remaining transitive dependencies. Most changes appear minor and there appear to be no minimum Rust version conflicts. Yay!
2018-07-17deps: bump various dependenciesAndrew Gallant
Nothing major here. All patch releases. This should bring us completely up to date with all direct dependencies.
2018-07-17deps: bump encoding_rs to 0.8Andrew Gallant
This brings in performance improvements.
2018-07-17deps: bump minimum Rust to 1.23.0 from 1.20.0Andrew Gallant
1.23.0 is the first Rust release of 2018 and is around half a year old, which seems old enough to move to. This also lets us bring in encoding_rs 0.8, which includes performance optimizations.
2018-07-17deps: get rid of unstable featureAndrew Gallant
This was introduced as a temporary measure for dealing with the regex crate's unstable feature, but it was never included in a release of ripgrep. Thus, we remove it. The regex crate will now automatically enable SIMD optimizations when available.
2018-07-17grep: small literal detection fixAndrew Gallant
This commit tweaks the inner literal detection heuristic such that if it comes up with any literal that is all whitespace, then it's likely a bad literal to look for since it's so common. Therefore, we simply reject the inner literal optimization in this case and let the regex engine do its thang.
2018-07-17deps: update termcolor to 1.0.0Andrew Gallant
2018-07-17termcolor: moved to its own repositoryAndrew Gallant
We also move wincolor with it. Fixes #924
2018-07-16ignore: permit use of env::home_dirAndrew Gallant
Upstream deprecated env::home_dir because of minor bugs in some corner cases. We should probably eventually migrate to a correct implementation in the `dirs` crate, but using the buggy version is just fine for now.
2018-07-06complete: improve zsh completiondana
- Use groups with _arguments - Conditionally complete 'negation' options (--messages, --no-column, &c.) - Improve option exclusivity - Improve option descriptions - Improve completion of colour 'whens' - Improve completion of colour specs - Remove some unnecessary work-arounds - Use more idiomatic conventions
2018-07-06ci: minor improvements to test_complete.shdana
2018-06-25ripgrep: rename --maxdepth to --max-depthdana
We keep the old `--maxdepth` spelling to preserve backward compatibility. PR #967
2018-06-25ripgrep: add --fixed-strings flagdana
Fixes #964 PR #965
2018-06-23ripgrep: disable autotestsAndrew Gallant
This keeps us working in Rust 2018. Fixes #923
2018-06-23ripgrep/printer: fix small performance regressionAndrew Gallant
This commit removes an unconditional extra regex search that is in fact not always necessary. This can result in a 2x performance improvement in cases where ripgrep reports many matches. The fix itself isn't ideal, but we continue to punt on cleaning up the printer until it is rewritten for libripgrep, which is happening Real Soon Now. Fixes #955
2018-06-23ripgrep: use new BufferedStandardStream from termcolorAndrew Gallant
Specifically, this will use a buffered writer when not printing to a tty. This fixes a long standing performance regression where ripgrep would slow down dramatically if it needed to report a lot of matches. Fixes #955