Commit Graph

661 Commits

Author SHA1 Message Date
Mark Shroyer
afb10611d1 Add config to disable doctor checks
Summary:
This adds the configuration `doctor.ignored-problem-class-names` so that we can
make doctor ignore individual problem classes via config rollout.

This doesn't actually stop the checks from running, but it stops reporting (or
attempting fixes for) ignored problems. Ignored tests will still be logged in the
edenfs_events table's

Reviewed By: xavierd

Differential Revision: D44720584

fbshipit-source-id: 954d1131dfbbf6a3264abf55b5e0f01ab61836d0
2023-04-11 18:53:10 -07:00
Xavier Deguillard
672b2dd726 cli: force enable-sqlite-overlay to be set on Windows
Summary:
On Windows, this should always be set to true. Unfortunately, we've rolled out
a bad EdenFS release that overwrote all of these configs and set them to false,
breaking several users.

Reviewed By: fanzeyi

Differential Revision: D44683911

fbshipit-source-id: 4d8efb3402f967b2e35fd333c858fe939307e6f0
2023-04-04 16:06:47 -07:00
Xavier Deguillard
f613702fef doctor: re-enable check_hg_status_match_hg_diff
Summary:
When this check was previously enabled, we saw 2 issues from users:
 - The check failing due to status taking more than 5s,
 - The check having false positive.

The first one can be fixed by increasing the timeout on the Thrift client, the
second one is anything but clear at first sight. Digging a bit deeper, one
issue became apparent. In:
    if modified_file not in diff:
The type of `modified_file` is a `Path`, while the type of `diff` was a
`Set[str]` (the type annotation was wrong). If we manually test this, here is
what we get:

  % python3
  Python 3.8.6 (default, Feb 10 2023, 17:15:29)
  [GCC 11.x 20221024 (Facebook) 11.2.1+] on linux
  Type "help", "copyright", "credits" or "license" for more information.
  >>> from pathlib import Path
  >>> a = {"a/b.c", "c/d.c"}
  >>> a
  {'c/d.c', 'a/b.c'}
  >>> Path('c/d.c') in a
  False
  >>> a = {Path("a/b.c"), Path("c/d.c")}
  >>> Path('c/d.c') in a
  True
  >>>

The check would have thus failed, which would have led to false positives.

Lastly, this also fixes a potential false negative, where the number of
modified files could be the same as the files in diff when the latter includes
an added/remove file but is missing one of the modified file. Removing the
check comparing both is sufficient to avoid this issue.

Reviewed By: chadaustin

Differential Revision: D44558090

fbshipit-source-id: 0cc83a87758a5feeff78c38b210ebd91fa5d58f5
2023-04-04 09:51:41 -07:00
Mark Shroyer
5a5081f95e Use sw_vers to get macOS version for rage
Summary:
Some Python versions don't return the correct macOS version from
`platform.mac_ver()`, so let's use `/usr/bin/sw_vers` instead.

Reviewed By: xavierd

Differential Revision: D44594569

fbshipit-source-id: ee52f11aad76361b780845de8218b2f365f0ecfe
2023-03-31 17:13:09 -07:00
Mark Shroyer
78031282c6 top: Don't crash on small terminals
Summary:
`eden top` would previously crash if its terminal window was resized too small,
due to incorrectly specifying a negative padding width in a format specifier.

Reviewed By: xavierd

Differential Revision: D44564714

fbshipit-source-id: 936f346ce7e7f5cb0f18cdbffa269cb0fd06be91
2023-03-31 14:35:41 -07:00
Genevieve (Genna) Helsel
8a1dc69e3a default enable-sqlite-overlay to true on Windows in python
Summary:
This config is already hardcoded to default to true on Windows in the C++ where it is consumed, and is set to true during clone, but in the case where the config is not set on disk, we should also default it to true in the python.

```
    def _get_enable_sqlite_overlay(
        self, instance: EdenInstance, overlay_type: Optional[str]
    ) -> bool:
        if overlay_type is None:
            # The sqlite backed overlay is default only on Windows
            return sys.platform == "win32"

        return overlay_type == "sqlite"
```

```
  auto enableSqliteOverlay =
      repository->get_as<bool>(kEnableSqliteOverlay.str());
  // SqliteOverlay is default on Windows
  config->enableSqliteOverlay_ =
      enableSqliteOverlay.value_or(folly::kIsWindows);
```

Reviewed By: chadaustin

