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