D9301: copies-rust: pre-indent some code to clarify the next changeset
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Thu Nov 12 15:16:41 UTC 2020
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.
REVISION SUMMARY
The next changeset will massively rewrite the next function. However having a
clear diff on the core semantic of the function will help making the next
changesets clearer. So we do most of the churn beforehand.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D9301
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
@@ -206,54 +206,59 @@
for (dest, src_major) in major.into_iter() {
let overwrite;
if let Some(src_minor) = minor.get(&dest) {
- if src_major.path == src_minor.path {
- // we have the same value, but from other source;
- if src_major.rev == src_minor.rev {
- // If the two entry are identical, no need to do anything
+ {
+ if src_major.path == src_minor.path {
+ // we have the same value, no need to battle;
+ if src_major.rev == src_minor.rev {
+ // If the two entry are identical, no need to do
+ // anything
+ overwrite = false;
+ } else if is_ancestor(src_major.rev, src_minor.rev) {
+ overwrite = false;
+ } else {
+ overwrite = true;
+ }
+ } else if src_major.rev == src_minor.rev {
+ // We cannot get copy information for both p1 and p2 in the
+ // same rev. So this is the same value.
+ overwrite = false;
+ } else if src_major.path.is_none()
+ && changes.salvaged.contains(&dest)
+ {
+ // If the file is "deleted" in the major side but was
+ // salvaged by the merge, we keep the minor side alive
overwrite = false;
+ } else if src_minor.path.is_none()
+ && changes.salvaged.contains(&dest)
+ {
+ // If the file is "deleted" in the minor side but was
+ // salvaged by the merge, unconditionnaly preserve the
+ // major side.
+ overwrite = true;
+ } else if changes.merged.contains(&dest) {
+ // If the file was actively merged, copy information from
+ // each side might conflict. The major side will win such
+ // conflict.
+ overwrite = true;
} else if is_ancestor(src_major.rev, src_minor.rev) {
+ // If the minor side is strictly newer than the major side,
+ // it should be kept.
overwrite = false;
+ } else if src_major.path.is_some() {
+ // without any special case, the "major" value win other
+ // the "minor" one.
+ overwrite = true;
+ } else if is_ancestor(src_minor.rev, src_major.rev) {
+ // the "major" rev is a direct ancestors of "minor", any
+ // different value should overwrite
+ overwrite = true;
} else {
- overwrite = true;
+ // major version is None (so the file was deleted on that
+ // branch) and that branch is independant (neither minor
+ // nor major is an ancestors of the other one.) We preserve
+ // the new information about the new file.
+ overwrite = false;
}
- } else if src_major.rev == src_minor.rev {
- // We cannot get copy information for both p1 and p2 in the
- // same rev. So this is the same value.
- overwrite = false;
- } else if src_major.path.is_none()
- && changes.salvaged.contains(&dest)
- {
- // If the file is "deleted" in the major side but was salvaged
- // by the merge, we keep the minor side alive
- overwrite = false;
- } else if src_minor.path.is_none()
- && changes.salvaged.contains(&dest)
- {
- // If the file is "deleted" in the minor side but was salvaged
- // by the merge, unconditionnaly preserve the major side.
- overwrite = true;
- } else if changes.merged.contains(&dest) {
- // If the file was actively merged, copy information from each
- // side might conflict. The major side will win such conflict.
- overwrite = true;
- } else if is_ancestor(src_major.rev, src_minor.rev) {
- // If the minor side is strictly newer than the major side, it
- // should be kept.
- overwrite = false;
- } else if src_major.path.is_some() {
- // without any special case, the "major" value win other the
- // "minor" one.
- overwrite = true;
- } else if is_ancestor(src_minor.rev, src_major.rev) {
- // the "major" rev is a direct ancestors of "minor", any
- // different value should overwrite
- overwrite = true;
- } else {
- // major version is None (so the file was deleted on that
- // branch) annd that branch is independant (neither minor nor
- // major is an ancestors of the other one.) We preserve the new
- // information about the new file.
- overwrite = false;
}
} else {
// minor had no value
To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel
More information about the Mercurial-devel
mailing list