tests/test-options.t
author Sushil khanchi <sushilkhanchi97@gmail.com>
Sun, 29 Dec 2019 23:59:41 +0530
changeset 5239 13152b2fe8f7
parent 4185 9bce7e6c18b3
child 4354 cb39b767ad3c
permissions -rw-r--r--
evolve: refactor content-divergence resolution logic > What is the case we are looking at? This is about refactoring the part of content-div resolution logic where it decides which cset should be relocated and where. > What is a "topologicial common ancestors" vs a "greatest common ancestors"? `tca` is an ancestor which we can decide/find by looking at the at graph visually for e.g ``` c3(*) c4(*) | | c2(x) c1(x) c5 | / \ | / c0 ``` (c5 is the successor of c2 and c1) now here, `tca` of c3 and c4 is: c0 `gca` of c3 and c4 is: c5 > What is the new top-level logic/behavior that makes it better? The old code had some unnecessary edge cases just because we were using `gca`, since it can point to a revision that is not a topological ancestor. For e.g see b779b40f996e Eventually, the code around this was getting messy unnecessarily. So I looked into it and found a simple and more robust approach. And in new code, it is simple and straightforward (and easy to understand), where we handle the following 4 cases when solving content-div: 1) when both are on the same parent => (no need to do anything special, and simply proceed) 2) both are on the different parent but a) `tca` is the parent of one of them or b) there is no non-obsolete revision between `tca` and one of the divergent cset. => (relocate one to the other side and proceed) 3) both are on different parents and `tca` is not the parent of any of them and there is at least one non-obsolete cset between tca and both the divergent cset i.e (tca::div1) and (tca::div2) both the ranges have at least one non-obs revision. => (this is the case which we don't handle yet, but the solution would be to prompt the user to choose an evolve destination.) 4) both are in the parent-child relation => (both are merged and new cset will be based on the successor of `tca`) Changes in test-evolve-issue5958.t demonstrate that new code also covered case4 because in a resolution of "two divergent csets with parent-child relation" there should be one cset as a result and no orphan revs (as you can see there was an orphan before this patch).
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1226
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
     1
  $ cat >> $HGRCPATH <<EOF
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
     2
  > [ui]
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
     3
  > logtemplate={rev}:{node|short}[{bookmarks}] ({obsolete}/{phase}) {desc|firstline}\n
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
     4
  > [extensions]
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
     5
  > EOF
1806
9f42f819267b evolve: move the extensions to 'hgext3rd'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents: 1226
diff changeset
     6
  $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
1226
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
     7
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
     8
  $ mkcommit() {
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
     9
  >    echo "$1" > "$1"
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
    10
  >    hg add "$1"
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
    11
  >    hg ci -m "add $1"
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
    12
  > }
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
    13
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
    14
  $ hg init repo
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
    15
  $ cd repo
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
    16
  $ mkcommit a
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
    17
  $ mkcommit b
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
    18
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
    19
test disabling commands
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
    20
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
    21
  $ cat >> .hg/hgrc <<EOF
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
    22
  > [experimental]
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
    23
  > evolution=createmarkers
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
    24
  >   allowunstable
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
    25
  >   exchange
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
    26
  > EOF
4185
9bce7e6c18b3 tests: remove a"| head -n 2" that just hides an error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 4181
diff changeset
    27
  $ hg prune
1226
901d2f4b21a9 config: allow disabling commands
Durham Goode <durham@fb.com>
parents:
diff changeset
    28
  hg: unknown command 'prune'
4181
ab3581bc0637 branching: preserve the expected output on default
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 4168
diff changeset
    29
  (use 'hg help' for a list of commands)
4185
9bce7e6c18b3 tests: remove a"| head -n 2" that just hides an error code
Martin von Zweigbergk <martinvonz@google.com>
parents: 4181
diff changeset
    30
  [255]