mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 01:07:15 +03:00
021fa7eba5
Summary: End-users have been using visibleheads + narrowheads for a while, and hgsql does not require any filtering, and most tests are migrated to modern configs (visibility + narrow heads). Now it's time to consider removing the repoview layer. This removes complexities around `changelog.filteredrevs` and various different `repoview` objects with caching problems (ex. I have seen that `repo` and `unfi` have inconsistent phasecache causing they calculate phases differently and it's quite hard to reason about confidently). This will also make it easier to migrate to segmented changelog. Reviewed By: DurhamG Differential Revision: D22201084 fbshipit-source-id: 3661c26dd72a64b5005d86e164af4da5a6895649
126 lines
3.2 KiB
Perl
126 lines
3.2 KiB
Perl
#require py2
|
|
#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
|
|
$ setconfig format.use-zstore-commit-data=False
|
|
$ 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]
|
|
|