1 $ . "$TESTDIR/histedit-helpers.sh" 2 3 $ cat >> $HGRCPATH <<EOF 4 > [alias] 5 > tglog = log -G --template "{rev}:{node}:{phase} '{desc}'\n" 6 > [extensions] 7 > histedit= 8 > EOF 9 10Create repo a: 11 12 $ hg init a 13 $ cd a 14 $ hg unbundle "$TESTDIR/bundles/rebase.hg" 15 adding changesets 16 adding manifests 17 adding file changes 18 added 8 changesets with 7 changes to 7 files (+2 heads) 19 new changesets cd010b8cd998:02de42196ebe (8 drafts) 20 (run 'hg heads' to see heads, 'hg merge' to merge) 21 $ hg up tip 22 3 files updated, 0 files merged, 0 files removed, 0 files unresolved 23 24 $ hg tglog 25 @ 7:02de42196ebee42ef284b6780a87cdc96e8eaab6:draft 'H' 26 | 27 | o 6:eea13746799a9e0bfd88f29d3c2e9dc9389f524f:draft 'G' 28 |/| 29 o | 5:24b6387c8c8cae37178880f3fa95ded3cb1cf785:draft 'F' 30 | | 31 | o 4:9520eea781bcca16c1e15acc0ba14335a0e8e5ba:draft 'E' 32 |/ 33 | o 3:32af7686d403cf45b5d95f2d70cebea587ac806a:draft 'D' 34 | | 35 | o 2:5fddd98957c8a54a4d436dfe1da9d87f21a1b97b:draft 'C' 36 | | 37 | o 1:42ccdea3bb16d28e1848c95fe2e44c000f3f21b1:draft 'B' 38 |/ 39 o 0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A' 40 41Verify that implicit base command and help are listed 42 43 $ HGEDITOR=cat hg histedit |grep base 44 # b, base = checkout changeset and apply further changesets from there 45 46Go to D 47 $ hg update 3 48 3 files updated, 0 files merged, 2 files removed, 0 files unresolved 49edit the history to rebase B onto H 50 51 52Rebase B onto H 53 $ hg histedit 1 --commands - 2>&1 << EOF | fixbundle 54 > base 02de42196ebe 55 > pick 42ccdea3bb16 B 56 > pick 5fddd98957c8 C 57 > pick 32af7686d403 D 58 > EOF 59 60 $ hg tglog 61 @ 7:0937e82309df47d14176ee15e45dbec5fbdef340:draft 'D' 62 | 63 o 6:f778d1cbddac4ab679d9983c9bb92e4c5e09e7fa:draft 'C' 64 | 65 o 5:3d41b7cc708545206213a842f96d812d2e73d818:draft 'B' 66 | 67 o 4:02de42196ebee42ef284b6780a87cdc96e8eaab6:draft 'H' 68 | 69 | o 3:eea13746799a9e0bfd88f29d3c2e9dc9389f524f:draft 'G' 70 |/| 71 o | 2:24b6387c8c8cae37178880f3fa95ded3cb1cf785:draft 'F' 72 | | 73 | o 1:9520eea781bcca16c1e15acc0ba14335a0e8e5ba:draft 'E' 74 |/ 75 o 0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A' 76 77Rebase back and drop something 78 $ hg histedit 5 --commands - 2>&1 << EOF | fixbundle 79 > base cd010b8cd998 80 > pick 3d41b7cc7085 B 81 > drop f778d1cbddac C 82 > pick 0937e82309df D 83 > EOF 84 85 $ hg tglog 86 @ 6:476cc3e4168da2d036b141f7f7dcff7f8e3fe846:draft 'D' 87 | 88 o 5:d273e35dcdf21a7eb305192ef2e362887cd0a6f8:draft 'B' 89 | 90 | o 4:02de42196ebee42ef284b6780a87cdc96e8eaab6:draft 'H' 91 | | 92 | | o 3:eea13746799a9e0bfd88f29d3c2e9dc9389f524f:draft 'G' 93 | |/| 94 | o | 2:24b6387c8c8cae37178880f3fa95ded3cb1cf785:draft 'F' 95 |/ / 96 | o 1:9520eea781bcca16c1e15acc0ba14335a0e8e5ba:draft 'E' 97 |/ 98 o 0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A' 99 100Split stack 101 $ hg histedit 5 --commands - 2>&1 << EOF | fixbundle 102 > base cd010b8cd998 103 > pick d273e35dcdf2 B 104 > base cd010b8cd998 105 > pick 476cc3e4168d D 106 > EOF 107 108 $ hg tglog 109 @ 6:d7a6f907a822c4ce6f15662ae45a42aa46d3818a:draft 'D' 110 | 111 | o 5:d273e35dcdf21a7eb305192ef2e362887cd0a6f8:draft 'B' 112 |/ 113 | o 4:02de42196ebee42ef284b6780a87cdc96e8eaab6:draft 'H' 114 | | 115 | | o 3:eea13746799a9e0bfd88f29d3c2e9dc9389f524f:draft 'G' 116 | |/| 117 | o | 2:24b6387c8c8cae37178880f3fa95ded3cb1cf785:draft 'F' 118 |/ / 119 | o 1:9520eea781bcca16c1e15acc0ba14335a0e8e5ba:draft 'E' 120 |/ 121 o 0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A' 122 123Abort 124 $ echo x > B 125 $ hg add B 126 $ hg commit -m "X" 127 $ hg tglog 128 @ 7:591369deedfdcbf57471e894999a70d7f676186d:draft 'X' 129 | 130 o 6:d7a6f907a822c4ce6f15662ae45a42aa46d3818a:draft 'D' 131 | 132 | o 5:d273e35dcdf21a7eb305192ef2e362887cd0a6f8:draft 'B' 133 |/ 134 | o 4:02de42196ebee42ef284b6780a87cdc96e8eaab6:draft 'H' 135 | | 136 | | o 3:eea13746799a9e0bfd88f29d3c2e9dc9389f524f:draft 'G' 137 | |/| 138 | o | 2:24b6387c8c8cae37178880f3fa95ded3cb1cf785:draft 'F' 139 |/ / 140 | o 1:9520eea781bcca16c1e15acc0ba14335a0e8e5ba:draft 'E' 141 |/ 142 o 0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A' 143 144 $ hg histedit 6 --commands - 2>&1 << EOF | fixbundle 145 > base d273e35dcdf2 B 146 > drop d7a6f907a822 D 147 > pick 591369deedfd X 148 > EOF 149 merging B 150 warning: conflicts while merging B! (edit, then use 'hg resolve --mark') 151 Fix up the change (pick 591369deedfd) 152 (hg histedit --continue to resume) 153 $ hg histedit --abort | fixbundle 154 2 files updated, 0 files merged, 0 files removed, 0 files unresolved 155 $ hg tglog 156 @ 7:591369deedfdcbf57471e894999a70d7f676186d:draft 'X' 157 | 158 o 6:d7a6f907a822c4ce6f15662ae45a42aa46d3818a:draft 'D' 159 | 160 | o 5:d273e35dcdf21a7eb305192ef2e362887cd0a6f8:draft 'B' 161 |/ 162 | o 4:02de42196ebee42ef284b6780a87cdc96e8eaab6:draft 'H' 163 | | 164 | | o 3:eea13746799a9e0bfd88f29d3c2e9dc9389f524f:draft 'G' 165 | |/| 166 | o | 2:24b6387c8c8cae37178880f3fa95ded3cb1cf785:draft 'F' 167 |/ / 168 | o 1:9520eea781bcca16c1e15acc0ba14335a0e8e5ba:draft 'E' 169 |/ 170 o 0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A' 171 172Continue 173 $ hg histedit 6 --commands - 2>&1 << EOF | fixbundle 174 > base d273e35dcdf2 B 175 > drop d7a6f907a822 D 176 > pick 591369deedfd X 177 > EOF 178 merging B 179 warning: conflicts while merging B! (edit, then use 'hg resolve --mark') 180 Fix up the change (pick 591369deedfd) 181 (hg histedit --continue to resume) 182 $ echo b2 > B 183 $ hg resolve --mark B 184 (no more unresolved files) 185 continue: hg histedit --continue 186 $ hg histedit --continue | fixbundle 187 $ hg tglog 188 @ 6:03772da75548bb42a8f1eacd8c91d0717a147fcd:draft 'X' 189 | 190 o 5:d273e35dcdf21a7eb305192ef2e362887cd0a6f8:draft 'B' 191 | 192 | o 4:02de42196ebee42ef284b6780a87cdc96e8eaab6:draft 'H' 193 | | 194 | | o 3:eea13746799a9e0bfd88f29d3c2e9dc9389f524f:draft 'G' 195 | |/| 196 | o | 2:24b6387c8c8cae37178880f3fa95ded3cb1cf785:draft 'F' 197 |/ / 198 | o 1:9520eea781bcca16c1e15acc0ba14335a0e8e5ba:draft 'E' 199 |/ 200 o 0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A' 201 202 203base on a previously picked changeset 204 $ echo i > i 205 $ hg add i 206 $ hg commit -m "I" 207 $ echo j > j 208 $ hg add j 209 $ hg commit -m "J" 210 $ hg tglog 211 @ 8:e8c55b19d366b335626e805484110d1d5f6f2ea3:draft 'J' 212 | 213 o 7:b2f90fd8aa85db5569e3cfc30cd1d7739546368e:draft 'I' 214 | 215 o 6:03772da75548bb42a8f1eacd8c91d0717a147fcd:draft 'X' 216 | 217 o 5:d273e35dcdf21a7eb305192ef2e362887cd0a6f8:draft 'B' 218 | 219 | o 4:02de42196ebee42ef284b6780a87cdc96e8eaab6:draft 'H' 220 | | 221 | | o 3:eea13746799a9e0bfd88f29d3c2e9dc9389f524f:draft 'G' 222 | |/| 223 | o | 2:24b6387c8c8cae37178880f3fa95ded3cb1cf785:draft 'F' 224 |/ / 225 | o 1:9520eea781bcca16c1e15acc0ba14335a0e8e5ba:draft 'E' 226 |/ 227 o 0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A' 228 229 $ hg histedit 5 --commands - 2>&1 << EOF | fixbundle 230 > pick d273e35dcdf2 B 231 > pick 03772da75548 X 232 > base d273e35dcdf2 B 233 > pick e8c55b19d366 J 234 > base d273e35dcdf2 B 235 > pick b2f90fd8aa85 I 236 > EOF 237 hg: parse error: base "d273e35dcdf2" changeset was an edited list candidate 238 (base must only use unlisted changesets) 239 240 $ hg tglog 241 @ 8:e8c55b19d366b335626e805484110d1d5f6f2ea3:draft 'J' 242 | 243 o 7:b2f90fd8aa85db5569e3cfc30cd1d7739546368e:draft 'I' 244 | 245 o 6:03772da75548bb42a8f1eacd8c91d0717a147fcd:draft 'X' 246 | 247 o 5:d273e35dcdf21a7eb305192ef2e362887cd0a6f8:draft 'B' 248 | 249 | o 4:02de42196ebee42ef284b6780a87cdc96e8eaab6:draft 'H' 250 | | 251 | | o 3:eea13746799a9e0bfd88f29d3c2e9dc9389f524f:draft 'G' 252 | |/| 253 | o | 2:24b6387c8c8cae37178880f3fa95ded3cb1cf785:draft 'F' 254 |/ / 255 | o 1:9520eea781bcca16c1e15acc0ba14335a0e8e5ba:draft 'E' 256 |/ 257 o 0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A' 258 259