mirror of
https://github.com/martinvonz/jj.git
synced 2025-02-05 19:14:43 +00:00
merged_tree: remove redundant .clone() from TreeDiffStreamImpl::new()
This commit is contained in:
parent
c741e3db39
commit
4931b2ba04
2 changed files with 20 additions and 29 deletions
|
@ -295,8 +295,8 @@ impl MergedTree {
|
||||||
)))
|
)))
|
||||||
} else {
|
} else {
|
||||||
Box::pin(TreeDiffStreamImpl::new(
|
Box::pin(TreeDiffStreamImpl::new(
|
||||||
self.trees.clone(),
|
&self.trees,
|
||||||
other.trees.clone(),
|
&other.trees,
|
||||||
matcher,
|
matcher,
|
||||||
concurrency,
|
concurrency,
|
||||||
))
|
))
|
||||||
|
@ -922,8 +922,8 @@ impl<'matcher> TreeDiffStreamImpl<'matcher> {
|
||||||
/// Creates a iterator over the differences between two trees. Generally
|
/// Creates a iterator over the differences between two trees. Generally
|
||||||
/// prefer `MergedTree::diff_stream()` of calling this directly.
|
/// prefer `MergedTree::diff_stream()` of calling this directly.
|
||||||
pub fn new(
|
pub fn new(
|
||||||
trees1: Merge<Tree>,
|
trees1: &Merge<Tree>,
|
||||||
trees2: Merge<Tree>,
|
trees2: &Merge<Tree>,
|
||||||
matcher: &'matcher dyn Matcher,
|
matcher: &'matcher dyn Matcher,
|
||||||
max_concurrent_reads: usize,
|
max_concurrent_reads: usize,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
|
@ -936,7 +936,7 @@ impl<'matcher> TreeDiffStreamImpl<'matcher> {
|
||||||
max_concurrent_reads,
|
max_concurrent_reads,
|
||||||
max_queued_items: 10000,
|
max_queued_items: 10000,
|
||||||
};
|
};
|
||||||
stream.add_dir_diff_items(RepoPathBuf::root(), Ok((trees1, trees2)));
|
stream.add_dir_diff_items(RepoPath::root(), trees1, trees2);
|
||||||
stream
|
stream
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -968,20 +968,8 @@ impl<'matcher> TreeDiffStreamImpl<'matcher> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn add_dir_diff_items(
|
fn add_dir_diff_items(&mut self, dir: &RepoPath, trees1: &Merge<Tree>, trees2: &Merge<Tree>) {
|
||||||
&mut self,
|
for (basename, before, after) in merged_tree_entry_diff(trees1, trees2) {
|
||||||
dir: RepoPathBuf,
|
|
||||||
tree_diff: BackendResult<(Merge<Tree>, Merge<Tree>)>,
|
|
||||||
) {
|
|
||||||
let (trees1, trees2) = match tree_diff {
|
|
||||||
Ok(trees) => trees,
|
|
||||||
Err(err) => {
|
|
||||||
self.items.insert(DiffStreamKey::normal(dir), Err(err));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
for (basename, before, after) in merged_tree_entry_diff(&trees1, &trees2) {
|
|
||||||
let path = dir.join(basename);
|
let path = dir.join(basename);
|
||||||
let tree_before = before.is_tree();
|
let tree_before = before.is_tree();
|
||||||
let tree_after = after.is_tree();
|
let tree_after = after.is_tree();
|
||||||
|
@ -1049,7 +1037,14 @@ impl<'matcher> TreeDiffStreamImpl<'matcher> {
|
||||||
Ok((Merge::absent(), after)),
|
Ok((Merge::absent(), after)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
self.add_dir_diff_items(key.path, tree_diff);
|
match tree_diff {
|
||||||
|
Ok((trees1, trees2)) => {
|
||||||
|
self.add_dir_diff_items(&key.path, &trees1, &trees2);
|
||||||
|
}
|
||||||
|
Err(err) => {
|
||||||
|
self.items.insert(DiffStreamKey::normal(key.path), Err(err));
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
pending_index += 1;
|
pending_index += 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,15 +63,11 @@ fn diff_stream_equals_iter(tree1: &MergedTree, tree2: &MergedTree, matcher: &dyn
|
||||||
.map(|diff| (diff.path, diff.values.unwrap()))
|
.map(|diff| (diff.path, diff.values.unwrap()))
|
||||||
.collect();
|
.collect();
|
||||||
let max_concurrent_reads = 10;
|
let max_concurrent_reads = 10;
|
||||||
let stream_diff: Vec<_> = TreeDiffStreamImpl::new(
|
let stream_diff: Vec<_> =
|
||||||
trees1.clone(),
|
TreeDiffStreamImpl::new(trees1, trees2, matcher, max_concurrent_reads)
|
||||||
trees2.clone(),
|
.map(|diff| (diff.path, diff.values.unwrap()))
|
||||||
matcher,
|
.collect()
|
||||||
max_concurrent_reads,
|
.block_on();
|
||||||
)
|
|
||||||
.map(|diff| (diff.path, diff.values.unwrap()))
|
|
||||||
.collect()
|
|
||||||
.block_on();
|
|
||||||
assert_eq!(stream_diff, iter_diff);
|
assert_eq!(stream_diff, iter_diff);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue