tests/test-unstable-orphan.t
changeset 4468 a2273aa71a4b
parent 3540 0624732c92f7
child 4516 f54bb6eaf5e6
child 4577 bcd52ce0916d
equal deleted inserted replaced
4467:6fc5e162ea84 4468:a2273aa71a4b
       
     1 ==================================
       
     2 Test for "orphan" type instability
       
     3 ==================================
       
     4 
       
     5 This file gather test case around the "orphan" changeset instability. This
       
     6 instability happens when a changesets has obsolete ancestors.
       
     7 
       
     8   $ cat >> $HGRCPATH <<EOF
       
     9   > [defaults]
       
    10   > amend=-d "0 0"
       
    11   > fold=-d "0 0"
       
    12   > [web]
       
    13   > push_ssl = false
       
    14   > allow_push = *
       
    15   > [phases]
       
    16   > publish = False
       
    17   > [diff]
       
    18   > git = 1
       
    19   > unified = 0
       
    20   > [ui]
       
    21   > logtemplate = {rev}:{node|short}@{branch}({phase}) {desc|firstline}\n
       
    22   > [extensions]
       
    23   > EOF
       
    24   $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH
       
    25   $ mkcommit() {
       
    26   >    echo "$1" > "$1"
       
    27   >    hg add "$1"
       
    28   >    hg ci -m "add $1"
       
    29   > }
       
    30 
       
    31   $ mkstack() {
       
    32   >    # Creates a stack of commit based on $1 with messages from $2, $3 ..
       
    33   >    hg update "$1" -C
       
    34   >    shift
       
    35   >    mkcommits $*
       
    36   > }
       
    37 
       
    38   $ mkcommits() {
       
    39   >   for i in $@; do mkcommit $i ; done
       
    40   > }
       
    41 
       
    42 orphan parent is obsolete with a single successor
       
    43 =================================================
       
    44 
       
    45 Test orphan resolution for a changeset orphan because its parent is obsolete
       
    46 with one successor.
       
    47 
       
    48   $ hg init test1
       
    49   $ cd test1
       
    50   $ mkcommits _a _b _c
       
    51   $ hg up "desc(_b)"
       
    52   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
       
    53   $ hg amend -m "bprime"
       
    54   1 new orphan changesets
       
    55   $ hg log -G
       
    56   @  3:36050226a9b9@default(draft) bprime
       
    57   |
       
    58   | *  2:102002290587@default(draft) add _c
       
    59   | |
       
    60   | x  1:37445b16603b@default(draft) add _b
       
    61   |/
       
    62   o  0:135f39f4bd78@default(draft) add _a
       
    63   
       
    64 
       
    65   $ hg evo --all --any --orphan
       
    66   move:[2] add _c
       
    67   atop:[3] bprime
       
    68   working directory is now at fdcf3523a74d
       
    69   $ hg log -G
       
    70   @  4:fdcf3523a74d@default(draft) add _c
       
    71   |
       
    72   o  3:36050226a9b9@default(draft) bprime
       
    73   |
       
    74   o  0:135f39f4bd78@default(draft) add _a
       
    75   
       
    76 
       
    77   $ cd ..
       
    78 
       
    79 
       
    80 orphan parent is obsolete with a multiple successors (reversed order)
       
    81 =====================================================================
       
    82 
       
    83 Test orphan resolution for a changeset orphan because its parent is obsolete
       
    84 with multiple successors on the same branch but in reverse order (cross-split).
       
    85 
       
    86   $ hg init test5
       
    87   $ cd test5
       
    88   $ mkcommits _a _b _c
       
    89   $ hg up "desc(_a)"
       
    90   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
    91   $ mkcommits bprimesplit1 bprimesplit2
       
    92   created new head
       
    93   $ hg prune "desc(_b)" -s "desc(bprimesplit1) + desc(bprimesplit2)" --split
       
    94   1 changesets pruned
       
    95   1 new orphan changesets
       
    96   $ hg up "desc(_a)"
       
    97   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
       
    98   $ mkcommits bsecondsplit1 bsecondsplit2
       
    99   created new head
       
   100   $ hg prune "desc(bprimesplit1)" -s "desc(bsecondsplit2)"
       
   101   1 changesets pruned
       
   102   1 new orphan changesets
       
   103   $ hg prune "desc(bprimesplit2)" -s "desc(bsecondsplit1)"
       
   104   1 changesets pruned
       
   105   $ hg log -G
       
   106   @  6:59b942dbda14@default(draft) add bsecondsplit2
       
   107   |
       
   108   o  5:8ffdae67d696@default(draft) add bsecondsplit1
       
   109   |
       
   110   | *  2:102002290587@default(draft) add _c
       
   111   | |
       
   112   | x  1:37445b16603b@default(draft) add _b
       
   113   |/
       
   114   o  0:135f39f4bd78@default(draft) add _a
       
   115   
       
   116 
       
   117   $ hg evo --all --any --orphan
       
   118   move:[2] add _c
       
   119   atop:[6] add bsecondsplit2
       
   120   working directory is now at 98e3f21461ff
       
   121   $ hg log -G
       
   122   @  7:98e3f21461ff@default(draft) add _c
       
   123   |
       
   124   o  6:59b942dbda14@default(draft) add bsecondsplit2
       
   125   |
       
   126   o  5:8ffdae67d696@default(draft) add bsecondsplit1
       
   127   |
       
   128   o  0:135f39f4bd78@default(draft) add _a
       
   129   
       
   130 
       
   131   $ cd ..