evolve: make sure we don't stop after evolution of obsparent (issue5881)
Before this patch, we were not handling the case when revset
given by user also contain wdir parent which is obsolete.
We were explicitly checking if wdir parent is obsolete, then update
to its successor and return; without checking if we still have
some revisions to be evolved.
This patch make sure that after it update to the successor of
obsolete parent it doesn't stop and continue to evolve other remaining
revisions.
Changes in tests/test-evolve-issue5881.t reflect the fixed behaviour.
Testing the config option for rejecting draft changeset without topic
The config option is "experimental.topic-mode.server"
$ . "$TESTDIR/testlib/topic_setup.sh"
Creating a server repo
$ hg init server
$ cd server
$ cat <<EOF >>.hg/hgrc
> [phases]
> publish=False
> [experimental]
> topic-mode.server = enforce
> EOF
$ hg topic server
marked working directory as topic: server
$ for ch in a b c; do echo foo > $ch; hg ci -Aqm "Added "$ch; done
$ hg ph -p 0
$ hg log -G -T "{rev}:{node|short}\n{desc} {topics}"
@ 2:a7b96f87a214
| Added c server
o 1:d6a8197e192a
| Added b server
o 0:49a3f206c9ae
Added a
$ cd ..
Creating a client repo
$ hg clone server client
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd client
$ hg up server
switching to topic server
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg log -G -T "{rev}:{node|short}\n{desc} {topics}"
@ 2:a7b96f87a214
| Added c server
o 1:d6a8197e192a
| Added b server
o 0:49a3f206c9ae
Added a
$ hg topic
* server (2 changesets)
Create a changeset without topic
$ hg topic --clear
$ echo foo > d
$ hg ci -Aqm "added d"
$ hg log -G -T "{rev}:{node|short}\n{desc} {topics}"
@ 3:4e8b0e0237c6
| added d
o 2:a7b96f87a214
| Added c server
o 1:d6a8197e192a
| Added b server
o 0:49a3f206c9ae
Added a
Push a draft changeset without topic
$ hg push ../server --new-branch
pushing to ../server
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
transaction abort!
rollback completed
abort: rejecting draft changesets: 4e8b0e0237
[255]
$ hg push ../server -f
pushing to ../server
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
transaction abort!
rollback completed
abort: rejecting draft changesets: 4e8b0e0237
[255]
Grow the stack with more changesets having topic
$ hg topic client
marked working directory as topic: client
$ for ch in e f g; do echo foo > $ch; hg ci -Aqm "Added "$ch; done;
$ hg log -G -T "{rev}:{node|short}\n{desc} {topics}"
@ 6:42c4ac86452a
| Added g client
o 5:3dc456efb491
| Added f client
o 4:18a516babc60
| Added e client
o 3:4e8b0e0237c6
| added d
o 2:a7b96f87a214
| Added c server
o 1:d6a8197e192a
| Added b server
o 0:49a3f206c9ae
Added a
Pushing multiple changeset with some having topics and some not
$ hg push ../server --new-branch
pushing to ../server
searching for changes
adding changesets
adding manifests
adding file changes
added 4 changesets with 4 changes to 4 files
transaction abort!
rollback completed
abort: rejecting draft changesets: 4e8b0e0237
[255]
Testing case when both experimental.topic-mode.server and
experimental.topic.publish-bare-branch are set
$ cd ../server
$ echo 'topic.publish-bare-branch=True' >> .hg/hgrc
$ cd ../client
$ hg push ../server --new-branch
pushing to ../server
searching for changes
adding changesets
adding manifests
adding file changes
added 4 changesets with 4 changes to 4 files
transaction abort!
rollback completed
abort: rejecting draft changesets: 4e8b0e0237
[255]
Turning the changeset public and testing push
$ hg phase -r 3 -p
$ hg log -G -T "{rev}:{node|short}\n{desc} {topics}"
@ 6:42c4ac86452a
| Added g client
o 5:3dc456efb491
| Added f client
o 4:18a516babc60
| Added e client
o 3:4e8b0e0237c6
| added d
o 2:a7b96f87a214
| Added c
o 1:d6a8197e192a
| Added b
o 0:49a3f206c9ae
Added a
$ hg push ../server
pushing to ../server
searching for changes
adding changesets
adding manifests
adding file changes
added 4 changesets with 4 changes to 4 files
active topic 'server' is now empty