|
1 Test for handling of content divergence with public cset using `hg evolve` |
|
2 ========================================================================== |
|
3 |
|
4 Setup |
|
5 ===== |
|
6 $ cat >> $HGRCPATH <<EOF |
|
7 > [alias] |
|
8 > glog = log -GT "{rev}:{node|short} {desc|firstline}\n {phase} {troubles}\n\n" |
|
9 > [phases] |
|
10 > publish = False |
|
11 > [extensions] |
|
12 > rebase = |
|
13 > EOF |
|
14 $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH |
|
15 |
|
16 Testing the case when both divergent cset are on the same parent and no-conflict in merging: |
|
17 ------------------------------------------------------------------------------------- |
|
18 |
|
19 Prepare the repository: |
|
20 |
|
21 $ hg init pubdiv |
|
22 $ cd pubdiv |
|
23 $ for ch in a b; do |
|
24 > echo $ch > $ch; |
|
25 > hg ci -Aqm "added "$ch; |
|
26 > done; |
|
27 $ hg glog |
|
28 @ 1:5f6d8a4bf34a added b |
|
29 | draft |
|
30 | |
|
31 o 0:9092f1db7931 added a |
|
32 draft |
|
33 |
|
34 |
|
35 Make an amend and change phase to public: |
|
36 |
|
37 $ sed -i "1 i I am first" b |
|
38 $ hg amend |
|
39 $ hg phase --public |
|
40 |
|
41 Amend again to create a cset divergent to public one: |
|
42 |
|
43 $ hg up 1 --hidden -q |
|
44 updated to hidden changeset 5f6d8a4bf34a |
|
45 (hidden revision '5f6d8a4bf34a' was rewritten as: 44f360db368f) |
|
46 working directory parent is obsolete! (5f6d8a4bf34a) |
|
47 |
|
48 $ echo "I am second" >> b |
|
49 $ hg ci --amend -m "updated b" |
|
50 1 new content-divergent changesets |
|
51 |
|
52 $ hg glog |
|
53 @ 3:dcdaf152280a updated b |
|
54 | draft content-divergent |
|
55 | |
|
56 | o 2:44f360db368f added b |
|
57 |/ public |
|
58 | |
|
59 o 0:9092f1db7931 added a |
|
60 public |
|
61 |
|
62 |
|
63 Lets resolve the public content-divergence: |
|
64 |
|
65 $ hg evolve --content-divergent |
|
66 merge:[3] updated b |
|
67 with: [2] added b |
|
68 base: [1] added b |
|
69 merging "other" content-divergent changeset '44f360db368f' |
|
70 merging b |
|
71 0 files updated, 1 files merged, 0 files removed, 0 files unresolved |
|
72 computing new diff |
|
73 committed as c1aa9cfb6cf8 |
|
74 working directory is now at c1aa9cfb6cf8 |
|
75 |
|
76 Following graph log shows that it correctly merged the two divergent csets: |
|
77 |
|
78 $ hg glog -p |
|
79 @ 5:c1aa9cfb6cf8 phase-divergent update to 44f360db368f: |
|
80 | draft |
|
81 | |
|
82 | diff -r 44f360db368f -r c1aa9cfb6cf8 b |
|
83 | --- a/b Thu Jan 01 00:00:00 1970 +0000 |
|
84 | +++ b/b Thu Jan 01 00:00:00 1970 +0000 |
|
85 | @@ -1,2 +1,3 @@ |
|
86 | I am first |
|
87 | b |
|
88 | +I am second |
|
89 | |
|
90 o 2:44f360db368f added b |
|
91 | public |
|
92 | |
|
93 | diff -r 9092f1db7931 -r 44f360db368f b |
|
94 | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
95 | +++ b/b Thu Jan 01 00:00:00 1970 +0000 |
|
96 | @@ -0,0 +1,2 @@ |
|
97 | +I am first |
|
98 | +b |
|
99 | |
|
100 o 0:9092f1db7931 added a |
|
101 public |
|
102 |
|
103 diff -r 000000000000 -r 9092f1db7931 a |
|
104 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 |
|
105 +++ b/a Thu Jan 01 00:00:00 1970 +0000 |
|
106 @@ -0,0 +1,1 @@ |
|
107 +a |
|
108 |
|
109 $ hg evolve -l |