Skip to content

ignore: fix filtering searching subdir or .ignore in parent dir#2933

Closed
WalterScottYoung wants to merge 1 commit intoBurntSushi:masterfrom
WalterScottYoung:fix_issue_2836
Closed

ignore: fix filtering searching subdir or .ignore in parent dir#2933
WalterScottYoung wants to merge 1 commit intoBurntSushi:masterfrom
WalterScottYoung:fix_issue_2836

Conversation

@WalterScottYoung
Copy link
Contributor

@WalterScottYoung WalterScottYoung commented Nov 15, 2024

The previous code deleted too many parts of the path when constructing the absolute path, resulting in a shortened final path. This patch creates the correct absolute path by only removing the necessary parts.

Fixes #2836 and #2747 and #2731

The previous code deleted too many parts of the path when constructing the absolute path, resulting in a shortened final path. This patch creates the correct absolute path by only removing the necessary parts.

Fixes BurntSushi#2836
@WalterScottYoung
Copy link
Contributor Author

WalterScottYoung commented Nov 15, 2024

One thing to notice is that commit cad1f5f didn't seems to fully fix #1757, the test in issue 1757 will fail if we add one more directory in the path. I don't know if we should reopen 1757 or something like that to note others about this?

The following test from 1757 with "onemore" directory will fail before this fix.

mkdir tmp
cd tmp
mkdir rust
mkdir -p rust/target/onemore
echo needle > rust/source.rs
echo needle > rust/target/onemore/rustdoc-output.html
echo rust/target/onemore > .ignore
rg --files-with-matches needle
rg --files-with-matches needle rust
echo target >> .ignore
rg --files-with-matches needle rust

@gstokkink

This comment was marked as duplicate.

@Lucus16
Copy link

Lucus16 commented Feb 3, 2025

I can confirm this fixes some bugs I was about to report where some files listed in gitignore glob rules were not excluded depending on the directory that rg --files was run from. Thanks!

@woess
Copy link

woess commented Feb 12, 2025

This PR also fixes #2778.

@beeb

This comment was marked as duplicate.

@fenuks

This comment was marked as duplicate.

Landaman added a commit to Landaman/dotfiles that referenced this pull request May 26, 2025
Due to an issue with ripgrep, using the **/.husky/_/ pattern will not
work. Instead, a _/ pattern can be used in the meantime, since who would
reasonably name a folder _?

Fixing PR: BurntSushi/ripgrep#2933
Landaman added a commit to Landaman/dotfiles that referenced this pull request May 26, 2025
Due to an issue with ripgrep, using the **/.husky/_/ pattern will not
work. Instead, a _/ pattern can be used in the meantime, since who would
reasonably name a folder _?

Fixing PR: BurntSushi/ripgrep#2933
Landaman added a commit to Landaman/dotfiles that referenced this pull request May 26, 2025
Due to an issue with ripgrep, using the **/.husky/_/ pattern will not
work. Instead, a _/ pattern can be used in the meantime, since who would
reasonably name a folder _?

Fixing PR: BurntSushi/ripgrep#2933
@reneleonhardt
Copy link

Great work, thank you! 👍
Just wondering, one test was enough for negation and nesting?

@gstokkink

This comment was marked as duplicate.

@WalterScottYoung
Copy link
Contributor Author

Great work, thank you! 👍
Just wondering, one test was enough for negation and nesting?

It's been some time and I don't really remember the detail of this, but I'm pretty sure that the original problem was cause by the path concatenation and the target file's relative depth to where ripgrep was called be positive or 0 or negative was the boardline that this bug would be triggered, so only tests for those boardline scenarios was added, since more layer of dir won't matter as the bug would be triggered in the first nested layer of dir. Thank you for your question and you can add some more tests that you think is valuable :-)

@BurntSushi BurntSushi added the rollup A PR that has been merged with many others in a rollup. label Jul 6, 2025
BurntSushi pushed a commit that referenced this pull request Jul 27, 2025
The previous code deleted too many parts of the path when constructing
the absolute path, resulting in a shortened final path. This patch
creates the correct absolute path by only removing the necessary parts.

