view tests/test-next-abort.t @ 6224:17ffdea0edbb stable

evolve: look for split successors of the correct ancestor (issue6648) Consider two changesets, 1 and 2. 1 is split into two new changesets and 2 is pruned. If we stand on 2 and call hg evolve, _singlesuccessor() will traverse ancestors of wdp in search of a changeset with successors to update to (it will be 1, which was split). In case of a split, select_split_successor() gets control. The issue is this function didn't traverse ancestors, and instead tried to look up successors of the original changeset (i.e. 2 in our case, which was pruned). We can make select_split_successor() aware of _singlesuccessor() logic by using the changeset that actually has successors without traversing ancestors again. It's done by storing that changeset in MultipleSuccessorsError exception.
author Anton Shestakov <av6@dwimlabs.net>
date Thu, 21 Apr 2022 22:19:27 +0400
parents ed68f64f5d0f
children e6ae5af97683 889d21445ee9
line wrap: on
line source

Testing hg next with --abort flag and hg abort command handling an interrupted hg next

  $ . "$TESTDIR/testlib/common.sh"

  $ cat >> "$HGRCPATH" << EOF
  > [extensions]
  > evolve =
  > EOF

  $ hg init next-abort
  $ cd next-abort

  $ echo apple > a
  $ hg ci -qAm apple
  $ echo banana > b
  $ hg ci -qAm banana
  $ hg up 0
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
  $ echo blueberry > b
  $ hg ci -qAm 'apple and blueberry' --amend
  1 new orphan changesets

  $ hg next
  move:[1] banana
  atop:[2] apple and blueberry
  merging b
  warning: conflicts while merging b! (edit, then use 'hg resolve --mark')
  unresolved merge conflicts
  (see 'hg help evolve.interrupted')
  [240]

#testcases abortcommand abortflag
#if abortflag
  $ hg next --abort
  next aborted
  working directory is now at 1c7f51cf0ef0
  $ hg next --abort
  abort: no interrupted next to abort
  [255]
  $ hg evolve --abort
  abort: no interrupted evolve to abort
  [255]

  $ hg next --abort --move-bookmark
  abort: cannot specify both --abort and --move-bookmark
  [10]
  $ hg next --abort --merge
  abort: cannot specify both --abort and --merge
  [10]
#else
  $ hg abort --dry-run
  evolve in progress, will be aborted
  $ hg abort
  evolve aborted
  working directory is now at 1c7f51cf0ef0
  $ hg abort
  abort: no operation in progress
  [20]
#endif

  $ cd ..