Differential Revision: D44544561

fbshipit-source-id: 78f3b7c72934a377ffedcd6503b6948d282d2f49
2023-03-30 14:58:06 -07:00
Genevieve (Genna) Helsel
d01d855a74 delete old overlay doctor check and fix default value for enable-sqlite-overlay in python
Summary: This rollout has long been finished (the initial rollout from sqlite -> tree). However, I recently renamed tree -> sqlite, which can trigger incorrectly trigger this check since we assume `enable-tree-overlay/enable-sqlite-overlay` is false if its not in the config, but the config is only set to true upon clone. This behavior does not affect the C++ b/c we only write the config during clone.

Reviewed By: xavierd

Differential Revision: D44523497

fbshipit-source-id: ef19af0932fb8f7747bd7b90b8eabe92c1ddc13c
2023-03-29 20:30:02 -07:00
Chad Austin
1d1afbb13c remove check_macfuse
Summary:
We've largely migrated everyone off of macFUSE. Now we can remove the
doctor check.

Reviewed By: fanzeyi

Differential Revision: D44479361

fbshipit-source-id: 6332c5d47a043797ce7e6b823f6c81e0f6ae33a7
2023-03-28 17:41:09 -07:00
Michael Cuevas
c1e781d702 add logged_by field to edenfs events.
Summary: Add this so we know where events in edenfs_events came from (Python CLI, Rust CLI, or the daemon).

Reviewed By: mshroyer

Differential Revision: D44044474

fbshipit-source-id: e23af5e186121657dfabf25c5c50882cc9aec923
2023-03-21 15:50:30 -07:00
Genevieve (Genna) Helsel
fd74a4d27b rename TreeOverlay -> SqliteOverlay
Summary: as far as I can tell, we no longer have any callsites using `--overlay-type`, so this diff changes "tree" -> "sqlite" since that more accurately describes the difference between the different overlay options.

Reviewed By: chadaustin

Differential Revision: D44105266

fbshipit-source-id: 40d036222ca3e07c14f3f78aec374d4b6d54eb8a
2023-03-20 12:41:32 -07:00
generatedunixname89002005307016
ac21274523 upgrade pyre version in fbcode/eden - batch 1
Reviewed By: yancouto

Differential Revision: D44181498

fbshipit-source-id: 8772acfdcebc86976e588669b63e3200689ca0f4
2023-03-20 07:02:53 -07:00
Xavier Deguillard
838419fceb service: expose AUX fetching counters and watches through the stack
Summary:
Currently, EdenFS doesn't perform any aux data fetching, instead it fallback to
fetching blobs. In some cases, this can be extremely expensive when the aux
data store is emptied/flushed/rotated leading to non deterministic performance.
On Windows in particular, directory listing always need blob sizes, and thus
getting aux data reliably is critical.

As a first step, let's add some watches through the stack and expose these to
Thrift. This will allow `eden top` and `eden trace hg` to display these
fetches correctly.

Reviewed By: chadaustin

Differential Revision: D44105497

fbshipit-source-id: a3dc5cce1bc3115a2a4effcece6fa0cf0b16f6c8
2023-03-17 14:13:02 -07:00
Xavier Deguillard
d066d48aa7 doctor: disable check_hg_status_match_hg_diff
Summary: The check appears to be flaky for an unknown reason.

Reviewed By: chadaustin

Differential Revision: D44104911

fbshipit-source-id: 390a0d11e16d09c5204d829727ee20db37665815
2023-03-15 14:55:24 -07:00
Genevieve (Genna) Helsel
100f61b162 add link to ods query to rage
Reviewed By: fanzeyi

Differential Revision: D43852746

fbshipit-source-id: ddd86daa75474e1abaca96bd2d5a0563b133f3fd
2023-03-09 14:20:17 -08:00
Genevieve (Genna) Helsel
4b1006c46a add link to scuba query to rage
Reviewed By: mshroyer

Differential Revision: D43852224

fbshipit-source-id: bd12ec2ed6b0b3c935dbfdfe2e0ca9fa0e3ddd9b
2023-03-09 10:19:08 -08:00
Michael Cuevas
69bb0c8c38 remove recas dependencies for macOS builds
Summary:
Unscientifically, it seems to reduce link time by ~50% :o

Before: https://www.internalfb.com/intern/buck/build/5b13d200-3d4f-4cde-a15b-95f18886a939