Fixes #829, Fixes #2731, Fixes #2747, Fixes #2778, Fixes #2836, Fixes #2933
Closes #2933
BurntSushi pushed a commit that referenced this pull request Sep 10, 2025
The previous code deleted too many parts of the path when constructing
the absolute path, resulting in a shortened final path. This patch
creates the correct absolute path by only removing the necessary parts.

Fixes #829, Fixes #2731, Fixes #2747, Fixes #2778, Fixes #2836, Fixes #2933, Fixes #3144
Closes #2933
BurntSushi added a commit that referenced this pull request Oct 11, 2025
I believe this was actually fixed by #2933.

Closes #3067
BurntSushi added a commit that referenced this pull request Oct 11, 2025
BurntSushi added a commit that referenced this pull request Oct 11, 2025
I believe this was actually fixed by #2933.

Closes #3067
BurntSushi added a commit that referenced this pull request Oct 11, 2025
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Oct 17, 2025
⚠️ **CAUTION: this is a major update, indicating a breaking change!** ⚠️

This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [BurntSushi/ripgrep](https://github.com/BurntSushi/ripgrep) | major | `14.1.1` -> `15.0.0` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>BurntSushi/ripgrep (BurntSushi/ripgrep)</summary>

### [`v15.0.0`](https://github.com/BurntSushi/ripgrep/blob/HEAD/CHANGELOG.md#1500-2025-10-15)

[Compare Source](BurntSushi/ripgrep@14.1.1...15.0.0)

\===================
ripgrep 15 is a new major version release of ripgrep that mostly has bug fixes,
some minor performance improvements and minor new features. Here are some
highlights:

- Several bugs around gitignore matching have been fixed. This includes
  a commonly reported bug related to applying gitignore rules from parent
  directories.
- A memory usage regression when handling very large gitignore files has been
  fixed.
- `rg -vf file`, where `file` is empty, now matches everything.
- The `-r/--replace` flag now works with `--json`.
- A subset of Jujutsu (`jj`) repositories are now treated as if they were git
  repositories. That is, ripgrep will respect `jj`'s gitignores.
- Globs can now use nested curly braces.

Platform support:

- `aarch64` for Windows now has release artifacts.
- `powerpc64` no longer has release artifacts generated for it. The CI
  release workflow stopped working, and I didn't deem it worth my time to
  debug it. If someone wants this and can test it, I'd be happy to add it
  back.
- ripgrep binaries are now compiled with full LTO enabled. You may notice
  small performance improvements from this and a modest decrease in binary
  size.

Performance improvements:

- [PERF #&#8203;2111](BurntSushi/ripgrep#2111):
  Don't resolve helper binaries on Windows when `-z/--search-zip` isn't used.
- [PERF #&#8203;2865](BurntSushi/ripgrep#2865):
  Avoid using path canonicalization on Windows when emitting hyperlinks.
- [PERF #&#8203;3184](BurntSushi/ripgrep#3184):
  Improve performance of large values with `-A/--after-context`.

Bug fixes:

- [BUG #&#8203;829](BurntSushi/ripgrep#829),
  [BUG #&#8203;2731](BurntSushi/ripgrep#2731),
  [BUG #&#8203;2747](BurntSushi/ripgrep#2747),
  [BUG #&#8203;2770](BurntSushi/ripgrep#2770),
  [BUG #&#8203;2778](BurntSushi/ripgrep#2778),
  [BUG #&#8203;2836](BurntSushi/ripgrep#2836),
  [BUG #&#8203;2933](BurntSushi/ripgrep#2933),
  [BUG #&#8203;3067](BurntSushi/ripgrep#3067):
  Fix bug related to gitignores from parent directories.
- [BUG #&#8203;1332](BurntSushi/ripgrep#1332),
  [BUG #&#8203;3001](BurntSushi/ripgrep#3001):
  Make `rg -vf file` where `file` is empty match everything.
- [BUG #&#8203;2177](BurntSushi/ripgrep#2177):
  Ignore a UTF-8 BOM marker at the start of `.gitignore` (and similar files).
- [BUG #&#8203;2750](BurntSushi/ripgrep#2750):
  Fix memory usage regression for some truly large gitignore files.
- [BUG #&#8203;2944](BurntSushi/ripgrep#2944):
  Fix a bug where the "bytes searched" in `--stats` output could be incorrect.
- [BUG #&#8203;2990](BurntSushi/ripgrep#2990):
  Fix a bug where ripgrep would mishandle globs that ended with a `.`.
- [BUG #&#8203;2094](BurntSushi/ripgrep#2094),
  [BUG #&#8203;3076](BurntSushi/ripgrep#3076):
  Fix bug with `-m/--max-count` and `-U/--multiline` showing too many matches.
- [BUG #&#8203;3100](BurntSushi/ripgrep#3100):
  Preserve line terminators when using `-r/--replace` flag.
- [BUG #&#8203;3108](BurntSushi/ripgrep#3108):
  Fix a bug where `-q --files-without-match` inverted the exit code.
- [BUG #&#8203;3131](BurntSushi/ripgrep#3131):
  Document inconsistency between `-c/--count` and `--files-with-matches`.
- [BUG #&#8203;3135](BurntSushi/ripgrep#3135):
  Fix rare panic for some classes of large regexes on large haystacks.
- [BUG #&#8203;3140](BurntSushi/ripgrep#3140):
  Ensure hyphens in flag names are escaped in the roff text for the man page.
- [BUG #&#8203;3155](BurntSushi/ripgrep#3155):
  Statically compile PCRE2 into macOS release artifacts on `aarch64`.
- [BUG #&#8203;3173](BurntSushi/ripgrep#3173):
  Fix ancestor ignore filter bug when searching whitelisted hidden files.
- [BUG #&#8203;3178](BurntSushi/ripgrep#3178):
  Fix bug causing incorrect summary statistics with `--json` flag.
- [BUG #&#8203;3179](BurntSushi/ripgrep#3179):
  Fix gitignore bug when searching absolute paths with global gitignores.
- [BUG #&#8203;3180](BurntSushi/ripgrep#3180):
  Fix a panicking bug when using `-U/--multiline` and `-r/--replace`.

Feature enhancements:

- Many enhancements to the default set of file types available for filtering.
- [FEATURE #&#8203;1872](BurntSushi/ripgrep#1872):
  Make `-r/--replace` work with `--json`.
- [FEATURE #&#8203;2708](BurntSushi/ripgrep#2708):
  Completions for the fish shell take ripgrep's config file into account.
- [FEATURE #&#8203;2841](BurntSushi/ripgrep#2841):
  Add `italic` to the list of available style attributes in `--color`.
- [FEATURE #&#8203;2842](BurntSushi/ripgrep#2842):
  Directories containing `.jj` are now treated as git repositories.
- [FEATURE #&#8203;2849](BurntSushi/ripgrep#2849):
  When using multithreading, schedule files to search in order given on CLI.
- [FEATURE #&#8203;2943](BurntSushi/ripgrep#2943):
  Add `aarch64` release artifacts for Windows.
- [FEATURE #&#8203;3024](BurntSushi/ripgrep#3024):
  Add `highlight` color type, for styling non-matching text in a matching line.
- [FEATURE #&#8203;3048](BurntSushi/ripgrep#3048):
  Globs in ripgrep (and the `globset` crate) now support nested alternates.
- [FEATURE #&#8203;3096](BurntSushi/ripgrep#3096):
  Improve completions for `--hyperlink-format` in bash and fish.
- [FEATURE #&#8203;3102](BurntSushi/ripgrep#3102):
  Improve completions for `--hyperlink-format` in zsh.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNDguNiIsInVwZGF0ZWRJblZlciI6IjQxLjE0OC42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Oct 17, 2025
15.0.0 (2025-10-15)
===================
ripgrep 15 is a new major version release of ripgrep that mostly has bug fixes,
some minor performance improvements and minor new features. Here are some
highlights:

* Several bugs around gitignore matching have been fixed. This includes
  a commonly reported bug related to applying gitignore rules from parent
  directories.
* A memory usage regression when handling very large gitignore files has been
  fixed.
* `rg -vf file`, where `file` is empty, now matches everything.
* The `-r/--replace` flag now works with `--json`.
* A subset of Jujutsu (`jj`) repositories are now treated as if they were git
  repositories. That is, ripgrep will respect `jj`'s gitignores.
* Globs can now use nested curly braces.

Platform support:

* `aarch64` for Windows now has release artifacts.
* `powerpc64` no longer has release artifacts generated for it. The CI
  release workflow stopped working, and I didn't deem it worth my time to
  debug it. If someone wants this and can test it, I'd be happy to add it
  back.
* ripgrep binaries are now compiled with full LTO enabled. You may notice
  small performance improvements from this and a modest decrease in binary
  size.

Performance improvements:

* [PERF #2111](BurntSushi/ripgrep#2111):
  Don't resolve helper binaries on Windows when `-z/--search-zip` isn't used.
* [PERF #2865](BurntSushi/ripgrep#2865):
  Avoid using path canonicalization on Windows when emitting hyperlinks.
* [PERF #3184](BurntSushi/ripgrep#3184):
  Improve performance of large values with `-A/--after-context`.

Bug fixes:

* [BUG #829](BurntSushi/ripgrep#829),
  [BUG #2731](BurntSushi/ripgrep#2731),
  [BUG #2747](BurntSushi/ripgrep#2747),
  [BUG #2770](BurntSushi/ripgrep#2770),
  [BUG #2778](BurntSushi/ripgrep#2778),
  [BUG #2836](BurntSushi/ripgrep#2836),
  [BUG #2933](BurntSushi/ripgrep#2933),
  [BUG #3067](BurntSushi/ripgrep#3067):
  Fix bug related to gitignores from parent directories.
* [BUG #1332](BurntSushi/ripgrep#1332),
  [BUG #3001](BurntSushi/ripgrep#3001):
  Make `rg -vf file` where `file` is empty match everything.
* [BUG #2177](BurntSushi/ripgrep#2177):
  Ignore a UTF-8 BOM marker at the start of `.gitignore` (and similar files).
* [BUG #2750](BurntSushi/ripgrep#2750):
  Fix memory usage regression for some truly large gitignore files.
* [BUG #2944](BurntSushi/ripgrep#2944):
  Fix a bug where the "bytes searched" in `--stats` output could be incorrect.
* [BUG #2990](BurntSushi/ripgrep#2990):
  Fix a bug where ripgrep would mishandle globs that ended with a `.`.
* [BUG #2094](BurntSushi/ripgrep#2094),
  [BUG #3076](BurntSushi/ripgrep#3076):
  Fix bug with `-m/--max-count` and `-U/--multiline` showing too many matches.
* [BUG #3100](BurntSushi/ripgrep#3100):
  Preserve line terminators when using `-r/--replace` flag.
* [BUG #3108](BurntSushi/ripgrep#3108):
  Fix a bug where `-q --files-without-match` inverted the exit code.
* [BUG #3131](BurntSushi/ripgrep#3131):
  Document inconsistency between `-c/--count` and `--files-with-matches`.
* [BUG #3135](BurntSushi/ripgrep#3135):
  Fix rare panic for some classes of large regexes on large haystacks.
* [BUG #3140](BurntSushi/ripgrep#3140):
  Ensure hyphens in flag names are escaped in the roff text for the man page.
* [BUG #3155](BurntSushi/ripgrep#3155):
  Statically compile PCRE2 into macOS release artifacts on `aarch64`.
* [BUG #3173](BurntSushi/ripgrep#3173):
  Fix ancestor ignore filter bug when searching whitelisted hidden files.
* [BUG #3178](BurntSushi/ripgrep#3178):
  Fix bug causing incorrect summary statistics with `--json` flag.
* [BUG #3179](BurntSushi/ripgrep#3179):
  Fix gitignore bug when searching absolute paths with global gitignores.
* [BUG #3180](BurntSushi/ripgrep#3180):
  Fix a panicking bug when using `-U/--multiline` and `-r/--replace`.

Feature enhancements:

* Many enhancements to the default set of file types available for filtering.
* [FEATURE #1872](BurntSushi/ripgrep#1872):
  Make `-r/--replace` work with `--json`.
* [FEATURE #2708](BurntSushi/ripgrep#2708):
  Completions for the fish shell take ripgrep's config file into account.
* [FEATURE #2841](BurntSushi/ripgrep#2841):
  Add `italic` to the list of available style attributes in `--color`.
* [FEATURE #2842](BurntSushi/ripgrep#2842):
  Directories containing `.jj` are now treated as git repositories.
* [FEATURE #2849](BurntSushi/ripgrep#2849):
  When using multithreading, schedule files to search in order given on CLI.
* [FEATURE #2943](BurntSushi/ripgrep#2943):
  Add `aarch64` release artifacts for Windows.
* [FEATURE #3024](BurntSushi/ripgrep#3024):
  Add `highlight` color type, for styling non-matching text in a matching line.
* [FEATURE #3048](BurntSushi/ripgrep#3048):
  Globs in ripgrep (and the `globset` crate) now support nested alternates.
* [FEATURE #3096](BurntSushi/ripgrep#3096):
  Improve completions for `--hyperlink-format` in bash and fish.
* [FEATURE #3102](BurntSushi/ripgrep#3102):
  Improve completions for `--hyperlink-format` in zsh.
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Oct 23, 2025
15.0.0 (2025-10-15)
===================
ripgrep 15 is a new major version release of ripgrep that mostly has bug fixes,
some minor performance improvements and minor new features. Here are some
highlights:

* Several bugs around gitignore matching have been fixed. This includes
  a commonly reported bug related to applying gitignore rules from parent
  directories.
* A memory usage regression when handling very large gitignore files has been
  fixed.
* `rg -vf file`, where `file` is empty, now matches everything.
* The `-r/--replace` flag now works with `--json`.
* A subset of Jujutsu (`jj`) repositories are now treated as if they were git
  repositories. That is, ripgrep will respect `jj`'s gitignores.
* Globs can now use nested curly braces.

Platform support:

* `aarch64` for Windows now has release artifacts.
* `powerpc64` no longer has release artifacts generated for it. The CI
  release workflow stopped working, and I didn't deem it worth my time to
  debug it. If someone wants this and can test it, I'd be happy to add it
  back.
* ripgrep binaries are now compiled with full LTO enabled. You may notice
  small performance improvements from this and a modest decrease in binary
  size.

Performance improvements:

* [PERF #2111](BurntSushi/ripgrep#2111):
  Don't resolve helper binaries on Windows when `-z/--search-zip` isn't used.
* [PERF #2865](BurntSushi/ripgrep#2865):
  Avoid using path canonicalization on Windows when emitting hyperlinks.
* [PERF #3184](BurntSushi/ripgrep#3184):
  Improve performance of large values with `-A/--after-context`.

Bug fixes:

* [BUG #829](BurntSushi/ripgrep#829),
  [BUG #2731](BurntSushi/ripgrep#2731),
  [BUG #2747](BurntSushi/ripgrep#2747),
  [BUG #2770](BurntSushi/ripgrep#2770),
  [BUG #2778](BurntSushi/ripgrep#2778),
  [BUG #2836](BurntSushi/ripgrep#2836),
  [BUG #2933](BurntSushi/ripgrep#2933),
  [BUG #3067](BurntSushi/ripgrep#3067):
  Fix bug related to gitignores from parent directories.
* [BUG #1332](BurntSushi/ripgrep#1332),
  [BUG #3001](BurntSushi/ripgrep#3001):
  Make `rg -vf file` where `file` is empty match everything.
* [BUG #2177](BurntSushi/ripgrep#2177):
  Ignore a UTF-8 BOM marker at the start of `.gitignore` (and similar files).
* [BUG #2750](BurntSushi/ripgrep#2750):
  Fix memory usage regression for some truly large gitignore files.
* [BUG #2944](BurntSushi/ripgrep#2944):
  Fix a bug where the "bytes searched" in `--stats` output could be incorrect.
* [BUG #2990](BurntSushi/ripgrep#2990):
  Fix a bug where ripgrep would mishandle globs that ended with a `.`.
* [BUG #2094](BurntSushi/ripgrep#2094),
  [BUG #3076](BurntSushi/ripgrep#3076):
  Fix bug with `-m/--max-count` and `-U/--multiline` showing too many matches.
* [BUG #3100](BurntSushi/ripgrep#3100):
  Preserve line terminators when using `-r/--replace` flag.
* [BUG #3108](BurntSushi/ripgrep#3108):
  Fix a bug where `-q --files-without-match` inverted the exit code.
* [BUG #3131](BurntSushi/ripgrep#3131):
  Document inconsistency between `-c/--count` and `--files-with-matches`.
* [BUG #3135](BurntSushi/ripgrep#3135):
  Fix rare panic for some classes of large regexes on large haystacks.
* [BUG #3140](BurntSushi/ripgrep#3140):
  Ensure hyphens in flag names are escaped in the roff text for the man page.
* [BUG #3155](BurntSushi/ripgrep#3155):
  Statically compile PCRE2 into macOS release artifacts on `aarch64`.
* [BUG #3173](BurntSushi/ripgrep#3173):
  Fix ancestor ignore filter bug when searching whitelisted hidden files.
* [BUG #3178](BurntSushi/ripgrep#3178):
  Fix bug causing incorrect summary statistics with `--json` flag.
* [BUG #3179](BurntSushi/ripgrep#3179):
  Fix gitignore bug when searching absolute paths with global gitignores.
* [BUG #3180](BurntSushi/ripgrep#3180):
  Fix a panicking bug when using `-U/--multiline` and `-r/--replace`.

Feature enhancements:

* Many enhancements to the default set of file types available for filtering.
* [FEATURE #1872](BurntSushi/ripgrep#1872):
  Make `-r/--replace` work with `--json`.
* [FEATURE #2708](BurntSushi/ripgrep#2708):
  Completions for the fish shell take ripgrep's config file into account.
* [FEATURE #2841](BurntSushi/ripgrep#2841):
  Add `italic` to the list of available style attributes in `--color`.
* [FEATURE #2842](BurntSushi/ripgrep#2842):
  Directories containing `.jj` are now treated as git repositories.
* [FEATURE #2849](BurntSushi/ripgrep#2849):
  When using multithreading, schedule files to search in order given on CLI.
* [FEATURE #2943](BurntSushi/ripgrep#2943):
  Add `aarch64` release artifacts for Windows.
* [FEATURE #3024](BurntSushi/ripgrep#3024):
  Add `highlight` color type, for styling non-matching text in a matching line.
* [FEATURE #3048](BurntSushi/ripgrep#3048):
  Globs in ripgrep (and the `globset` crate) now support nested alternates.
* [FEATURE #3096](BurntSushi/ripgrep#3096):
  Improve completions for `--hyperlink-format` in bash and fish.
* [FEATURE #3102](BurntSushi/ripgrep#3102):
  Improve completions for `--hyperlink-format` in zsh.
riastradh pushed a commit to riastradh/pkgsrc-test20250901 that referenced this pull request Feb 8, 2026
15.0.0 (2025-10-15)
===================
ripgrep 15 is a new major version release of ripgrep that mostly has bug fixes,
some minor performance improvements and minor new features. Here are some
highlights:

* Several bugs around gitignore matching have been fixed. This includes
  a commonly reported bug related to applying gitignore rules from parent
  directories.
* A memory usage regression when handling very large gitignore files has been
  fixed.
* `rg -vf file`, where `file` is empty, now matches everything.
* The `-r/--replace` flag now works with `--json`.
* A subset of Jujutsu (`jj`) repositories are now treated as if they were git
  repositories. That is, ripgrep will respect `jj`'s gitignores.
* Globs can now use nested curly braces.

Platform support:

* `aarch64` for Windows now has release artifacts.
* `powerpc64` no longer has release artifacts generated for it. The CI
  release workflow stopped working, and I didn't deem it worth my time to
  debug it. If someone wants this and can test it, I'd be happy to add it
  back.
* ripgrep binaries are now compiled with full LTO enabled. You may notice
  small performance improvements from this and a modest decrease in binary
  size.

Performance improvements:

* [PERF #2111](BurntSushi/ripgrep#2111):
  Don't resolve helper binaries on Windows when `-z/--search-zip` isn't used.
* [PERF #2865](BurntSushi/ripgrep#2865):
  Avoid using path canonicalization on Windows when emitting hyperlinks.
* [PERF #3184](BurntSushi/ripgrep#3184):
  Improve performance of large values with `-A/--after-context`.

Bug fixes:

* [BUG #829](BurntSushi/ripgrep#829),
  [BUG #2731](BurntSushi/ripgrep#2731),
  [BUG #2747](BurntSushi/ripgrep#2747),
  [BUG #2770](BurntSushi/ripgrep#2770),
  [BUG #2778](BurntSushi/ripgrep#2778),
  [BUG #2836](BurntSushi/ripgrep#2836),
  [BUG #2933](BurntSushi/ripgrep#2933),
  [BUG #3067](BurntSushi/ripgrep#3067):
  Fix bug related to gitignores from parent directories.
* [BUG #1332](BurntSushi/ripgrep#1332),
  [BUG #3001](BurntSushi/ripgrep#3001):
  Make `rg -vf file` where `file` is empty match everything.
* [BUG #2177](BurntSushi/ripgrep#2177):
  Ignore a UTF-8 BOM marker at the start of `.gitignore` (and similar files).
* [BUG #2750](BurntSushi/ripgrep#2750):
  Fix memory usage regression for some truly large gitignore files.
* [BUG #2944](BurntSushi/ripgrep#2944):
  Fix a bug where the "bytes searched" in `--stats` output could be incorrect.
* [BUG #2990](BurntSushi/ripgrep#2990):
  Fix a bug where ripgrep would mishandle globs that ended with a `.`.
* [BUG #2094](BurntSushi/ripgrep#2094),
  [BUG #3076](BurntSushi/ripgrep#3076):
  Fix bug with `-m/--max-count` and `-U/--multiline` showing too many matches.
* [BUG #3100](BurntSushi/ripgrep#3100):
  Preserve line terminators when using `-r/--replace` flag.
* [BUG #3108](BurntSushi/ripgrep#3108):
  Fix a bug where `-q --files-without-match` inverted the exit code.
* [BUG #3131](BurntSushi/ripgrep#3131):
  Document inconsistency between `-c/--count` and `--files-with-matches`.
* [BUG #3135](BurntSushi/ripgrep#3135):
  Fix rare panic for some classes of large regexes on large haystacks.
* [BUG #3140](BurntSushi/ripgrep#3140):
  Ensure hyphens in flag names are escaped in the roff text for the man page.
* [BUG #3155](BurntSushi/ripgrep#3155):
  Statically compile PCRE2 into macOS release artifacts on `aarch64`.
* [BUG #3173](BurntSushi/ripgrep#3173):
  Fix ancestor ignore filter bug when searching whitelisted hidden files.
* [BUG #3178](BurntSushi/ripgrep#3178):
  Fix bug causing incorrect summary statistics with `--json` flag.
* [BUG #3179](BurntSushi/ripgrep#3179):
  Fix gitignore bug when searching absolute paths with global gitignores.
* [BUG #3180](BurntSushi/ripgrep#3180):
  Fix a panicking bug when using `-U/--multiline` and `-r/--replace`.

Feature enhancements:

* Many enhancements to the default set of file types available for filtering.
* [FEATURE #1872](BurntSushi/ripgrep#1872):
  Make `-r/--replace` work with `--json`.
* [FEATURE #2708](BurntSushi/ripgrep#2708):
  Completions for the fish shell take ripgrep's config file into account.
* [FEATURE #2841](BurntSushi/ripgrep#2841):
  Add `italic` to the list of available style attributes in `--color`.
* [FEATURE #2842](BurntSushi/ripgrep#2842):
  Directories containing `.jj` are now treated as git repositories.
* [FEATURE #2849](BurntSushi/ripgrep#2849):
  When using multithreading, schedule files to search in order given on CLI.
* [FEATURE #2943](BurntSushi/ripgrep#2943):
  Add `aarch64` release artifacts for Windows.
* [FEATURE #3024](BurntSushi/ripgrep#3024):
  Add `highlight` color type, for styling non-matching text in a matching line.
* [FEATURE #3048](BurntSushi/ripgrep#3048):
  Globs in ripgrep (and the `globset` crate) now support nested alternates.
* [FEATURE #3096](BurntSushi/ripgrep#3096):
  Improve completions for `--hyperlink-format` in bash and fish.
* [FEATURE #3102](BurntSushi/ripgrep#3102):
  Improve completions for `--hyperlink-format` in zsh.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

rollup A PR that has been merged with many others in a rollup.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Some directories in .ignore aren't ignored

8 participants