Mercurial > hg-stable
changeset 45979:46a16b2c082d
copies-rust: pre-indent some code to clarify the next changeset
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.
Differential Revision: https://phab.mercurial-scm.org/D9301
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 02 Nov 2020 19:25:26 +0100 |
parents | 0d99778af68a |
children | 3302584ac0c7 |
files | rust/hg-core/src/copy_tracing.rs |
diffstat | 1 files changed, 48 insertions(+), 43 deletions(-) [+] |
line wrap: on
line diff
--- a/rust/hg-core/src/copy_tracing.rs Tue Apr 21 11:28:48 2020 +0200 +++ b/rust/hg-core/src/copy_tracing.rs Mon Nov 02 19:25:26 2020 +0100 @@ -203,54 +203,59 @@ for (dest, src_major) in major { 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