sharesafe: add functionality to automatically downgrade shares
Reasoning is same as previous patch which adds automatic upgrade support.
Downgrade is required as if automatic upgrade is enabled, all shares upgrade and
then source repository downgrades, shares won't work. We need to downgrade them.
Differential Revision: https://phab.mercurial-scm.org/D9680
$ cat <<EOF >> $HGRCPATH
> [extensions]
> hooklib =
>
> [phases]
> publish = False
> EOF
$ hg init a
$ hg --cwd a debugbuilddag '.:parent.:childa*parent/childa<parent@otherbranch./childa'
$ hg --cwd a log -G
o changeset: 4:a9fb040caedd
|\ branch: otherbranch
| | tag: tip
| | parent: 3:af739dfc49b4
| | parent: 1:66f7d451a68b
| | user: debugbuilddag
| | date: Thu Jan 01 00:00:04 1970 +0000
| | summary: r4
| |
| o changeset: 3:af739dfc49b4
| | branch: otherbranch
| | parent: 0:1ea73414a91b
| | user: debugbuilddag
| | date: Thu Jan 01 00:00:03 1970 +0000
| | summary: r3
| |
+---o changeset: 2:a6b287721c3b
| |/ parent: 0:1ea73414a91b
| | parent: 1:66f7d451a68b
| | user: debugbuilddag
| | date: Thu Jan 01 00:00:02 1970 +0000
| | summary: r2
| |
o | changeset: 1:66f7d451a68b
|/ tag: childa
| user: debugbuilddag
| date: Thu Jan 01 00:00:01 1970 +0000
| summary: r1
|
o changeset: 0:1ea73414a91b
tag: parent
user: debugbuilddag
date: Thu Jan 01 00:00:00 1970 +0000
summary: r0
$ hg init b
$ cat <<EOF >> b/.hg/hgrc
> [hooks]
> pretxnchangegroup.reject_merge_commits = \
> python:hgext.hooklib.reject_merge_commits.hook
> EOF
$ hg --cwd b pull ../a -r a6b287721c3b
pulling from ../a
adding changesets
adding manifests
adding file changes
error: pretxnchangegroup.reject_merge_commits hook failed: a6b287721c3b rejected as merge on the same branch. Please consider rebase.
transaction abort!
rollback completed
abort: a6b287721c3b rejected as merge on the same branch. Please consider rebase.
[255]
$ hg --cwd b pull ../a -r 1ea73414a91b
pulling from ../a
adding changesets
adding manifests
adding file changes
added 1 changesets with 0 changes to 0 files
new changesets 1ea73414a91b (1 drafts)
(run 'hg update' to get a working copy)
$ hg --cwd b pull ../a -r a9fb040caedd
pulling from ../a
searching for changes
adding changesets
adding manifests
adding file changes
added 3 changesets with 0 changes to 0 files
new changesets 66f7d451a68b:a9fb040caedd (3 drafts)
(run 'hg update' to get a working copy)