sapling/eden/scm/tests/test-fb-hgext-pushrebase-cannot-rebasepublic.t
Jun Wu 75a8173a10 tests: enable chg for 572 tests
Summary:
Add `#chg-compatible` to 572 tests that seem to pass with chg enabled.
This should make them run faster.

Reviewed By: xavierd

Differential Revision: D18870507

fbshipit-source-id: fe895e733efffc9286cd3d17c7a156c803124395
2019-12-09 15:26:29 -08:00

123 lines
3.2 KiB
Perl

#chg-compatible
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]