index: make ChangeIdIndex
methods fallible
#7823
Merged
+200
−169
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.
Context
This is part of a series of changes to make most methods on index traits (i.e.
ChangeIdIndex
,MutableIndex
,ReadonlyIndex
,Index
) fallible. The changes will enable networked implementations of these traits, which can produce I/O errors during operation. See #7825 for more information.This is a follow-up to #7799, which mainly reorganized error types before converting methods to return
Result
.Changes
These changes convert two methods on the trait
ChangeIdIndex
to be fallible:ChangeIdIndex::resolve_prefix
ChangeIdIndex::shortest_unique_prefix_len
Note that rather than widen the error type of
rewrite::find_duplicate_divergent_commits
fromBackendError
to some new errorenum
that "properly" subsumesBackendError
andIndexError
, I opted to add another instance of the existing pattern:I figured that we already need to address some of these existing
BackendError::Other(IndexError)
cases, and it'll be better to tackle this sort of error reorganization separate from these fallibility changes.Please let me know if there's anything I can fix up.
Thanks!
Brian
Checklist
If applicable:
CHANGELOG.md
README.md
,docs/
,demos/
)cli/src/config-schema.json
)