Show More
@@ -0,0 +1,273 b'' | |||||
|
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 | > [experimental] | |||
|
9 | > histeditng=True | |||
|
10 | > EOF | |||
|
11 | ||||
|
12 | Create repo a: | |||
|
13 | ||||
|
14 | $ hg init a | |||
|
15 | $ cd a | |||
|
16 | $ hg unbundle "$TESTDIR/bundles/rebase.hg" | |||
|
17 | adding changesets | |||
|
18 | adding manifests | |||
|
19 | adding file changes | |||
|
20 | added 8 changesets with 7 changes to 7 files (+2 heads) | |||
|
21 | (run 'hg heads' to see heads, 'hg merge' to merge) | |||
|
22 | $ hg up tip | |||
|
23 | 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
24 | ||||
|
25 | $ hg tglog | |||
|
26 | @ 7:02de42196ebee42ef284b6780a87cdc96e8eaab6:draft 'H' | |||
|
27 | | | |||
|
28 | | o 6:eea13746799a9e0bfd88f29d3c2e9dc9389f524f:draft 'G' | |||
|
29 | |/| | |||
|
30 | o | 5:24b6387c8c8cae37178880f3fa95ded3cb1cf785:draft 'F' | |||
|
31 | | | | |||
|
32 | | o 4:9520eea781bcca16c1e15acc0ba14335a0e8e5ba:draft 'E' | |||
|
33 | |/ | |||
|
34 | | o 3:32af7686d403cf45b5d95f2d70cebea587ac806a:draft 'D' | |||
|
35 | | | | |||
|
36 | | o 2:5fddd98957c8a54a4d436dfe1da9d87f21a1b97b:draft 'C' | |||
|
37 | | | | |||
|
38 | | o 1:42ccdea3bb16d28e1848c95fe2e44c000f3f21b1:draft 'B' | |||
|
39 | |/ | |||
|
40 | o 0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A' | |||
|
41 | ||||
|
42 | ||||
|
43 | ||||
|
44 | Go to D | |||
|
45 | $ hg update 3 | |||
|
46 | 3 files updated, 0 files merged, 2 files removed, 0 files unresolved | |||
|
47 | edit the history to rebase B onto H | |||
|
48 | ||||
|
49 | ||||
|
50 | Rebase B onto H | |||
|
51 | $ hg histedit 1 --commands - 2>&1 << EOF | fixbundle | |||
|
52 | > base 02de42196ebe | |||
|
53 | > pick 42ccdea3bb16 B | |||
|
54 | > pick 5fddd98957c8 C | |||
|
55 | > pick 32af7686d403 D | |||
|
56 | > EOF | |||
|
57 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
58 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
59 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
60 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
61 | ||||
|
62 | $ hg tglog | |||
|
63 | @ 7:0937e82309df47d14176ee15e45dbec5fbdef340:draft 'D' | |||
|
64 | | | |||
|
65 | o 6:f778d1cbddac4ab679d9983c9bb92e4c5e09e7fa:draft 'C' | |||
|
66 | | | |||
|
67 | o 5:3d41b7cc708545206213a842f96d812d2e73d818:draft 'B' | |||
|
68 | | | |||
|
69 | o 4:02de42196ebee42ef284b6780a87cdc96e8eaab6:draft 'H' | |||
|
70 | | | |||
|
71 | | o 3:eea13746799a9e0bfd88f29d3c2e9dc9389f524f:draft 'G' | |||
|
72 | |/| | |||
|
73 | o | 2:24b6387c8c8cae37178880f3fa95ded3cb1cf785:draft 'F' | |||
|
74 | | | | |||
|
75 | | o 1:9520eea781bcca16c1e15acc0ba14335a0e8e5ba:draft 'E' | |||
|
76 | |/ | |||
|
77 | o 0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A' | |||
|
78 | ||||
|
79 | Rebase back and drop something | |||
|
80 | $ hg histedit 5 --commands - 2>&1 << EOF | fixbundle | |||
|
81 | > base cd010b8cd998 | |||
|
82 | > pick 3d41b7cc7085 B | |||
|
83 | > drop f778d1cbddac C | |||
|
84 | > pick 0937e82309df D | |||
|
85 | > EOF | |||
|
86 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
87 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
88 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
89 | ||||
|
90 | $ hg tglog | |||
|
91 | @ 6:476cc3e4168da2d036b141f7f7dcff7f8e3fe846:draft 'D' | |||
|
92 | | | |||
|
93 | o 5:d273e35dcdf21a7eb305192ef2e362887cd0a6f8:draft 'B' | |||
|
94 | | | |||
|
95 | | o 4:02de42196ebee42ef284b6780a87cdc96e8eaab6:draft 'H' | |||
|
96 | | | | |||
|
97 | | | o 3:eea13746799a9e0bfd88f29d3c2e9dc9389f524f:draft 'G' | |||
|
98 | | |/| | |||
|
99 | | o | 2:24b6387c8c8cae37178880f3fa95ded3cb1cf785:draft 'F' | |||
|
100 | |/ / | |||
|
101 | | o 1:9520eea781bcca16c1e15acc0ba14335a0e8e5ba:draft 'E' | |||
|
102 | |/ | |||
|
103 | o 0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A' | |||
|
104 | ||||
|
105 | Split stack | |||
|
106 | $ hg histedit 5 --commands - 2>&1 << EOF | fixbundle | |||
|
107 | > base cd010b8cd998 | |||
|
108 | > pick d273e35dcdf2 B | |||
|
109 | > base cd010b8cd998 | |||
|
110 | > pick 476cc3e4168d D | |||
|
111 | > EOF | |||
|
112 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
113 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
114 | ||||
|
115 | $ hg tglog | |||
|
116 | @ 6:d7a6f907a822c4ce6f15662ae45a42aa46d3818a:draft 'D' | |||
|
117 | | | |||
|
118 | | o 5:d273e35dcdf21a7eb305192ef2e362887cd0a6f8:draft 'B' | |||
|
119 | |/ | |||
|
120 | | o 4:02de42196ebee42ef284b6780a87cdc96e8eaab6:draft 'H' | |||
|
121 | | | | |||
|
122 | | | o 3:eea13746799a9e0bfd88f29d3c2e9dc9389f524f:draft 'G' | |||
|
123 | | |/| | |||
|
124 | | o | 2:24b6387c8c8cae37178880f3fa95ded3cb1cf785:draft 'F' | |||
|
125 | |/ / | |||
|
126 | | o 1:9520eea781bcca16c1e15acc0ba14335a0e8e5ba:draft 'E' | |||
|
127 | |/ | |||
|
128 | o 0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A' | |||
|
129 | ||||
|
130 | Abort | |||
|
131 | $ echo x > B | |||
|
132 | $ hg add B | |||
|
133 | $ hg commit -m "X" | |||
|
134 | $ hg tglog | |||
|
135 | @ 7:591369deedfdcbf57471e894999a70d7f676186d:draft 'X' | |||
|
136 | | | |||
|
137 | o 6:d7a6f907a822c4ce6f15662ae45a42aa46d3818a:draft 'D' | |||
|
138 | | | |||
|
139 | | o 5:d273e35dcdf21a7eb305192ef2e362887cd0a6f8:draft 'B' | |||
|
140 | |/ | |||
|
141 | | o 4:02de42196ebee42ef284b6780a87cdc96e8eaab6:draft 'H' | |||
|
142 | | | | |||
|
143 | | | o 3:eea13746799a9e0bfd88f29d3c2e9dc9389f524f:draft 'G' | |||
|
144 | | |/| | |||
|
145 | | o | 2:24b6387c8c8cae37178880f3fa95ded3cb1cf785:draft 'F' | |||
|
146 | |/ / | |||
|
147 | | o 1:9520eea781bcca16c1e15acc0ba14335a0e8e5ba:draft 'E' | |||
|
148 | |/ | |||
|
149 | o 0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A' | |||
|
150 | ||||
|
151 | $ hg histedit 6 --commands - 2>&1 << EOF | fixbundle | |||
|
152 | > base d273e35dcdf2 B | |||
|
153 | > drop d7a6f907a822 D | |||
|
154 | > pick 591369deedfd X | |||
|
155 | > EOF | |||
|
156 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
157 | merging B | |||
|
158 | warning: conflicts while merging B! (edit, then use 'hg resolve --mark') | |||
|
159 | Fix up the change and run hg histedit --continue | |||
|
160 | $ hg histedit --abort | fixbundle | |||
|
161 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
162 | $ hg tglog | |||
|
163 | @ 7:591369deedfdcbf57471e894999a70d7f676186d:draft 'X' | |||
|
164 | | | |||
|
165 | o 6:d7a6f907a822c4ce6f15662ae45a42aa46d3818a:draft 'D' | |||
|
166 | | | |||
|
167 | | o 5:d273e35dcdf21a7eb305192ef2e362887cd0a6f8:draft 'B' | |||
|
168 | |/ | |||
|
169 | | o 4:02de42196ebee42ef284b6780a87cdc96e8eaab6:draft 'H' | |||
|
170 | | | | |||
|
171 | | | o 3:eea13746799a9e0bfd88f29d3c2e9dc9389f524f:draft 'G' | |||
|
172 | | |/| | |||
|
173 | | o | 2:24b6387c8c8cae37178880f3fa95ded3cb1cf785:draft 'F' | |||
|
174 | |/ / | |||
|
175 | | o 1:9520eea781bcca16c1e15acc0ba14335a0e8e5ba:draft 'E' | |||
|
176 | |/ | |||
|
177 | o 0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A' | |||
|
178 | ||||
|
179 | Continue | |||
|
180 | $ hg histedit 6 --commands - 2>&1 << EOF | fixbundle | |||
|
181 | > base d273e35dcdf2 B | |||
|
182 | > drop d7a6f907a822 D | |||
|
183 | > pick 591369deedfd X | |||
|
184 | > EOF | |||
|
185 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
186 | merging B | |||
|
187 | warning: conflicts while merging B! (edit, then use 'hg resolve --mark') | |||
|
188 | Fix up the change and run hg histedit --continue | |||
|
189 | $ echo b2 > B | |||
|
190 | $ hg resolve --mark B | |||
|
191 | (no more unresolved files) | |||
|
192 | $ hg histedit --continue | fixbundle | |||
|
193 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
194 | $ hg tglog | |||
|
195 | @ 6:03772da75548bb42a8f1eacd8c91d0717a147fcd:draft 'X' | |||
|
196 | | | |||
|
197 | o 5:d273e35dcdf21a7eb305192ef2e362887cd0a6f8:draft 'B' | |||
|
198 | | | |||
|
199 | | o 4:02de42196ebee42ef284b6780a87cdc96e8eaab6:draft 'H' | |||
|
200 | | | | |||
|
201 | | | o 3:eea13746799a9e0bfd88f29d3c2e9dc9389f524f:draft 'G' | |||
|
202 | | |/| | |||
|
203 | | o | 2:24b6387c8c8cae37178880f3fa95ded3cb1cf785:draft 'F' | |||
|
204 | |/ / | |||
|
205 | | o 1:9520eea781bcca16c1e15acc0ba14335a0e8e5ba:draft 'E' | |||
|
206 | |/ | |||
|
207 | o 0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A' | |||
|
208 | ||||
|
209 | ||||
|
210 | base on a previously picked changeset | |||
|
211 | $ echo i > i | |||
|
212 | $ hg add i | |||
|
213 | $ hg commit -m "I" | |||
|
214 | $ echo j > j | |||
|
215 | $ hg add j | |||
|
216 | $ hg commit -m "J" | |||
|
217 | $ hg tglog | |||
|
218 | @ 8:e8c55b19d366b335626e805484110d1d5f6f2ea3:draft 'J' | |||
|
219 | | | |||
|
220 | o 7:b2f90fd8aa85db5569e3cfc30cd1d7739546368e:draft 'I' | |||
|
221 | | | |||
|
222 | o 6:03772da75548bb42a8f1eacd8c91d0717a147fcd:draft 'X' | |||
|
223 | | | |||
|
224 | o 5:d273e35dcdf21a7eb305192ef2e362887cd0a6f8:draft 'B' | |||
|
225 | | | |||
|
226 | | o 4:02de42196ebee42ef284b6780a87cdc96e8eaab6:draft 'H' | |||
|
227 | | | | |||
|
228 | | | o 3:eea13746799a9e0bfd88f29d3c2e9dc9389f524f:draft 'G' | |||
|
229 | | |/| | |||
|
230 | | o | 2:24b6387c8c8cae37178880f3fa95ded3cb1cf785:draft 'F' | |||
|
231 | |/ / | |||
|
232 | | o 1:9520eea781bcca16c1e15acc0ba14335a0e8e5ba:draft 'E' | |||
|
233 | |/ | |||
|
234 | o 0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A' | |||
|
235 | ||||
|
236 | $ hg histedit 5 --commands - 2>&1 << EOF | fixbundle | |||
|
237 | > pick d273e35dcdf2 B | |||
|
238 | > pick 03772da75548 X | |||
|
239 | > base d273e35dcdf2 B | |||
|
240 | > pick e8c55b19d366 J | |||
|
241 | > base d273e35dcdf2 B | |||
|
242 | > pick b2f90fd8aa85 I | |||
|
243 | > EOF | |||
|
244 | abort: may not use "base" with changesets within the edited list | |||
|
245 | ||||
|
246 | $ hg --config experimental.histeditng=False histedit 5 --commands - 2>&1 << EOF | fixbundle | |||
|
247 | > base cd010b8cd998 A | |||
|
248 | > pick d273e35dcdf2 B | |||
|
249 | > pick 03772da75548 X | |||
|
250 | > pick b2f90fd8aa85 I | |||
|
251 | > pick e8c55b19d366 J | |||
|
252 | > EOF | |||
|
253 | abort: unknown action "base" | |||
|
254 | ||||
|
255 | $ hg tglog | |||
|
256 | @ 8:e8c55b19d366b335626e805484110d1d5f6f2ea3:draft 'J' | |||
|
257 | | | |||
|
258 | o 7:b2f90fd8aa85db5569e3cfc30cd1d7739546368e:draft 'I' | |||
|
259 | | | |||
|
260 | o 6:03772da75548bb42a8f1eacd8c91d0717a147fcd:draft 'X' | |||
|
261 | | | |||
|
262 | o 5:d273e35dcdf21a7eb305192ef2e362887cd0a6f8:draft 'B' | |||
|
263 | | | |||
|
264 | | o 4:02de42196ebee42ef284b6780a87cdc96e8eaab6:draft 'H' | |||
|
265 | | | | |||
|
266 | | | o 3:eea13746799a9e0bfd88f29d3c2e9dc9389f524f:draft 'G' | |||
|
267 | | |/| | |||
|
268 | | o | 2:24b6387c8c8cae37178880f3fa95ded3cb1cf785:draft 'F' | |||
|
269 | |/ / | |||
|
270 | | o 1:9520eea781bcca16c1e15acc0ba14335a0e8e5ba:draft 'E' | |||
|
271 | |/ | |||
|
272 | o 0:cd010b8cd998f3981a5a8115f94f8da4ab506089:draft 'A' | |||
|
273 |
@@ -646,6 +646,23 b' class fold(histeditaction):' | |||||
646 | replacements.append((ich, (n,))) |
|
646 | replacements.append((ich, (n,))) | |
647 | return repo[n], replacements |
|
647 | return repo[n], replacements | |
648 |
|
648 | |||
|
649 | class base(histeditaction): | |||
|
650 | def constraints(self): | |||
|
651 | return set(['forceother']) | |||
|
652 | ||||
|
653 | def run(self): | |||
|
654 | if self.repo['.'].node() != self.node: | |||
|
655 | mergemod.update(self.repo, self.node, False, True, False) | |||
|
656 | # branchmerge, force, partial) | |||
|
657 | return self.continueclean() | |||
|
658 | ||||
|
659 | def continuedirty(self): | |||
|
660 | abortdirty() | |||
|
661 | ||||
|
662 | def continueclean(self): | |||
|
663 | basectx = self.repo['.'] | |||
|
664 | return basectx, [] | |||
|
665 | ||||
649 | class _multifold(fold): |
|
666 | class _multifold(fold): | |
650 | """fold subclass used for when multiple folds happen in a row |
|
667 | """fold subclass used for when multiple folds happen in a row | |
651 |
|
668 | |||
@@ -1291,3 +1308,5 b' def extsetup(ui):' | |||||
1291 | cmdutil.unfinishedstates.append( |
|
1308 | cmdutil.unfinishedstates.append( | |
1292 | ['histedit-state', False, True, _('histedit in progress'), |
|
1309 | ['histedit-state', False, True, _('histedit in progress'), | |
1293 | _("use 'hg histedit --continue' or 'hg histedit --abort'")]) |
|
1310 | _("use 'hg histedit --continue' or 'hg histedit --abort'")]) | |
|
1311 | if ui.configbool("experimental", "histeditng"): | |||
|
1312 | actiontable.update({'b': base, 'base': base}) |
General Comments 0
You need to be logged in to leave comments.
Login now