sapling/eden/integration
Michael Cuevas 4c57fa380b Add filter activation during clone
Summary:
# Problem

The `eden clone` and `hg clone` command currently allow you to specify that you want to use FilteredFS, but they don't allow you to specify the filter to active after the clone completes. Instead, the user has to manually set the filter themselves by running `hg filteredfs enable {path_to_filter}`.

This is annoying for many reasons, and it prevents us from easily rolling out filters on Sandcastle/ODs.

# Solution

We should allow users to pass in the Filter they want to enable at clone time. This will allow them to skip the `hg filteredfs enable {path_to_filter}` step. Even better, we'll allow passing this filter via an Hg Config. That way we can easily enable FilteredFS + use a specific filter just by setting a config value.

# This diff

We want to enable a filter after the repo is successfully cloned. This diff adds a new config option clone.eden-sparse-filter which allows users to specify which filter to activate after cloning. *This option will eventually replace the clone.use-eden-sparse option!*

The config works as follows:

* if clone.eden-sparse-filter is not set, we won't clone with FilteredFS
* if clone.eden-sparse-filter is set to an empty string, we'll clone with FilteredFS but we won't activate a filter
* if clone.eden-sparse-filter is set to a string value, we'll use that as the filter to activate after the clone completes.

The actual activating of the filter happens in the `edenfsctl clone` logic. That logic is added in the diffs stacked below this one.

Reviewed By: muirdm

Differential Revision: D53599528

fbshipit-source-id: f271c2091d5b0473bd25c1419b660cd0d514bded
2024-02-12 20:13:20 -08:00
..
facebook/lib Re-sync with internal repository 2023-10-11 22:09:00 -07:00
fsck Re-sync with internal repository 2023-10-11 22:09:00 -07:00
helpers Re-sync with internal repository 2023-10-11 22:09:00 -07:00
hg Add filter activation during clone 2024-02-12 20:13:20 -08:00
lib add option to specify a filter on clone 2024-02-12 13:40:38 -08:00
snapshot eden 2023-10-23 09:12:58 -07:00
basic_test.py thread filteredhg info through to HgRepo class 2023-12-19 22:20:08 -08:00
casing_test.py Run case sensitivity integration tests exhaustively on each platform 2022-10-17 13:02:28 -07:00
chown_test.py integration: add a few missing testcase decorator 2022-07-26 16:50:53 -07:00
clone_test.py Allow setting and querying case-sensitivity 2022-10-17 13:02:28 -07:00
CMakeLists.txt integration: the prjfs_stress only run on Windows 2022-07-06 18:14:27 -07:00
config_test.py rename ConfigSource to ConfigSourceType 2022-12-10 05:09:52 -08:00
corrupt_overlay_test.py inodes: recover from corrupted sqlite database 2023-03-17 21:38:48 -07:00
debug_getpath_test.py integration: rename get_thrift_client to get_thrift_client_legacy 2022-04-22 18:22:42 -07:00
debug_subscribe_test.py Fix use-after-move issue in RocketClientChannel 2023-06-27 20:10:08 -07:00
debug_test.py store: allow LocalStoreCachedBackingStore to be configured 2023-05-09 09:52:52 -07:00
doteden_test.py prjfs: prevent .eden from being removed 2022-03-07 15:36:00 -08:00
edenclient_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
fsck_test.py remove fsck python implementation 2023-08-18 18:04:12 -07:00
glob_test.py Run case sensitivity integration tests exhaustively on each platform 2022-10-17 13:02:28 -07:00
health_test.py suppress errors in eden 2024-01-26 18:40:57 -08:00
help_test.py integration: do not run skipped/disabled tests 2022-07-22 09:51:17 -07:00
info_test.py rage: added inode-catalog-type to report 2023-08-24 15:42:22 -07:00
invalidate_test.py prjfs: set the timestamps when adding placeholders 2023-04-19 11:36:52 -07:00
long_path_test.py add optional filter parameters to Eden thrift endpoints 2023-10-05 16:40:21 -07:00
materialized_query_test.py fix test_getFileInformation on Windows 2022-05-04 17:05:09 -07:00
mmap_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
mount_test.py apply import merging for fbcode (4 of 11) 2022-05-15 12:53:03 -07:00
oexcl_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
patch_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
persistence_test.py config: switch thorough-fsck on by default 2022-10-21 14:41:08 -07:00
prjfs_match_fs.py Add missing inodes in windows doctor 2023-06-09 11:52:50 -07:00
prjfs_stress.py gather all prjfs integration test basics 2023-06-09 11:52:50 -07:00
projfs_buffer.py Lint failure adding annotations to eden/integration/projfs_buffer.py 2023-04-12 09:51:28 -07:00
projfs_enumeration.py tests: make all EdenFS tests on Windows use the buck-built hg 2023-09-12 13:53:25 -07:00
rage_test.py remove eden doctor invocation from eden rage 2022-03-09 10:36:24 -08:00
rc_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
readdir_test.py tests: add tests for Windows symlinks 2023-07-19 15:47:02 -07:00
redirect_test.py cli: prepare redirect command to be compatible with Python 3.10 2023-09-18 14:13:42 -07:00
remount_test.py Add annotations to eden 2022-02-14 12:17:43 -08:00
rename_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
restart_test.py suppress errors in eden 2024-01-26 18:40:57 -08:00
rocksdb_store_test.py upgrade pyre version in fbcode/eden - batch 1 2022-08-05 01:40:16 -07:00
sed_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
service_log_test.py reenable integration tests on macOS 2023-02-14 12:29:56 -08:00
setattr_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
stale_inode_test.py integration: add a few missing testcase decorator 2022-07-26 16:50:53 -07:00
stale_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
start_test.py integration: do not run skipped/disabled tests 2022-07-22 09:51:17 -07:00
stats_test.py Add counter for in-memory TreeCache hits 2023-09-25 05:47:41 -07:00
stop_test.py suppress errors in eden 2024-01-26 18:40:57 -08:00
takeover_test.py fail startup if the localstore fails to open 2023-09-28 15:43:27 -07:00
TARGETS eden/integration 2023-12-15 10:57:34 -08:00
thrift_test.py service: use VirtualInodeLoader for getBlake3 Thrift call 2023-10-23 09:47:08 -07:00
unicode_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
unixsocket_test.py fs: fix license header 2022-01-04 15:00:07 -08:00
unlink_test.py integration: enable unlink tests 2023-03-10 18:35:27 -08:00
userinfo_test.py integration: do not run skipped/disabled tests 2022-07-22 09:51:17 -07:00
windows_fsck_test.py gather all prjfs integration test basics 2023-06-09 11:52:50 -07:00
xattr_test.py fs: fix license header 2022-01-04 15:00:07 -08:00