tsk/storage/utils.rs
1use std::collections::hash_map::DefaultHasher;
2use std::hash::{Hash, Hasher};
3use std::path::Path;
4
5/// Generate a stable hash for a repository path
6pub fn get_repo_hash(repo_path: &Path) -> String {
7 let canonical = repo_path
8 .canonicalize()
9 .unwrap_or_else(|_| repo_path.to_path_buf());
10 let path_str = canonical.to_string_lossy();
11
12 let mut hasher = DefaultHasher::new();
13 path_str.hash(&mut hasher);
14 let hash = hasher.finish();
15
16 // Convert to hex string, take first 8 characters for brevity
17 format!("{hash:x}").chars().take(8).collect()
18}