mirror of
https://github.com/martinvonz/jj.git
synced 2025-05-30 11:31:13 +00:00
conflicts: leverage Merge::iter_mut()
and Merge::into_iter()
This commit is contained in:
parent
2063f2f44e
commit
ab4d44df85
@ -312,32 +312,23 @@ pub fn update_from_content(
|
|||||||
return Ok(file_ids.clone());
|
return Ok(file_ids.clone());
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut removed_content = vec![vec![]; file_ids.removes().len()];
|
|
||||||
let mut added_content = vec![vec![]; file_ids.adds().len()];
|
|
||||||
let Some(hunks) = parse_conflict(content, file_ids.num_sides()) else {
|
let Some(hunks) = parse_conflict(content, file_ids.num_sides()) else {
|
||||||
// Either there are no self markers of they don't have the expected arity
|
// Either there are no self markers of they don't have the expected arity
|
||||||
let file_id = store.write_file(path, &mut &content[..])?;
|
let file_id = store.write_file(path, &mut &content[..])?;
|
||||||
return Ok(Merge::normal(file_id));
|
return Ok(Merge::normal(file_id));
|
||||||
};
|
};
|
||||||
|
let mut contents = file_ids.map(|_| vec![]);
|
||||||
for hunk in hunks {
|
for hunk in hunks {
|
||||||
if let Some(slice) = hunk.as_resolved() {
|
if let Some(slice) = hunk.as_resolved() {
|
||||||
for buf in &mut removed_content {
|
for content in contents.iter_mut() {
|
||||||
buf.extend_from_slice(&slice.0);
|
content.extend_from_slice(&slice.0);
|
||||||
}
|
|
||||||
for buf in &mut added_content {
|
|
||||||
buf.extend_from_slice(&slice.0);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let (removes, adds) = hunk.take();
|
for (content, slice) in zip(contents.iter_mut(), hunk.into_iter()) {
|
||||||
for (i, buf) in removes.into_iter().enumerate() {
|
content.extend(slice.0);
|
||||||
removed_content[i].extend(buf.0);
|
|
||||||
}
|
|
||||||
for (i, buf) in adds.into_iter().enumerate() {
|
|
||||||
added_content[i].extend(buf.0);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let contents = Merge::new(removed_content, added_content);
|
|
||||||
|
|
||||||
// If the user edited the empty placeholder for an absent side, we consider the
|
// If the user edited the empty placeholder for an absent side, we consider the
|
||||||
// conflict resolved.
|
// conflict resolved.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user