comparison tests/test-rebase-pull.t @ 28117:41a0fb2b4bbc

rebase: 'hg pull --rebase' now update only if there was nothing to rebase I recently discovered that 'hg pull --rebase' was also running an update. And it was running it in all cases as long as the update would move the working copy somewhere else... This felt wrong and it actually is. This 'update' call is introduced in 92455c1d6f83. In that commit the intent is very clear. The update should happen only when there was nothing to rebase. The implementation did not check if a rebase was performed because, at that time, rebase would always leave you on the top most changeset. Being on that top most changeset result in a no-op update and the step was skipped. However 9c78ed396075f changed rebase behavior to preserve the working copy parent, so if we are not on a head at pull time, the code performs both a rebase and an update. This changeset introduce a test for this case and restore the intended behavior. There are other issues with this custom update code but they will be addressed in later changeset (eg: own destination logic, lack of heads warning). I'm not super happy with the explicitly comparison 'rebase(...) == 1' but a later series will have a cleaner way to handle it anyway (while making 'rebase' pick its default destination like 'merge').
author Pierre-Yves David <pierre-yves.david@fb.com>
date Sat, 13 Feb 2016 16:59:32 +0000
parents c93f91c1db1c
children 0e3835c7e1cf
comparison
equal deleted inserted replaced
28116:ba8257cb53e8 28117:41a0fb2b4bbc
207 | 207 |
208 o 1: 'C2' 208 o 1: 'C2'
209 | 209 |
210 o 0: 'C1' 210 o 0: 'C1'
211 211
212
213 pull --rebase only update if there is nothing to rebase
214
215 $ cd ../a
216 $ echo R5 > R5
217 $ hg ci -Am R5
218 adding R5
219 $ hg tglog
220 @ 6: 'R5'
221 |
222 o 5: 'R4'
223 |
224 o 4: 'R3'
225 |
226 o 3: 'R2'
227 |
228 o 2: 'R1'
229 |
230 o 1: 'C2'
231 |
232 o 0: 'C1'
233
234 $ cd ../c
235 $ echo L2 > L2
236 $ hg ci -Am L2
237 adding L2
238 $ hg up 'desc(L1)'
239 0 files updated, 0 files merged, 1 files removed, 0 files unresolved
240 $ hg pull --rebase
241 pulling from $TESTTMP/a (glob)
242 searching for changes
243 adding changesets
244 adding manifests
245 adding file changes
246 added 1 changesets with 1 changes to 1 files (+1 heads)
247 rebasing 6:0d0727eb7ce0 "L1"
248 rebasing 7:c1f58876e3bf "L2"
249 saved backup bundle to $TESTTMP/c/.hg/strip-backup/0d0727eb7ce0-ef61ccb2-backup.hg (glob)
250 $ hg tglog
251 o 8: 'L2'
252 |
253 @ 7: 'L1'
254 |
255 o 6: 'R5'
256 |
257 o 5: 'R4'
258 |
259 o 4: 'R3'
260 |
261 o 3: 'R2'
262 |
263 o 2: 'R1'
264 |
265 o 1: 'C2'
266 |
267 o 0: 'C1'
268