[Commented On] D9649: copies-rust: yield both p1 and p2 copies in `ChangedFiles.actions()`
baymax (Baymax, Your Personal Patch-care Companion)
phabricator at mercurial-scm.org
Wed Dec 23 02:47:04 UTC 2020
baymax added a comment.
baymax updated this revision to Diff 24499.
✅ refresh by Heptapod after a successful CI run (🐙 💚)
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D9649?vs=24488&id=24499
BRANCH
default
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D9649/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D9649
AFFECTED FILES
rust/hg-core/src/copy_tracing.rs
CHANGE DETAILS
diff --git a/rust/hg-core/src/copy_tracing.rs b/rust/hg-core/src/copy_tracing.rs
--- a/rust/hg-core/src/copy_tracing.rs
+++ b/rust/hg-core/src/copy_tracing.rs
@@ -107,7 +107,8 @@
Removed(&'a HgPath),
/// The parent ? children edge introduce copy information between (dest,
/// source)
- Copied(&'a HgPath, &'a HgPath),
+ CopiedFromP1(&'a HgPath, &'a HgPath),
+ CopiedFromP2(&'a HgPath, &'a HgPath),
}
/// This express the possible "special" case we can get in a merge
@@ -246,10 +247,9 @@
}
/// Return an iterator over all the `Action` in this instance.
- fn iter_actions(&self, parent: Parent) -> ActionsIterator {
+ fn iter_actions(&self) -> ActionsIterator {
ActionsIterator {
changes: &self,
- parent: parent,
current: 0,
}
}
@@ -283,7 +283,6 @@
struct ActionsIterator<'a> {
changes: &'a ChangedFiles<'a>,
- parent: Parent,
current: u32,
}
@@ -291,10 +290,6 @@
type Item = Action<'a>;
fn next(&mut self) -> Option<Action<'a>> {
- let copy_flag = match self.parent {
- Parent::FirstParent => P1_COPY,
- Parent::SecondParent => P2_COPY,
- };
while self.current < self.changes.nb_items {
let (flags, file, source) = self.changes.entry(self.current);
self.current += 1;
@@ -302,8 +297,10 @@
return Some(Action::Removed(file));
}
let copy = flags & COPY_MASK;
- if copy == copy_flag {
- return Some(Action::Copied(file, source));
+ if copy == P1_COPY {
+ return Some(Action::CopiedFromP1(file, source));
+ } else if copy == P2_COPY {
+ return Some(Action::CopiedFromP2(file, source));
}
}
return None;
@@ -500,18 +497,34 @@
current_rev: Revision,
) -> InternalPathCopies {
let mut copies = base_copies.clone();
- for action in changes.iter_actions(parent) {
+ for action in changes.iter_actions() {
match action {
- Action::Copied(path_dest, path_source) => {
- add_one_copy(
- current_rev,
- &mut path_map,
- &mut copies,
- &base_copies,
- path_dest,
- path_source,
- );
- }
+ Action::CopiedFromP1(path_dest, path_source) => {
+ match parent {
+ _ => (), // not the parent we are looking for
+ Parent::FirstParent => add_one_copy(
+ current_rev,
+ path_map,
+ &mut copies,
+ &base_copies,
+ path_dest,
+ path_source,
+ ),
+ };
+ },
+ Action::CopiedFromP2(path_dest, path_source) => {
+ match parent {
+ _ => (), //not the parent we are looking for
+ Parent::SecondParent => add_one_copy(
+ current_rev,
+ path_map,
+ &mut copies,
+ &base_copies,
+ path_dest,
+ path_source,
+ ),
+ };
+ },
Action::Removed(deleted_path) => {
// We must drop copy information for removed file.
//
To: marmoute, #hg-reviewers
Cc: mercurial-patches
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurial-scm.org/pipermail/mercurial-patches/attachments/20201223/904120da/attachment-0002.html>
More information about the Mercurial-patches
mailing list