After: https://www.internalfb.com/intern/buck/build/b1f1cba1-d1eb-4389-a9a8-a377050c7dd1

Reviewed By: chadaustin, fanzeyi

Differential Revision: D43930296

fbshipit-source-id: 83ed8d584876de35a8df4487ca2ca2fcfe092718
2023-03-08 19:09:19 -08:00
Katie Mancini
fdb9074daf enable running integration tests on apple silicon
Summary:
We are unable to run any integration tests on apple silicon because we fail to
start the eden daemon.

We are expecting to be able to find arch, but with execve we need to pass the
full path. according to the python docs adding a "p" should allow the command to
resolve the path with the current environment.

This allows the tests to get farther on my M1.

Reviewed By: mshroyer

Differential Revision: D43923320

fbshipit-source-id: eb737eb561659bd8c9d3cd6bc214f8860b657294
2023-03-08 16:26:25 -08:00
Xavier Deguillard
496731ae12 service: allow debugInodeStatus to not be recursive
Summary:
The debugInodeStatus can be used to get a mapping between paths and objectid
and/or inode numbers. Unfortunately, the Thrift call is recursive by default,
so calling it on the root of the repository yields a potentially extremely long
Thrift call.

By adding a non-recursive flag, we can mitigate this and force EdenFS to merely
return data for a single directory. This will be used in doctor to obtain the
mapping between paths and objectid in an efficient way. In the future, the
Windows-only filesystem checker in doctor will also be migrated to use the
non-recursive API to reduce races during doctor.

Reviewed By: genevievehelsel

Differential Revision: D43859190

fbshipit-source-id: e175238c2a169b5cdfcf9d4dbcb058578d0c2efe
2023-03-07 10:46:26 -08:00
Xavier Deguillard
76cf9d1f2e cli: add a doctor checker that compares hg status with hg diff
Summary:
We have an ongoing bug in EdenFS where somehow `hg status` shows a dirty
working copy, while `hg diff` shows no changes to these files. To understand
how widespread this issue is, let's start by adding a doctor check which will
give us telemetry on it.

Reviewed By: genevievehelsel

Differential Revision: D43804391

fbshipit-source-id: ef1e1b8bdd9221ff867747de4957277d3fac5538
2023-03-07 10:46:26 -08:00
Michael Cuevas
13d7f7da05 fix failing doctor tests
Reviewed By: genevievehelsel

Differential Revision: D43712819

fbshipit-source-id: 662f96786b8f6f95c35ef4094d126b820d16fb1c
2023-03-02 14:07:47 -08:00
Michael Cuevas
4321638988 Tell users to collect an eden rage before posting
Reviewed By: mshroyer, fanzeyi

Differential Revision: D43554234

fbshipit-source-id: fc94e2974af33d76c0f37f4a8064368314868e83
2023-02-28 11:48:39 -08:00
Michael Cuevas
6b0134c35f Back out "add Python stub for prefetch-profile" and "[edenfs] kill python prefetch-profiles"
Summary: Some environments are still somehow using the Python version of edenfsctl even though they should be fully on the Rust version. That means some environments are experiencing failures due to `eden prefetch-profile` not being a valid command. This diff makes the Python version of edenfsctl available again to help fix this.

Reviewed By: fanzeyi

Differential Revision: D43589012

fbshipit-source-id: eb529b48bcadd734f80e809d2f7b41ef081d7442
2023-02-24 17:37:30 -08:00
Michael Cuevas
b36645215e redirect: use unmount force instead of eject
Reviewed By: mshroyer

Differential Revision: D43578518

fbshipit-source-id: 0e34b10bcc5651a4d41f5b7f63c2f4b1cf444258
2023-02-24 15:36:42 -08:00
Xavier Deguillard
c8726623a6 cli: run inode invalidation in the background in doctor
Summary:
Over the past few weeks, we discovered that invalidating the working copy
without looking at the atime of files can lead to undesirable behavior due to
races between invalidation and placeholders being laid on disk (D42694759 (f308c20680)). We
also learned that in some cases, invalidation can take a really long time in
cases where very large parts of the repository is loaded, during which `eden
doctor` is stuck waiting for the invalidation to complete.

To solve the first one, we simply need to have `eden doctor` pass a non-zero
age, in this case since atime's granularity is 1h, we use 1h as the age. For
the second one, the Thrift handler is modified to allow backgrounding the
invalidation and `eden doctor` uses this new flag.

Reviewed By: kmancini

Differential Revision: D42785599

