Conversation
|
I totally understand if you don't want to expand things to support every oddball VCS, but so many tools I like (cargo watch, rg, fzf, fd) are all built on this common library that adding a bit of support at the core gets a lot of things to just work. |
|
any chance I can get this considered? |
|
I think my main concerns here are:
|
|
Sorry about the lack of link, that is my bad. https://martinvonz.github.io/jj/latest/ is the best spot to read. It is a version control system like git, so As an alternate suggestion, I would recommend respecting |
That already exists today with |
|
The problem that I run into with |
|
No. I personally think that would be wildly inappropriate. I'm not saying No to this PR, but it's going to require that I or someone goes and understands |
8dda96b to
bb1f30f
Compare
|
I checked with folks on the I absolutely understand that this is a judgement call on your end about complexity versus general utility. If there is any data I can provide to make that case, I would be happy to try, but I recognize that |
|
Did you have a chance to come to a conclusion here? |
|
Following up, I have verified this PR with Thanks! |
|
Some musings: Jujutsu is a neat VCS, and is quite As a quick note: Personally, I was using ripgrep suboptimally for some time, because I wasn't aware of
So I don't think people would be annoyed by a default that respects gitignore rules (even if If the flipped version becomes the default, then we would not need to double the number of Sidenote: I now have Another alternative to consider: if a With all the above, I also want to add: I don't want to increase maintainer burden, and I understand things like defaults are a hard decision. The existence of |
That's a problem for globally-defined |
|
Ping on this, it would be awesome to get this in, although for now |
|
And yes, there's no way that |
|
The next step here is for me to try this out and do some ad hoc perf testing to ensure the extra stat call isn't too big of a perf hit. If it is, we can brainstorm how to mitigate it (or just accept it). My guess is that it will be acceptable. |
- Allow `.jj` dirs to count as vcs directories. - Simplify the control flow around resolving info/exclude
BurntSushi
left a comment
There was a problem hiding this comment.
I'm unsure of how this patch is supposed to work. And it looks like there are unrelated changes here?
| Some(Ok(line)) => line, | ||
| Some(Err(err)) => { | ||
| return Err(Some(Error::Io(err).with_path(git_dir_path()))); | ||
| return Err(Some(Error::Io(err).with_path(git_dir))); |
There was a problem hiding this comment.
You had expressed concern about number of allocations and these changes eliminate some extra allocations. Happy to separate them to a different PR if you prefer
| Gitignore::empty() | ||
| } else { | ||
| match resolve_git_commondir(dir, git_type) { | ||
| match resolve_git_commondir(dir.join(".git"), git_type) { |
There was a problem hiding this comment.
Why don't we need to also do dir.join(".jj") here?
There was a problem hiding this comment.
Oh I see, as @martinvonz said above, it looks like we are punting on handling clone-specific excludes.
This makes it so the presence of `.jj` will cause ripgrep to treat it as a VCS directory, just as if `.git` were present. This is useful for ripgrep's default behavior when working with jj repositories that don't have a `.git` but do have `.gitignore`. Namely, ripgrep requires the presence of a VCS repository in order to respect `.gitignore`. We don't handle clone-specific exclude rules for jj repositories without `.git` though. It seems it isn't 100% set yet where we can find those[1]. Closes #2842 [1]: #2842 (comment)
This makes it so the presence of `.jj` will cause ripgrep to treat it as a VCS directory, just as if `.git` were present. This is useful for ripgrep's default behavior when working with jj repositories that don't have a `.git` but do have `.gitignore`. Namely, ripgrep requires the presence of a VCS repository in order to respect `.gitignore`. We don't handle clone-specific exclude rules for jj repositories without `.git` though. It seems it isn't 100% set yet where we can find those[1]. Closes #2842 [1]: #2842 (comment)
⚠️ **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 #​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. </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=-->
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.
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.
This makes it so the presence of `.jj` will cause ripgrep to treat it as a VCS directory, just as if `.git` were present. This is useful for ripgrep's default behavior when working with jj repositories that don't have a `.git` but do have `.gitignore`. Namely, ripgrep requires the presence of a VCS repository in order to respect `.gitignore`. We don't handle clone-specific exclude rules for jj repositories without `.git` though. It seems it isn't 100% set yet where we can find those[1]. Closes #2842 [1]: BurntSushi/ripgrep#2842 (comment)
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.
.jjdirs to count as vcs directories.