copies: inline adjust_for_copy_tracking()

We now have only one caller, and it's in a different module, so it
makes more sense to move it there.
This commit is contained in:
Martin von Zweigbergk 2024-08-17 14:06:44 -07:00 committed by Martin von Zweigbergk
parent e670837ff6
commit ad86dd1c1b
2 changed files with 16 additions and 24 deletions

View File

@ -97,7 +97,21 @@ impl Stream for CopiesTreeDiffStream<'_> {
fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
self.inner.as_mut().poll_next(cx).map(|option| {
option.map(|diff_entry| {
diff_entry.adjust_for_copy_tracking(&self.source_tree, self.copy_records)
let Some(CopyRecord { source, .. }) =
self.copy_records.for_target(&diff_entry.target)
else {
return diff_entry;
};
TreeDiffEntry {
source: source.clone(),
target: diff_entry.target,
value: diff_entry.value.and_then(|(_, target_value)| {
self.source_tree
.path_value(source)
.map(|source_value| (source_value, target_value))
}),
}
})
})
}

View File

@ -30,7 +30,7 @@ use futures::{Stream, TryStreamExt};
use itertools::{EitherOrBoth, Itertools};
use crate::backend;
use crate::backend::{BackendResult, CopyRecord, MergedTreeId, TreeId, TreeValue};
use crate::backend::{BackendResult, MergedTreeId, TreeId, TreeValue};
use crate::copies::{CopiesTreeDiffStream, CopyRecords};
use crate::matchers::{EverythingMatcher, Matcher};
use crate::merge::{Merge, MergeBuilder, MergedTreeVal, MergedTreeValue};
@ -319,28 +319,6 @@ pub struct TreeDiffEntry {
pub value: BackendResult<(MergedTreeValue, MergedTreeValue)>,
}
impl TreeDiffEntry {
pub(crate) fn adjust_for_copy_tracking(
self,
source_tree: &MergedTree,
copy_records: &CopyRecords,
) -> TreeDiffEntry {
let Some(CopyRecord { source, .. }) = copy_records.for_target(&self.target) else {
return self;
};
Self {
source: source.clone(),
target: self.target,
value: self.value.and_then(|(_, target_value)| {
source_tree
.path_value(source)
.map(|source_value| (source_value, target_value))
}),
}
}
}
/// Type alias for the result from `MergedTree::diff_stream()`. We use a
/// `Stream` instead of an `Iterator` so high-latency backends (e.g. cloud-based
/// ones) can fetch trees asynchronously.