fbshipit-source-id: 9d86686f791e124b016685e3669004338ca33359
2023-02-24 10:48:53 -08:00
Michael Cuevas
01738467a0 add Python stub for prefetch-profile
Summary:
In order for the command to show up in our help text, we must add a stub and print out "not-implemented" if someone somehow manages to invoke the Python version of `prefetch-profile`.

Instead of adding stubs for each sub-subcommand for prefetch-profile, we'll simply redirect the user to the Rust help text.

Reviewed By: fanzeyi

Differential Revision: D43482266

fbshipit-source-id: f29d511bfb06a6d1cc74386cc88e685024384ece
2023-02-21 18:22:44 -08:00
Michael Cuevas
852db96096 re-add prefetch command
Reviewed By: fanzeyi

Differential Revision: D43481512

fbshipit-source-id: 0bd06808e596b908a69da8401613b19b21c4040b
2023-02-21 18:22:44 -08:00
Mark Shroyer
c192c6cec6 Make --retroactive trace status characters more legiible
Summary:
Replaces the dashed and solid arrow emoji, used to represent start and finish
events respectively, with an arrow and checkmark.

With my terminal font, I never noticed there were actually two different arrow
types in the output...

Reviewed By: kmancini

Differential Revision: D42971357

fbshipit-source-id: 9e569a461d77b6df9993554b0edccd85fe77d9f2
2023-02-17 13:11:43 -08:00
Michael Cuevas
b02b56cd97 kill python prefetch-profiles
Summary:
We've had Rust prefetch-profiles for a while now. It's pretty safe at this point to delete the Python version.

quiet_delete

Reviewed By: genevievehelsel

Differential Revision: D43375605

fbshipit-source-id: f3670434b9884e2c7dc2c1429cf90b07334611af
2023-02-17 11:44:06 -08:00
Michael Cuevas
e08307ba0a fix eden rage stdout option
Reviewed By: genevievehelsel

Differential Revision: D43376778

fbshipit-source-id: f59caabf09c64514185bf686a297132c98ae46ef
2023-02-17 11:44:06 -08:00
Michael Cuevas
6000312f1a fix Rust _bind_mount_darwin_dmg()
Summary: We used to use disk images for redirections, but the code had long since gone stale. This diff fixes some of the logic so that the disk image code path will work again.

Reviewed By: fanzeyi

Differential Revision: D42467863

fbshipit-source-id: 12927aad617ffb3fb805dcbb91e1a671943fd1c0
2023-02-14 12:29:56 -08:00
Mark Shroyer
7fad134557 Don't crash trace_stream when no retroactive events
Summary:
Fixes a crash in `trace_stream` in the event that `getRetroactiveInodeEvents`
returns an empty list.

Reviewed By: kmancini

Differential Revision: D43104090

fbshipit-source-id: a662ffda29c6133a02f522b50614aef1535a4f6c
2023-02-09 11:44:54 -08:00
Katie Mancini
b2a8f60867 recommend --wait in doctor too
Summary:
Eden doctor considers eden still starting as an "issue". Lets recommend looking
at eden status --wait here too, so users have a bit more encouragement to be
patient.

While I might at some point remove the hint in regular `eden status`. I intend to
leave this recommendation in the code forever.

Reviewed By: fanzeyi

Differential Revision: D43101809

fbshipit-source-id: 523bf9be1961db77916a773d68188407c7e3e450
2023-02-08 10:54:11 -08:00
generatedunixname89002005307016
12134c35f3 upgrade pyre version in fbcode/eden - batch 1
Differential Revision: D43044050

fbshipit-source-id: 4848432a631e2f0dc0ecfae824b4020439d73e5b
2023-02-06 11:55:20 -08:00
Xavier Deguillard
8c1aa7841f cli: add --fast to doctor
Summary:
Some IDEs are running `eden doctor --dry-run` in the background to preemptively
find issues and display them to engineers. Unfortunately, some of the doctor
checks are fairly expensive and take a long time, these expensive checks are
also racy as they look at the working copy while it is being read/written,
which can cause more problems to be reported for non-existant issues.

To bypass both issues, a `--fast` option is introduced, which IDEs should use
to avoid the expensive checks.

Reviewed By: jdonald

Differential Revision: D43051918

fbshipit-source-id: 094c8db32ead99c9bfcd40cf1aad1e57c524b48a
2023-02-06 11:29:54 -08:00
Zeyi (Rice) Fan
f0035b5207 cli: fix chrome trace flag
Summary: Thanks mshroyer for catching this error.

