mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
9f82b1f8e8
Summary: As part of the mononoke write path rollout we want to be able to dynamically block writes to a repo. This is implemented as a table in hgsql (repo_lock) that both hg and mononoke can read, but will only be updated by scmadmin. Expose a function that can be used by in-process hooks to check if a repo is locked for mercurial. Reviewed By: quark-zju Differential Revision: D14279169 fbshipit-source-id: f8bb4afeeeda67796cf806ab7f3fe42f4089818f
33 lines
1.4 KiB
Perl
33 lines
1.4 KiB
Perl
$ . "$TESTDIR/hgsql/library.sh"
|
|
$ initserver master masterrepo
|
|
$ cd master
|
|
|
|
Check that a repo without an entry is treated as RW
|
|
$ hg debugshell -c "repo.sqlconnect(); print(repo.sqlisreporeadonly())"
|
|
False
|
|
|
|
Set the repo to RO for hg and mononoke
|
|
$ mysql -h $DBHOST -P $DBPORT -D $DBNAME -u $DBUSER $DBPASSOPT -e 'REPLACE INTO repo_lock(repo, state) VALUES ("masterrepo", 0)'
|
|
$ hg debugshell -c "repo.sqlconnect(); print(repo.sqlisreporeadonly())"
|
|
True
|
|
|
|
Set another repo to RW for hg and check that masterrepo is still RO
|
|
$ mysql -h $DBHOST -P $DBPORT -D $DBNAME -u $DBUSER $DBPASSOPT -e 'REPLACE INTO repo_lock(repo, state) VALUES ("masterrepo2", 1)'
|
|
$ hg debugshell -c "repo.sqlconnect(); print(repo.sqlisreporeadonly())"
|
|
True
|
|
|
|
Set the repo to RW for Mononoke only
|
|
$ mysql -h $DBHOST -P $DBPORT -D $DBNAME -u $DBUSER $DBPASSOPT -e 'REPLACE INTO repo_lock(repo, state) VALUES ("masterrepo", 2)'
|
|
$ hg debugshell -c "repo.sqlconnect(); print(repo.sqlisreporeadonly())"
|
|
True
|
|
|
|
Set the repo to RW for hg only
|
|
$ mysql -h $DBHOST -P $DBPORT -D $DBNAME -u $DBUSER $DBPASSOPT -e 'REPLACE INTO repo_lock(repo, state) VALUES ("masterrepo", 1)'
|
|
$ hg debugshell -c "repo.sqlconnect(); print(repo.sqlisreporeadonly())"
|
|
False
|
|
|
|
Set the repo to RO again
|
|
$ mysql -h $DBHOST -P $DBPORT -D $DBNAME -u $DBUSER $DBPASSOPT -e 'REPLACE INTO repo_lock(repo, state) VALUES ("masterrepo", 0)'
|
|
$ hg debugshell -c "repo.sqlconnect(); print(repo.sqlisreporeadonly())"
|
|
True
|