summaryrefslogtreecommitdiff
path: root/crates/vcs_data/src
diff options
context:
space:
mode:
Diffstat (limited to 'crates/vcs_data/src')
-rw-r--r--crates/vcs_data/src/data/local/align.rs3
-rw-r--r--crates/vcs_data/src/data/local/file_status.rs22
-rw-r--r--crates/vcs_data/src/data/sheet.rs3
3 files changed, 28 insertions, 0 deletions
diff --git a/crates/vcs_data/src/data/local/align.rs b/crates/vcs_data/src/data/local/align.rs
index 1b8c3c9..715c785 100644
--- a/crates/vcs_data/src/data/local/align.rs
+++ b/crates/vcs_data/src/data/local/align.rs
@@ -16,6 +16,7 @@ pub struct AlignTasks {
pub created: Vec<(AlignTasksName, AlignPathBuf)>,
pub lost: Vec<(AlignTasksName, AlignPathBuf)>,
pub moved: Vec<(AlignTasksName, (AlignLostPathBuf, AlignCreatedPathBuf))>,
+ pub erased: Vec<(AlignTasksName, AlignPathBuf)>,
}
impl AlignTasks {
@@ -24,6 +25,7 @@ impl AlignTasks {
created: path_hash_set_sort_helper(result.created.clone(), "created"),
lost: path_hash_set_sort_helper(result.lost.clone(), "lost"),
moved: path_hash_map_sort_helper(result.moved.clone(), "moved"),
+ erased: path_hash_set_sort_helper(result.erased.clone(), "erased"),
}
}
@@ -32,6 +34,7 @@ impl AlignTasks {
created: path_hash_set_sort_helper(result.created, "created"),
lost: path_hash_set_sort_helper(result.lost, "lost"),
moved: path_hash_map_sort_helper(result.moved, "moved"),
+ erased: path_hash_set_sort_helper(result.erased, "erased"),
}
}
}
diff --git a/crates/vcs_data/src/data/local/file_status.rs b/crates/vcs_data/src/data/local/file_status.rs
index 7841237..599e4a3 100644
--- a/crates/vcs_data/src/data/local/file_status.rs
+++ b/crates/vcs_data/src/data/local/file_status.rs
@@ -33,6 +33,9 @@ pub struct AnalyzeResult<'a> {
/// Lost local files
pub lost: HashSet<LostRelativePathBuf>,
+ /// Erased local files
+ pub erased: HashSet<LostRelativePathBuf>,
+
/// Modified local files (excluding moved files)
/// For files that were both moved and modified, changes can only be detected after LocalSheet mapping is aligned with actual files
pub modified: HashSet<ModifiedRelativePathBuf>,
@@ -154,6 +157,23 @@ impl<'a> AnalyzeResult<'a> {
.cloned()
.collect();
+ // Files that exist locally but not in remote
+ let mut erased_files: HashSet<PathBuf> = HashSet::new();
+
+ if let Some(cached_data) = &analyze_ctx.cached_sheet_data {
+ if let Some(local_sheet) = &analyze_ctx.local_sheet {
+ let cached_sheet_mapping = cached_data.mapping();
+ let local_sheet_mapping = &local_sheet.data.mapping;
+
+ // Find paths that exist in local sheet but not in cached sheet
+ for local_path in local_sheet_mapping.keys() {
+ if !cached_sheet_mapping.contains_key(local_path) {
+ erased_files.insert(local_path.clone());
+ }
+ }
+ }
+ }
+
// Calculate hashes for new files
let new_files_for_hash: Vec<PathBuf> = new_files
.iter()
@@ -231,6 +251,7 @@ impl<'a> AnalyzeResult<'a> {
vfid.map(|vfid| (vfid, (from.clone(), to.clone())))
})
.collect();
+ result.erased = erased_files;
Ok(())
}
@@ -299,6 +320,7 @@ impl<'a> AnalyzeResult<'a> {
created: HashSet::new(),
lost: HashSet::new(),
modified: HashSet::new(),
+ erased: HashSet::new(),
}
}
}
diff --git a/crates/vcs_data/src/data/sheet.rs b/crates/vcs_data/src/data/sheet.rs
index 891888a..900331d 100644
--- a/crates/vcs_data/src/data/sheet.rs
+++ b/crates/vcs_data/src/data/sheet.rs
@@ -69,6 +69,9 @@ pub struct SheetData {
pub(crate) id_mapping: Option<HashMap<VirtualFileId, SheetPathBuf>>,
}
+#[derive(Default, Serialize, Deserialize, ConfigFile, Clone)]
+pub struct SheetInputs {}
+
#[derive(Debug, Default, Serialize, Deserialize, ConfigFile, Clone, Eq, PartialEq)]
pub struct SheetMappingMetadata {
pub id: VirtualFileId,