Summary:
Without this the titles namespace can conflict with revset aliases like `top`,
`prev`, or user-defined ones.
Context:
https://fb.workplace.com/groups/2057771867705016/posts/2597930333689164/
Reviewed By: muirdm
Differential Revision: D49326340
fbshipit-source-id: cd1200ec2d550ec496089a5ce258fa09e7807172
Summary:
Recently we've been seeing a lot of rage collection errors. I don't know exactly what is happening, but typically we see a TimedOut exception that has bubbled to the main thread, and/or an "abort: IO::main() is not available (dropped)" error.
We do something unsafe where we run sl commands in-process in a thread (the thread gives us the ability to join() with a timeout). If the thread hasn't finished in time, we raise an exception within the thread (and don't wait any further). It is not hard to imagine this causing problems when sl is fundamentally not thread safe and has various global state.
I made three changes to try to fix/avoid the errors:
1. Ignore the TimedOut exception at the top level to be sure it never bubbles up and exits us.
2. When a thread doesn't finish in time and we inject an exception, give it a few seconds to exit naturally. This could let it clean up normally in some cases.
3. In bindings.commands.run, only restore the global IO back if our current IO override is still active. In other words, if another thread has changed the global IO since we started, don't mess with it.
Reviewed By: quark-zju
Differential Revision: D49289240
fbshipit-source-id: c6d8471cb1df0239cacaeb2e1a3d12b929bc36ef
Summary:
`PublicChangesetBulkFetch` fetchs all the commits, and also provides a method to filter out all the public commit.
This is a misleading name, we're better to call it `ChangesetBulkFetcher`
Reviewed By: YousefSalama
Differential Revision: D49277309
fbshipit-source-id: f2857d39764bc39673a0f7968fb1a2cface16d63
Summary:
This diff:
* allows the PublicChangesetBulkFetch to support fetch all commit (both draft and public).
* makes the walker to walk both types of commit in Scrub mode.
Next diff: rename PublicChangesetBulkFetch
Reviewed By: YousefSalama
Differential Revision: D49314344
fbshipit-source-id: cdbbbdc26103fd509cbaf9246a54b1861a33ecbb
Summary: Code review from D37169769 - its not easy to extend implicit precedence in thrift without unsafe reordering - instead lets map this ourselves in the code
Reviewed By: xavierd
Differential Revision: D48758164
fbshipit-source-id: faab964fae19cacc681628c5f31a6bc184a9a94f
Summary:
While requesting an unsupported FUSE operation is an error from the client's
perspective, it isn't an error from eden's perspective, so it's misleading to
log them as such.
Reviewed By: genevievehelsel
Differential Revision: D49281263
fbshipit-source-id: eac3a4ee2f489a1af4485c349207c94473f4d77e
Summary: Hot fix to disable split on right click with uncommitted changes.
Reviewed By: quark-zju
Differential Revision: D49286542
fbshipit-source-id: 3f0fc1bb41b983daa35648d544f1e438bb0edf75
Summary:
We don't technically need to disable if you're splitting outside the stack with head... but let's just be safer to start with.
I don't remove the option, instead i show it as disabled and hint why it's disabled
Reviewed By: quark-zju
Differential Revision: D49286253
fbshipit-source-id: 45a3d4caf1e84d1f5ee9968641a37ed08c134c59
Summary: Tiny visual bug: left arrows would overflow out of the file
Reviewed By: quark-zju
Differential Revision: D49285293
fbshipit-source-id: 395cd9fdd5c4ac0a753245033d0314b0825d795d
Summary: I noticed these files were just at the top level, but it's kind of nice ot have them in the same subfolder
Reviewed By: quark-zju
Differential Revision: D49241576
fbshipit-source-id: ac75a5d27202e6f2bb193a7d32d3396592800d2f
Summary: disable redirect_tests on macOS sandcastle hosts due to them leaving behind disk images that clog up the mount table and cause chef to fail
Reviewed By: kmancini
Differential Revision: D49256840
fbshipit-source-id: 33cbfe8fdb38e8a4f71863d564db4b77b2fbcd4c
Summary:
For context on consumed_subentries see last diff.
Optimize derivation for BSSM by making use of the reused sharded map nodes provided in TreeInfo. Calculating rollup counts is tricky as we don't have rollup counts associated with sharded map nodes, instead they are associated with the subentries themselves. To work around this without having to expand the reused sharded map nodes, we make use of consumed_subentries as defined in the last diff. This will be unnecessary once we allow aggregate information to be stored on sharded maps. Also remove no longer needed top level directory optimization.
Differential Revision: D48954394
fbshipit-source-id: 6d0873232e5183fd066e7de3538a03593e8231cf
Summary:
consumed_subentries consists of all subentries in all parent manifests except subentries that belong to reused maps. This can be helpful in calculating aggregate information (e.g. rollup counts) without having to expand reused maps (parent subentries - consumed subentries + produced subentries = the subentries for the new manifest).
Ideally we would extend sharded map nodes to have aggregate information themselves, which would be much simpler, allow for aggregate types that can't be inverted (e.g. maximum path length), and allow deduplicating identical maps in derivation for merge commits that share subentries. But for now this has the same performance and unblocks speeding up BSSM derivation.
Differential Revision: D48954391
fbshipit-source-id: 1247a930c59e774a69732423364ffe0d3b19a054
Summary:
Implements a ShardedMapTrie wrapper for sharded maps to make it easier to implement TrieMapOps. ShardedMapTrie starts off by storing a ShardedMapEdge, and on each call to expand it:
- erases the beginning character if it's pointing to an intermediate node with a non-empty prefix.
- expands to its children if it's pointing to an intermediate node with an empty prefix.
- transforms into an in memory TrieMap if it's pointing to a terminal node then expands.
Differential Revision: D48954393
fbshipit-source-id: f551e1634179161d5133ffd21602a6312b73e4bd
Summary:
Currently the merge function in the derivation code lists all subentries in all parent manifests when trying to determine what to recurse on to compute new subentries. This made sense before the creation of sharded manifests as all subentries used to always exist in a single blob, but with sharded manifests this can be very expensive as it can require accessing a large number of blobs. Moreover this wastes the opportunity to reuse shards from parent manifests that do not conflict with any other manifest or any of the changes.
This diff refactors this logic to use a trie merge algorithm that recursively expands the subentries in the parent manifests and in the changes byte by byte, reusing parent maps when possible. This is all done generically through the TrieMapOps trait
Differential Revision: D48954396
fbshipit-source-id: ab72e6a14d9bccfa5f25c48a660a04c8a6335382
Summary: As titled. This allows us to check the progress easier in Skycastle
Reviewed By: mzr
Differential Revision: D49271732
fbshipit-source-id: 86fd0e49d0a2f181926f57b62c099132bace2714
Summary: Since `GitDeltaManifest` is a `Manifest` type, usually it makes sense to implement the `AsyncManifest` trait so we can use `ManifestOps` methods to access its elements. However `GitDeltaManifest` is not a regular manifest that is structured like a tree and is instead a flat manifest which is structured like a list. Hence, instead of implementing the `Manifest` or `AsyncManifest` trait, the helper methods for accessing the elements are defined directly on the `GitDeltaManifest` type.
Differential Revision: D49146739
fbshipit-source-id: b8eca14ae7b5a5508c50fe7393b270989a21145b
Summary: With all the building blocks in place, it is time to finally implement the core derivation logic for `GitDeltaManifest`. This diff is necessarily large since it is not possible to break up the derivation into more pieces. The next diff will contain unit tests to validate that deriving the delta manifest doesn't lead to a runtime error. Additionally, it would validate that the manifest includes the expected entries. Testing beyond that would require E2E integration test which would take a while.
Differential Revision: D48783515
fbshipit-source-id: fa71b41d21ffd384e4be2810ae94a3c3e713468a
Summary: Version bump and changelog entry for new OSS vscode extension release
Reviewed By: quark-zju
Differential Revision: D49253564
fbshipit-source-id: 042217ed72ea5f5bc7494aca614987fae2c46c0c
Summary:
Someone noted that the goto button's arrow icon looks like the old ISL's button to open the sidebar.
Would love feedback about this new icon. I think it's a little less confusing, maybe.
Reviewed By: quark-zju
Differential Revision: D49253780
fbshipit-source-id: d78763eb77956ec7231d6eb6b0df002aac6e647d
Summary:
Minor fix, I noticed sometimes I could scroll horizontally by 1px, which steals my main horiztonal scroll from working. This is surprisingly annoying.
Turns out, it's from the left/right arrows, when hovered, the arrows now overflows out of the file by 2px, which becomes scrollable.
The fix is to translate the arrow slightly when scaling. This actually emphasizes the arrows a little bit more by having them stand out further to the left.
Reviewed By: quark-zju
Differential Revision: D49253092
fbshipit-source-id: 346fa2b2634547ee30c3e02dd2c0592c1376190b
Summary: We talked about making this not ever render as an editor, but let's just make the editor read only for now, it's very simple to do.
Reviewed By: quark-zju
Differential Revision: D49252609
fbshipit-source-id: 444d609f6cd526d26cef5b3c171bd9a7f0c45a0e