mirror of
https://github.com/BurntSushi/ripgrep.git
synced 2025-05-19 01:30:21 -07:00
ripgrep: add --no-ignore-global flag
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
This commit is contained in:
parent
e65ca21a6c
commit
560dffd247
11
CHANGELOG.md
11
CHANGELOG.md
@ -47,9 +47,12 @@ Feature enhancements:
|
|||||||
* [FEATURE #924](https://github.com/BurntSushi/ripgrep/issues/924):
|
* [FEATURE #924](https://github.com/BurntSushi/ripgrep/issues/924):
|
||||||
`termcolor` has moved to its own repository:
|
`termcolor` has moved to its own repository:
|
||||||
https://github.com/BurntSushi/termcolor
|
https://github.com/BurntSushi/termcolor
|
||||||
|
* [FEATURE #934](https://github.com/BurntSushi/ripgrep/issues/934):
|
||||||
|
Add a new flag, `--no-ignore-global`, that permits disabling global
|
||||||
|
gitignores.
|
||||||
* [FEATURE #967](https://github.com/BurntSushi/ripgrep/issues/967):
|
* [FEATURE #967](https://github.com/BurntSushi/ripgrep/issues/967):
|
||||||
Rename `--maxdepth` to `--max-depth` for consistency. We retain `--maxdepth`
|
Rename `--maxdepth` to `--max-depth` for consistency. Keep `--maxdepth` for
|
||||||
as a synonym for backwards compatibility.
|
backwards compatibility.
|
||||||
* [FEATURE #978](https://github.com/BurntSushi/ripgrep/issues/978):
|
* [FEATURE #978](https://github.com/BurntSushi/ripgrep/issues/978):
|
||||||
Add a `--pre` option to filter inputs with an arbitrary program.
|
Add a `--pre` option to filter inputs with an arbitrary program.
|
||||||
* [FEATURE fca9709d](https://github.com/BurntSushi/ripgrep/commit/fca9709d):
|
* [FEATURE fca9709d](https://github.com/BurntSushi/ripgrep/commit/fca9709d):
|
||||||
@ -84,8 +87,8 @@ Bug fixes:
|
|||||||
* [BUG #934](https://github.com/BurntSushi/ripgrep/issues/934):
|
* [BUG #934](https://github.com/BurntSushi/ripgrep/issues/934):
|
||||||
Don't respect gitignore files when searching outside git repositories.
|
Don't respect gitignore files when searching outside git repositories.
|
||||||
* [BUG #948](https://github.com/BurntSushi/ripgrep/issues/948):
|
* [BUG #948](https://github.com/BurntSushi/ripgrep/issues/948):
|
||||||
ripgrep now uses an exit code of 2 to indicate an error, and uses an exit
|
Use exit code 2 to indicate error, and use exit code 1 to indicate no
|
||||||
code of 1 to indicate that no matches were found.
|
matches.
|
||||||
* [BUG #951](https://github.com/BurntSushi/ripgrep/issues/951):
|
* [BUG #951](https://github.com/BurntSushi/ripgrep/issues/951):
|
||||||
Add stdin example to ripgrep usage documentation.
|
Add stdin example to ripgrep usage documentation.
|
||||||
* [BUG #955](https://github.com/BurntSushi/ripgrep/issues/955):
|
* [BUG #955](https://github.com/BurntSushi/ripgrep/issues/955):
|
||||||
|
@ -96,8 +96,12 @@ _rg() {
|
|||||||
$no"--no-hidden[don't search hidden files and directories]"
|
$no"--no-hidden[don't search hidden files and directories]"
|
||||||
|
|
||||||
+ '(ignore)' # Ignore-file options
|
+ '(ignore)' # Ignore-file options
|
||||||
"(--no-ignore-parent --no-ignore-vcs)--no-ignore[don't respect ignore files]"
|
"(--no-ignore-global --no-ignore-parent --no-ignore-vcs)--no-ignore[don't respect ignore files]"
|
||||||
$no'(--ignore-parent --ignore-vcs)--ignore[respect ignore files]'
|
$no'(--ignore-global --ignore-parent --ignore-vcs)--ignore[respect ignore files]'
|
||||||
|
|
||||||
|
+ '(ignore-global)' # Global ignore-file options
|
||||||
|
"--no-ignore-global[don't respect global ignore files]"
|
||||||
|
$no'--ignore-global[respect global ignore files]'
|
||||||
|
|
||||||
+ '(ignore-parent)' # Parent ignore-file options
|
+ '(ignore-parent)' # Parent ignore-file options
|
||||||
"--no-ignore-parent[don't respect ignore files in parent directories]"
|
"--no-ignore-parent[don't respect ignore files in parent directories]"
|
||||||
|
21
src/app.rs
21
src/app.rs
@ -527,6 +527,7 @@ pub fn all_args_and_flags() -> Vec<RGArg> {
|
|||||||
flag_mmap(&mut args);
|
flag_mmap(&mut args);
|
||||||
flag_no_config(&mut args);
|
flag_no_config(&mut args);
|
||||||
flag_no_ignore(&mut args);
|
flag_no_ignore(&mut args);
|
||||||
|
flag_no_ignore_global(&mut args);
|
||||||
flag_no_ignore_messages(&mut args);
|
flag_no_ignore_messages(&mut args);
|
||||||
flag_no_ignore_parent(&mut args);
|
flag_no_ignore_parent(&mut args);
|
||||||
flag_no_ignore_vcs(&mut args);
|
flag_no_ignore_vcs(&mut args);
|
||||||
@ -1230,6 +1231,26 @@ This flag can be disabled with the --ignore flag.
|
|||||||
args.push(arg);
|
args.push(arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn flag_no_ignore_global(args: &mut Vec<RGArg>) {
|
||||||
|
const SHORT: &str = "Don't respect global ignore files.";
|
||||||
|
const LONG: &str = long!("\
|
||||||
|
Don't respect ignore files that come from \"global\" sources such as git's
|
||||||
|
`core.excludesFile` configuration option (which defaults to
|
||||||
|
`$HOME/.config/git/ignore).
|
||||||
|
|
||||||
|
This flag can be disabled with the --ignore-global flag.
|
||||||
|
");
|
||||||
|
let arg = RGArg::switch("no-ignore-global")
|
||||||
|
.help(SHORT).long_help(LONG)
|
||||||
|
.overrides("ignore-global");
|
||||||
|
args.push(arg);
|
||||||
|
|
||||||
|
let arg = RGArg::switch("ignore-global")
|
||||||
|
.hidden()
|
||||||
|
.overrides("no-ignore-global");
|
||||||
|
args.push(arg);
|
||||||
|
}
|
||||||
|
|
||||||
fn flag_no_ignore_messages(args: &mut Vec<RGArg>) {
|
fn flag_no_ignore_messages(args: &mut Vec<RGArg>) {
|
||||||
const SHORT: &str = "Suppress gitignore parse error messages.";
|
const SHORT: &str = "Suppress gitignore parse error messages.";
|
||||||
const LONG: &str = long!("\
|
const LONG: &str = long!("\
|
||||||
|
11
src/args.rs
11
src/args.rs
@ -62,6 +62,7 @@ pub struct Args {
|
|||||||
max_filesize: Option<u64>,
|
max_filesize: Option<u64>,
|
||||||
mmap: bool,
|
mmap: bool,
|
||||||
no_ignore: bool,
|
no_ignore: bool,
|
||||||
|
no_ignore_global: bool,
|
||||||
no_ignore_messages: bool,
|
no_ignore_messages: bool,
|
||||||
no_ignore_parent: bool,
|
no_ignore_parent: bool,
|
||||||
no_ignore_vcs: bool,
|
no_ignore_vcs: bool,
|
||||||
@ -351,7 +352,9 @@ impl Args {
|
|||||||
wd.max_filesize(self.max_filesize);
|
wd.max_filesize(self.max_filesize);
|
||||||
wd.overrides(self.glob_overrides.clone());
|
wd.overrides(self.glob_overrides.clone());
|
||||||
wd.types(self.types.clone());
|
wd.types(self.types.clone());
|
||||||
wd.git_global(!self.no_ignore && !self.no_ignore_vcs);
|
wd.git_global(
|
||||||
|
!self.no_ignore && !self.no_ignore_vcs && !self.no_ignore_global
|
||||||
|
);
|
||||||
wd.git_ignore(!self.no_ignore && !self.no_ignore_vcs);
|
wd.git_ignore(!self.no_ignore && !self.no_ignore_vcs);
|
||||||
wd.git_exclude(!self.no_ignore && !self.no_ignore_vcs);
|
wd.git_exclude(!self.no_ignore && !self.no_ignore_vcs);
|
||||||
wd.ignore(!self.no_ignore);
|
wd.ignore(!self.no_ignore);
|
||||||
@ -413,6 +416,7 @@ impl<'a> ArgMatches<'a> {
|
|||||||
max_filesize: self.max_filesize()?,
|
max_filesize: self.max_filesize()?,
|
||||||
mmap: mmap,
|
mmap: mmap,
|
||||||
no_ignore: self.no_ignore(),
|
no_ignore: self.no_ignore(),
|
||||||
|
no_ignore_global: self.no_ignore_global(),
|
||||||
no_ignore_messages: self.is_present("no-ignore-messages"),
|
no_ignore_messages: self.is_present("no-ignore-messages"),
|
||||||
no_ignore_parent: self.no_ignore_parent(),
|
no_ignore_parent: self.no_ignore_parent(),
|
||||||
no_ignore_vcs: self.no_ignore_vcs(),
|
no_ignore_vcs: self.no_ignore_vcs(),
|
||||||
@ -1019,6 +1023,11 @@ impl<'a> ArgMatches<'a> {
|
|||||||
|| self.occurrences_of("unrestricted") >= 1
|
|| self.occurrences_of("unrestricted") >= 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns true if global ignore files should be ignored.
|
||||||
|
fn no_ignore_global(&self) -> bool {
|
||||||
|
self.is_present("no-ignore-global") || self.no_ignore()
|
||||||
|
}
|
||||||
|
|
||||||
/// Returns true if parent ignore files should be ignored.
|
/// Returns true if parent ignore files should be ignored.
|
||||||
fn no_ignore_parent(&self) -> bool {
|
fn no_ignore_parent(&self) -> bool {
|
||||||
self.is_present("no-ignore-parent") || self.no_ignore()
|
self.is_present("no-ignore-parent") || self.no_ignore()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user