MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / find_change_by_prefix

Method find_change_by_prefix

atomic-repository/src/repository/changes.rs:1005–1025  ·  view source on GitHub ↗

Find a change by hash prefix. This searches through all stored changes to find one whose hash starts with the given prefix. Useful for CLI commands that allow abbreviated hashes. # Arguments `prefix` - The hash prefix (case-insensitive, at least 2 characters) # Returns `Ok(Some(hash))` - Found a unique matching change `Ok(None)` - No change matched the prefix `Err(_)` - Multiple changes match

(&self, prefix: &str)

Source from the content-addressed store, hash-verified

1003 /// }
1004 /// ```
1005 pub fn find_change_by_prefix(&self, prefix: &str) -> Result<Option<Hash>, RepositoryError> {
1006 let prefix_upper = prefix.to_uppercase();
1007 let mut matches = Vec::new();
1008
1009 for result in self.iter_changes() {
1010 let hash = result?;
1011 let hash_str = hash.to_base32();
1012 if hash_str.starts_with(&prefix_upper) {
1013 matches.push(hash);
1014 // If we find more than one, it's ambiguous
1015 if matches.len() > 1 {
1016 return Err(RepositoryError::AmbiguousHash {
1017 prefix: prefix.to_string(),
1018 matches: matches.iter().map(|h| h.to_base32()).collect(),
1019 });
1020 }
1021 }
1022 }
1023
1024 Ok(matches.into_iter().next())
1025 }
1026
1027 // =========================================================================
1028 // Provenance Graph Operations

Callers 1

parse_change_hashFunction · 0.80

Calls 7

iter_changesMethod · 0.45
to_base32Method · 0.45
pushMethod · 0.45
lenMethod · 0.45
iterMethod · 0.45
nextMethod · 0.45
into_iterMethod · 0.45

Tested by

no test coverage detected