Reviewed By: genevievehelsel

Differential Revision: D42939556

fbshipit-source-id: 2908d395c5192321685b823056324dd93b4cada7
2023-02-03 13:34:32 -08:00
generatedunixname89002005307016
7942a4e360 upgrade pyre version in fbcode/eden - batch 1
Reviewed By: genevievehelsel

Differential Revision: D42946315

fbshipit-source-id: 38eff0b796fbbd78ba842787c5887390ff698e36
2023-02-01 20:39:41 -08:00
Katie Mancini
fd7b0b9f5f migrate eden debug blobmeta to debugGetBlobMetadata
Summary:
Some times EdenFS has corrupt data, its helpful to be able to see where that
corrupt data is stored. I updated `eden debug blob` a while back to show
blob data from multiple places: D41165544 (224cde1d5c).

In this stack I am going to do the same for blob metadata, so we can
understand where corrupt data is comming from.

This diff implements that new endpoint and adds some tests for it.

Reviewed By: chadaustin

Differential Revision: D42283192

fbshipit-source-id: 5042ee81798ffb4a80c2fa13e14080c4a3ed00ca
2023-01-27 14:35:09 -08:00
Michael Cuevas
b98239f122 use BUCKVERSION to determine whether to download buck
Reviewed By: fanzeyi

Differential Revision: D42760518

fbshipit-source-id: 447c754206768361739d3bda81fe2150110fc94d
2023-01-25 17:50:06 -08:00
Zeyi (Rice) Fan
c0de090e8e trace: introduce TaskTraceBlock for tracing tasks
Summary:
When investigating the `QueueTimeout` issue with `globFiles` in EdenFS, it is handy to understand which thread is a code block being executed on. `folly::Future/SemiFuture` is subtle and easy to make mistakes when it comes to thread scheduling.

This diff introduces a new type of `TraceBus` that generates events based on `TaskTraceBlock` -- a scope guard style tracing utility that will report which thread the given block is executed on, along with some other interesting information.

The trace_stream binary is going to produce a Chrome JSON trace format so you can easily analyze the result with tools like `chrome://tracing` or Perfetto. (Note: `task` mode produces JSON for inspection, `task-chrome-trace` will produce Chrome JSON trace format).

Reviewed By: xavierd

Differential Revision: D41390587

fbshipit-source-id: 7fdc19b9ec87318f4c6dc8b196153ffb2568c8ba
2023-01-18 16:41:25 -08:00
Michael Cuevas
a82a1554f2 fix type error in eden doctor
Summary: The Mercurial functions that Eden doctor uses want `str`s to be passed in instead of `bytes`. We should change the Eden doctor checks/fixes to match this requirement.

Reviewed By: xavierd

Differential Revision: D42456187

fbshipit-source-id: 312d53d98154e79215e18030598fcee915f76b3c
2023-01-12 10:21:52 -08:00
Chad Austin
6df8bb25a2 spelling and grammar in eden rm
Reviewed By: genevievehelsel

Differential Revision: D33542613

fbshipit-source-id: b98226d613f79670ac6d07834964664a6d8cc848
2022-12-20 14:17:40 -08:00
Michael Cuevas
58352255ee default to using system privhelper
Summary:
When starting developer instances of EdenFS, we're forced to use `sudo` to start developer instances privhelper daemons. This is an issue because `sudo` is not available on macOS sandcastle hosts, and therefore we cannot run integration tests on macOS (all integration tests for macOS are currently disabled).

Instead, we can use the system privhelper by default (instead of using developer instances of privhelper). The system privhelper is installed with SUID root, which means we can leverage its privileges to run integration tests on macOS without `sudo`!

Reviewed By: chadaustin, xavierd

Differential Revision: D41020919

fbshipit-source-id: ef26f95d673b9290c62c7d0755d580f30eb43645
2022-12-09 18:01:01 -08:00
Katie Mancini
3638bf9a5b script to detect corrupt file size
Summary:
EdenFS is sometimes displaying truncated file content through the filesystem. This is because the size EdenFS is reporting is incorrect.

This adds a checker to scan the local store for corrupted file sizes. It's too slow to put in eden doctor right now, but I will use it to stress test and see if I can repro the corruption.

Reviewed By: xavierd

Differential Revision: D41012331

