Summary:
Like previous diff, but add it when you have multiple commits selected.
This is slightly hairy, because we try to save your edited messages, and yet the keying is by hash. So if you change your selection at all (or a succession happens), you'd lose your message.
I really don't think it should be a big deal—these update messages are supposed to be brief and simply explain what you changed, unlike the summary/ test plan.
Reviewed By: quark-zju
Differential Revision: D49339371
fbshipit-source-id: 47113d097e5e672e85f61365aadd23b8cd7272ae
Summary:
We now support an update message field when you bulk submit your stack, but we should also let you do this in the commit info view.
I don't love that we need to take up an additional line of space for this, it kind of gets in the way. But I think it's better to have this feature than not.
Reviewed By: sggutier
Differential Revision: D49338613
fbshipit-source-id: cbc26a3366d2419dda1380eb11b0cc18cf2fa578
Summary: we'll need to disable this for github, since I think sl pr / sl ghstack don't have a way to add a comment when submitting.
Reviewed By: sggutier
Differential Revision: D49336279
fbshipit-source-id: 3714f4de61264f6e84b601bd46ec7e1139e13bd1
Summary: Add a text field where you can write out an update message to pass to the submit command.
Reviewed By: quark-zju
Differential Revision: D49335831
fbshipit-source-id: c5357824b7f74b87ce49863603608d4b1d4c7448
Summary: These tests broke during this stack. Let's reenable by mocking the config to confirm, and also add some tests for the confirmation modal itself.
Reviewed By: quark-zju
Differential Revision: D49334877
fbshipit-source-id: 6737db02e6a04db57a21ae54d6e852b90ab1f9e1
Summary:
If we use a hook for the submit stack confirmation modal, we can use a recoil callback to get all the state we need.
We actually had a bug before, where if you disable the confirmation modal, the submit button would have no effect, since now it returns null. We actually need it to return the same information by looking up recoil state for the draft checkbox.
Reviewed By: quark-zju
Differential Revision: D49333423
fbshipit-source-id: 3a398667ed986eb2ba5122574c1dd22179727606
Summary: Previously, we returned a boolean here to signal that we should submit. We could lookup the draft checkbox state from the atom, but it's simpler to just pass this back from the modal. Plus, we'll need to pass data back to support the update message field.
Reviewed By: quark-zju
Differential Revision: D49330145
fbshipit-source-id: 77422c96f7f5709ffea8f97757b374982f827c28
Summary:
Update the settings dropdown to include the stack submit confirmation.
This mirrors the "don't show again" in the confirmation modal.
Of course, we need this to be accessible outside the modal because once you check it and close the modal, you won't see the modal again!
Also, we have a few settings now for code review, let's lump them together so it's easier to read and we don't take as much space.
Reviewed By: quark-zju
Differential Revision: D49330148
fbshipit-source-id: f907f8c7e3c1d59cb76bb223851b784bace93c58
Summary:
Actually store the config state for whether you want to see the stack submit confirmation modal.
We do this with our normal persist effect.
I was a little back and forth on whether this should be the positive "show confirmation" or the negative "don't show confirmation". I opted for the setting to be positive, but show the negative in the modal. Somehow that makes more sense to me.
Reviewed By: quark-zju
Differential Revision: D49330149
fbshipit-source-id: 7601aa3b979a460ffd80704dbb8010197690bbe3
Summary:
Add an interstitial modal which lets you choose if you want to submit as a draft or provide an update message.
We also let you choose not to show this message.
Reviewed By: quark-zju
Differential Revision: D49330147
fbshipit-source-id: bdd728ba3f0c853ac61ab415166adad3c9a12e66
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