sapling/tests/test-fb-hgext-pushrebase-cannot-rebasepublic.t
Durham Goode ad813edcbd treemanifest: enable treemanifest by default in tests
Summary:
Now that all our repos are treemanifest, let's enable the extension by
default in tests. Once we're certain no one needs it in production we'll also
make it the default in core Mercurial.

This diff includes a minor fix in treemanifest to be aware of always-enabled
extensions. It won't matter until we actually add treemanifest to the list of
default enabled extensions, but I caught this while testing things.

Reviewed By: ikostia

Differential Revision: D15030253

fbshipit-source-id: d8361f915928b6ad90665e6ed330c1df5c8d8d86
2019-05-28 03:17:02 -07:00

121 lines
3.2 KiB
Perl

Demonstrates the "cannot rebase public commits" issue seen using hgsql and
pushrebase.
$ setconfig extensions.treemanifest=!
$ . "$TESTDIR/hgsql/library.sh"
$ setconfig hgsql.verbose=True
$ setconfig pushrebase.verbose=True
$ enable pushrebase
$ enable strip
$ setconfig ui.ssh='python "$RUNTESTDIR/dummyssh"'
$ commit() {
> hg commit -Aq -m "$@"
> }
$ log() {
> hg log -G -T "{desc} [{phase}:{node|short}] {bookmarks} {remotenames}" "$@"
> }
$ config() {
> setconfig experimental.bundle2lazylocking=True
> setconfig pushrebase.runhgsqlsync=True
> enable pushrebase
> }
$ config_server() {
> config
> configureserver . foo
> }
$ clone() { # Usage: "clone <client directory> <source directory>
> SRC=${2:-server1}
> hg clone ssh://user@dummy/$SRC $1 -q
> cd $1
> hg up -q master
> config
> }
Set up server repository.
$ newrepo server1
$ config_server
$ echo foo > base
$ commit "base"
[hgsql] got lock after * seconds (read 1 rows) (glob)
[hgsql] held lock for * seconds (read 5 rows; write 5 rows) (glob)
$ cd ..
Add a new commit to server2 (as if we stripped in server1):
$ cp -R server1 server2
$ cd server2
$ echo foo > a
$ commit "first"
[hgsql] got lock after * seconds (read 1 rows) (glob)
[hgsql] held lock for * seconds (read 8 rows; write 7 rows) (glob)
$ hg book -r . master
[hgsql] got lock after * seconds (read 1 rows) (glob)
[hgsql] held lock for * seconds (read 5 rows; write 1 rows) (glob)
$ log
@ first [draft:8585ef078134] master
|
o base [draft:4ced94c0a443]
Stop syncs in server1 so it doesn't pick up the new commit:
$ cd ../server1
$ cd .hg/store
$ ln -s "foo:9" synclimiter
$ cd ../../../
Clone client1 from the server2 repo (with the extra commit).
$ clone client1 server2
$ cd ../client1
Create a _third_ draft commit, push to the (behind) server1:
$ echo "foo" > foo
$ commit "third commit"
$ rm ../server1/.hg/store/synclimiter_
rm: cannot remove '../server1/.hg/store/synclimiter_': $ENOENT$
[1]
$ hg push --to master ssh://user@dummy/server1
pushing to ssh://user@dummy/server1
remote: [hgsql] skipping database sync because another process is already syncing
remote: [hgsql] getting 1 commits from database
searching for changes
remote: checking conflicts with 8585ef078134
remote: pushing 1 changeset:
remote: 87df66bba286 third commit
remote: [hgsql] got lock after * seconds (read 1 rows) (glob)
remote: rebasing stack from 8585ef078134 onto 8585ef078134
remote: [hgsql] held lock for * seconds (read 8 rows; write 9 rows) (glob)
updating bookmark master
$ log
@ third commit [public:87df66bba286] master
|
o first [public:8585ef078134]
|
o base [public:4ced94c0a443]
$ cd ../server1
$ log
[hgsql] skipping database sync because another process is already syncing
o third commit [public:87df66bba286] master
|
o first [public:8585ef078134]
|
@ base [public:4ced94c0a443]
$ cd ../server2
$ log
[hgsql] getting 1 commits from database
o third commit [draft:87df66bba286] master
|
@ first [draft:8585ef078134]
|
o base [draft:4ced94c0a443]