fbshipit-source-id: b74ce536d0ced1a01c19a92759258594ffd49e68
2022-12-06 23:42:55 -08:00
Katie Mancini
224cde1d5c eden debug blob add option to show blob contents from all locations
Summary:
EdenFS now supports fetching blobs from multiple locations. It certainly would
have been helpful to be able to see blob contents from all locations all at
once while debugging reports of corrupted file content recently.

Lets add an option to `eden debug blob` so that we cans see data from multiple
places at once.

Reviewed By: chadaustin

Differential Revision: D41165544

fbshipit-source-id: 421fc8841a531894715ff5cbb3786e1003782666
2022-12-06 23:42:55 -08:00
Katie Mancini
e9da48a6cd eden debug blob add options for new fetching locations
Summary:
The daemon now supports specifying different locations where data can be
fetched from.  We can support these in the eden debug blob CLI so that it is
easy to inspect which stores have a blob and what contents those stores have
for the blob.

This diff does break the API of the `eden debug blob` command (no more --load
option). But I don't spot this uses anywhere in code and is only intended for
use by the eden team, so this seems ok.

Reviewed By: xavierd

Differential Revision: D41165545

fbshipit-source-id: 7f35de59ad8073173e917f01eeae693500f6540c
2022-12-06 23:42:55 -08:00
Michael Cuevas
e4848f061b refactor --all-sources flag to be --only-repo-source
Summary:
The --all-sources flag doesn't really make sense, and it hasn't been used internally within the past 90 days...

I'm open to killing this flag altogether, but for now we can just change the logic so that it makes sense.

Now we have renamed the flag to --only-repo-source (more accurate), default this flag to false, and require users to pass it in if they want to change the behavior of redirect fixup.

Reviewed By: fanzeyi

Differential Revision: D41488196

fbshipit-source-id: 5f36c2199e9eb849cdc3db6ce163462b3e295b47
2022-11-29 16:16:30 -08:00
Katie Mancini
5b07baa98a debugGetScmBlob -> debugGetBlob
Summary:
In the last diff I introduced a new endpoint debugGetScmBlobV2 this will allow
us to fetch blobs from more (and multiple) locations. migrate the CLI to the
new endpoint:

Looks like this is the only place incode that we are using the old endpoint:
https://www.internalfb.com/code/search?q=repo%3Afbcode%20debugGetScmBlob

Reviewed By: mshroyer

Differential Revision: D41069917

fbshipit-source-id: dfeb9983c6c5f009180653d3bfd96cd928b13bcf
2022-11-18 15:19:40 -08:00
Xavier Deguillard
865684007f doctor: invalidate all inodes on high inode count
Summary:
One of the top issues that engineers are faced with are slow update/rebase
alongside with slow startup. Both of which are a consequence of having tons of
files populated in the repo, which often comes from tools crawling the repo. As
a mitigation, EdenFS recently gained the ability to invalidate all
non-materialized files/directories, let's start by using this in `eden doctor`
when we consider that the user has a large amount (over 1M) of inodes in their
repo.

A future step will run this invalidation as a periodic background task taking
into consideration how frequent a file was accessed.

Reviewed By: kmancini

Differential Revision: D41010836

fbshipit-source-id: 14f4c5322f3879d830048ba924d5769631809bb1
2022-11-18 15:17:02 -08:00
Walter Tetzner
5315a97e2f Allow specifying the RE CAS use-case when setting the objectId
Summary:
We have a concept in Hargow collect Volumettes, which are directories of data. The backend storage for them is the RE CAS, and we would like to be able to mount volumettes using eden.

However, we have our own use-cases, which have their own storage (Manifold buckets and ZippDBs). So to make this work, we need some way to be able to specify the use-case.

We pass the use-case in using a new `--re-use-case` parameter, and store it in a `CheckoutConfig` option under `recas/use-case`.

Reviewed By: miaoyipu

Differential Revision: D41001049

fbshipit-source-id: a4b3d5c602e29a71560d17d3d3802b4b0a5922c0
2022-11-17 07:48:59 -08:00
Chad Austin
a1bc268963 port Path and PathPiece from folly::StringPiece to std::string_view
Summary:
std::string_view has noexcept accessors and folly::Range doesn't, so
this allows us to make Path and PathPiece noexcept.

Reviewed By: kmancini

Differential Revision: D41145426

fbshipit-source-id: 046f6f6a532d8d0da8508ccf7896c914e19a25ec
2022-11-16 18:09:51 -08:00