1evolve --rev reordering 2----------------------- 3 4 $ cat >> $HGRCPATH <<EOF 5 > [ui] 6 > logtemplate = {rev}:{node|short}@{branch}({phase}) {desc|firstline}\n 7 > [experimental] 8 > evolution.allowdivergence = True 9 > [extensions] 10 > EOF 11 $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH 12 $ mkcommit() { 13 > echo "$1" > "$1" 14 > hg add "$1" 15 > hg ci -m "add $1" 16 > } 17 18 $ mkstack() { 19 > # Creates a stack of commit based on $1 with messages from $2, $3 .. 20 > hg update "$1" -C 21 > shift 22 > mkcommits $* 23 > } 24 25 $ mkcommits() { 26 > for i in $@; do mkcommit $i ; done 27 > } 28 29Initial setup 30 $ hg init testrevorder 31 $ cd testrevorder 32 $ mkcommits p _a _b _c 33 $ hg phase --public 0 34 $ hg up 'desc(_a)' 35 0 files updated, 0 files merged, 2 files removed, 0 files unresolved 36 $ echo "aaa" > _a 37 $ hg amend 38 2 new orphan changesets 39 $ hg log -G 40 @ 4:12d519679175@default(draft) add _a 41 | 42 | * 3:4d156641b718@default(draft) add _c 43 | | 44 | * 2:4d7242ebb004@default(draft) add _b 45 | | 46 | x 1:2d73fcd7f07d@default(draft) add _a 47 |/ 48 o 0:f92638be10c7@default(public) add p 49 50 51evolve --rev reorders the rev to solve instability, trivial case 2 revs wrong order 52 $ hg evolve --rev 'desc(_c) + desc(_b)' 53 move:[2] add _b 54 atop:[4] add _a 55 move:[3] add _c 56 57evolve --rev reorders the rev to solve instability. Harder case, obsolescence 58accross three stacks in growing rev numbers. 59 $ hg up "desc(_c)" 60 2 files updated, 0 files merged, 0 files removed, 0 files unresolved 61 $ mkcommit _d 62 $ hg up "desc(_a)" 63 0 files updated, 0 files merged, 3 files removed, 0 files unresolved 64 $ hg amend -m "aprime" 65 3 new orphan changesets 66 $ hg evolve --rev "desc(_b)" 67 move:[5] add _b 68 atop:[8] aprime 69 $ hg up "desc(_b) - obsolete()" 70 1 files updated, 0 files merged, 0 files removed, 0 files unresolved 71 $ hg amend -m "bprime" 72 $ hg up "desc(aprime)" 73 0 files updated, 0 files merged, 1 files removed, 0 files unresolved 74 $ hg amend -m "asecond" 75 1 new orphan changesets 76 $ hg log -G 77 @ 11:9a584314f3f3@default(draft) asecond 78 | 79 | * 10:a59c79776f7c@default(draft) bprime 80 | | 81 | x 8:81a687b96d4d@default(draft) aprime 82 |/ 83 | * 7:464731bc0ed0@default(draft) add _d 84 | | 85 | * 6:52b8f9b04f83@default(draft) add _c 86 | | 87 | x 5:59476c3836ef@default(draft) add _b 88 | | 89 | x 4:12d519679175@default(draft) add _a 90 |/ 91 o 0:f92638be10c7@default(public) add p 92 93 $ hg evolve --rev "orphan()" --update 94 move:[10] bprime 95 atop:[11] asecond 96 move:[6] add _c 97 move:[7] add _d 98 working directory is now at 739f18ac1d03 99 $ hg log -G 100 @ 14:739f18ac1d03@default(draft) add _d 101 | 102 o 13:e5960578d158@default(draft) add _c 103 | 104 o 12:4ad33fa88946@default(draft) bprime 105 | 106 o 11:9a584314f3f3@default(draft) asecond 107 | 108 o 0:f92638be10c7@default(public) add p 109 110 111Evolve --rev more complex case: two sets of stacks one with prune an no successor, the other one 112partially solvable 113 114First set of stack: 115 $ mkstack "desc(_d)" c1_ c2_ c3_ c4_ >/dev/null 116 $ mkstack "desc(_d)" c1prime c2prime >/dev/null 117 $ mkstack "desc(_d)" c1second >/dev/null 118 $ hg prune "desc(c1_)" -s "desc(c1prime)" 119 1 changesets pruned 120 3 new orphan changesets 121 $ hg prune "desc(c2_)" -s "desc(c2prime)" 122 1 changesets pruned 123 $ hg prune "desc(c1prime)" -s "desc(c1second)" 124 1 changesets pruned 125 1 new orphan changesets 126 $ hg log -G -r "desc(_d)::" 127 @ 21:dcf786e878fd@default(draft) add c1second 128 | 129 | * 20:507d52d715f6@default(draft) add c2prime 130 | | 131 | x 19:c995cb124ddc@default(draft) add c1prime 132 |/ 133 | * 18:d096a2437fd0@default(draft) add c4_ 134 | | 135 | * 17:cde95c6cba7a@default(draft) add c3_ 136 | | 137 | x 16:e0d9f7a099fe@default(draft) add c2_ 138 | | 139 | x 15:43b7c338b1f8@default(draft) add c1_ 140 |/ 141 o 14:739f18ac1d03@default(draft) add _d 142 | 143 ~ 144 145Second set of stack with no successor for b2_: 146 $ mkstack "desc(_d)" b1_ b2_ b3_ b4_ >/dev/null 147 $ mkstack "desc(_d)" b1prime b3prime >/dev/null 148 $ hg prune "desc(b1_)" -s "desc(b1prime)" 149 1 changesets pruned 150 3 new orphan changesets 151 $ hg prune "desc(b3_)" -s "desc(b3prime)" 152 1 changesets pruned 153 $ hg prune "desc(b2_)" 154 1 changesets pruned 155 156 $ hg log -G -r "desc(_d)::" 157 @ 27:b253ff5b65d1@default(draft) add b3prime 158 | 159 o 26:4acf61f11dfb@default(draft) add b1prime 160 | 161 | * 25:594e1fbbd61f@default(draft) add b4_ 162 | | 163 | x 24:be27500cfc76@default(draft) add b3_ 164 | | 165 | x 23:b54f77dc5831@default(draft) add b2_ 166 | | 167 | x 22:0e1eba27e9aa@default(draft) add b1_ 168 |/ 169 | o 21:dcf786e878fd@default(draft) add c1second 170 |/ 171 | * 20:507d52d715f6@default(draft) add c2prime 172 | | 173 | x 19:c995cb124ddc@default(draft) add c1prime 174 |/ 175 | * 18:d096a2437fd0@default(draft) add c4_ 176 | | 177 | * 17:cde95c6cba7a@default(draft) add c3_ 178 | | 179 | x 16:e0d9f7a099fe@default(draft) add c2_ 180 | | 181 | x 15:43b7c338b1f8@default(draft) add c1_ 182 |/ 183 o 14:739f18ac1d03@default(draft) add _d 184 | 185 ~ 186 187Solve the full second stack and only part of the first one 188 $ echo "(desc(_d)::) - desc(c3_)" 189 (desc(_d)::) - desc(c3_) 190 $ hg evolve --rev "(desc(_d)::) - desc(c3_)" 191 skipping d096a2437fd0, consider including orphan ancestors 192 move:[20] add c2prime 193 atop:[21] add c1second 194 move:[25] add b4_ 195 atop:[27] add b3prime 196 197Cleanup 198 $ hg evolve --rev "(desc(_d)::)" --update 199 move:[17] add c3_ 200 atop:[28] add c2prime 201 move:[18] add c4_ 202 working directory is now at 35e7b797ace5 203 $ hg log -G -r "desc(_d)::" 204 @ 31:35e7b797ace5@default(draft) add c4_ 205 | 206 o 30:0b9488394e89@default(draft) add c3_ 207 | 208 | o 29:ea93190a9cd1@default(draft) add b4_ 209 | | 210 o | 28:881b9c092e53@default(draft) add c2prime 211 | | 212 | o 27:b253ff5b65d1@default(draft) add b3prime 213 | | 214 | o 26:4acf61f11dfb@default(draft) add b1prime 215 | | 216 o | 21:dcf786e878fd@default(draft) add c1second 217 |/ 218 o 14:739f18ac1d03@default(draft) add _d 219 | 220 ~ 221 222Test multiple revision with some un-evolvable because parent is split 223--------------------------------------------------------------------- 224 225 $ hg up 'desc(c2prime)' 226 0 files updated, 0 files merged, 2 files removed, 0 files unresolved 227 $ mkcommit c3part1 228 created new head 229 $ hg prev 230 0 files updated, 0 files merged, 1 files removed, 0 files unresolved 231 [28] add c2prime 232 $ mkcommit c3part2 233 created new head 234 $ hg prune -s 'desc(c3part1)' 'desc(c3_)' 235 1 changesets pruned 236 1 new orphan changesets 237 $ hg prune -s 'desc(c3part2)' 'desc(c3_)' 238 1 changesets pruned 239 2 new content-divergent changesets 240 $ hg up 'desc(b3prime)' 241 2 files updated, 0 files merged, 3 files removed, 0 files unresolved 242 $ hg amend -m 'b3second' 243 1 new orphan changesets 244 $ hg evolve --rev "orphan()" 245 move:[29] add b4_ 246 atop:[34] b3second 247 skipping 0b9488394e89: divergent rewriting. can't choose destination 248