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}