sapling/eden/scm/tests/test-fb-ext-pushrebase-cannot-rebasepublic.t
Saul Gutierrez 7f8e4f2439 hgext: rename ext to hgext
Summary: We since internally we will start to refer to `hg` as `sapling`, the `hgext` directory does not make that much sense now. This diff renames the `hgext` directory to `ext`, as well as all the references to it.

Reviewed By: jordanwebster

Differential Revision: D38914577

fbshipit-source-id: 2d01fc9ead26f309d9021ffe34e0812e0f2a13b7
2022-08-23 15:19:05 -07:00

124 lines
3.2 KiB
Perl

#chg-compatible
Demonstrates the "cannot rebase public commits" issue seen using hgsql and
pushrebase.
$ configure dummyssh
$ disable treemanifest
$ . "$TESTDIR/hgsql/library.sh"
$ setconfig hgsql.verbose=True
$ setconfig visibility.enabled=False
$ setconfig pushrebase.verbose=True
$ enable pushrebase
$ enable strip
$ 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"
$ LC_ALL=C 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
searching for changes
updating bookmark master
remote: [hgsql] skipping database sync because another process is already syncing
remote: [hgsql] getting 1 commits from database
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)
$ log
@ third commit [public:87df66bba286] master
o first [public:8585ef078134] default/master
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]