This repository was archived by the owner on Feb 20, 2026. It is now read-only.
Allow multiple search-and-replace paths#93
Open
ErichDonGubler wants to merge 2 commits intoyour-tools:mainfrom
Open
Allow multiple search-and-replace paths#93ErichDonGubler wants to merge 2 commits intoyour-tools:mainfrom
ErichDonGubler wants to merge 2 commits intoyour-tools:mainfrom
Conversation
Do our best to limit visiting paths to at most once, in preparation for allowing multiple paths to be specified in a search-and-replace operation. If we didn't do this, multiple path cases like this would be handled incorrectly: ``` $ cat a.txt foo $ # We want to replace `foo` with `foobar`... ruplacer foo foobar a.txt a.txt <snip> $ # ...but we got `foobarbar` instead: $ cat a.txt foobarbar ``` It's important to note what the trade-off for deduplication is. For each path, we now call `std::fs::canonicalize`, and put the canonicalized path in a set built using the the [`patricia_tree` crate] for somewhat efficiently storage. Interestingly, the above is also a potential issue with following symlinks, which has never been allowed before. Perhaps this change could make it sufficiently safe to add an option for following symlinks? [`patricia_tree` crate]: https://docs.rs/patricia_tree/0.3.1/
This was referenced May 15, 2022
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Intended to resolve #51, pending discussion (there's some trade-offs!). See individual commits for more details on changes.
Open questions:
refactor: skip duplicate canonicalized paths) is a good candidate.