Commit Graph
886 Commits
Author SHA1 Message Date
Nathan SoboandMax Brunsfeld 2115d0b0cf Process remote worktree updates in the background
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2021-07-05 14:20:53 -06:00
Nathan SoboandMax Brunsfeld b01c4200a9 Start on applying remote worktree updates in the background
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2021-07-05 13:44:42 -06:00
Antonio Scandurra 376a584cb8 Propagate file system changes to remote worktrees 2021-07-05 17:54:48 +02:00
Antonio Scandurra 4fc4910991 Rename {Add,Remove}Guest to {Add,Remove}Peer 2021-07-05 10:24:39 +02:00
Antonio Scandurra a946be0fbd Expose Client::disconnect to force disconnection 2021-07-05 10:18:12 +02:00
Max Brunsfeld 472ac4c32f Avoid deadlocks on rpc state by switching to an RwLock 2021-07-02 15:55:16 -07:00
Max Brunsfeld 2508e06aba Implement Copy for peer::Receipt 2021-07-02 15:54:42 -07:00
Max Brunsfeld fc9ea8a81d Avoid circular model update in save_buffer handler 2021-07-02 15:53:45 -07:00
Max Brunsfeld 2abe443430 Construct remote worktree snapshots in the background 2021-07-02 15:22:58 -07:00
Antonio Scandurra 5da2650bde WIP: Save remote buffers 2021-07-02 17:02:17 +02:00
Antonio Scandurra bfb67e197c Fix tests 2021-07-02 15:18:08 +02:00
Antonio Scandurra 3e0e1ec1f5 Send also the currently active selection sets when serializing a buffer 2021-07-02 11:29:36 +02:00
Max Brunsfeld 3e359a06ab Serialize RPC sends and responses using a channel 2021-07-01 22:02:27 -07:00
Max BrunsfeldandNathan Sobo cebf64172d Avoid spurious error logging when host edits buffers not open by guests
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-01 11:23:51 -07:00
Antonio ScandurraandNathan Sobo 95ebf2da86 Fix memory leak of Editor due to blinking cursors
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-07-01 15:57:17 +02:00
Antonio Scandurra f1b948cc43 Report SelectionSet deletion operations correctly 2021-07-01 12:54:16 +02:00
Antonio Scandurra 25637cba98 Start on rendering remote selections 2021-07-01 11:21:43 +02:00
Antonio Scandurra f51b978ae4 Expose Worktree::{peers,replica_id} 2021-07-01 09:36:09 +02:00
Antonio Scandurra d2391ebea2 Send a CloseWorktree message when a shared Worktree is dropped 2021-06-30 17:00:29 +02:00
Antonio Scandurra 469cd5e732 Store online peers when joining a worktree 2021-06-30 15:07:33 +02:00
Antonio Scandurra c6e78d4bd6 Maintain a set of peers as they join and leave the worktree 2021-06-30 13:22:22 +02:00
Antonio Scandurra d7d83f640e Avoid logging errors in RPC message handlers
The `on_message` helper already logs when an error occurs.
2021-06-30 12:05:58 +02:00
Antonio Scandurra 378465b1b8 💄 2021-06-30 12:00:13 +02:00
Antonio Scandurra a8b155dffc Move remote::update_buffer main logic into Worktree::update_buffer 2021-06-30 11:57:05 +02:00
Nathan Sobo b754d628b6 Store shared buffers on LocalWorktree
It's okay for our domain objects to model remote state. We should minimize what we need to store in the rpc::ClientState struct.
2021-06-29 21:01:43 -06:00
Nathan Sobo 40a86d0d4a Store a reference to the LangageRegistry on the Worktree 2021-06-29 20:07:37 -06:00
d18e78edc7 Use entry_id on File instead of worktree::Diff to detect when buffers' files change
Rather than computing a diff after processing a batch of FSEvents, we instead detect renames as we're inserting entries. We store an entry_id on the File object that is owned by each buffer, and use this to detect when the path of the File has changed.

We now also manage all File-related state and event emission for Buffers in the LocalWorktree, since the logic will need to be totally different in the remote case.

Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-06-29 18:19:38 -06:00
Antonio Scandurra ee884b25cc Merge branch 'main' into rpc 2021-06-29 10:25:42 +02:00
Nathan Sobo f5671b79ad Redesign Worktree save API and make test_rescan_simple pass
This commit does too much. The first goal was to change our approach to saving new buffers so that we don't need to construct a File for an entry that doesn't exist. Rather than doing that, we call `Worktree::save_buffer_as` with the buffer handle, the path, and the contents. This then saves the buffer and returns a handle to a `File` that references an entry that actually exists. I needed to do this so that we can store an entry id on `File`.

In the process, I noticed intermittent test failures on `test_rescan_simple`, so I made some changes required to fix those related to our reuse of existing ids. Our previous approach of removing a path when inserting a new entry was broken, because of the recursive nature of `remove_path`. Instead, I simply recycle the id of an existing worktree entry with the same path if one is present, then allow it to be replaced.
2021-06-28 19:05:38 -06:00
Nathan SoboandAntonio Scandurra 165ac10d84 Eagerly populate worktree entries on load
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-06-28 12:29:46 -06:00
Antonio ScandurraandNathan Sobo f60a54940a Assign a stable identity to Worktree entries
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-06-28 19:41:33 +02:00
Antonio Scandurra 44273a8153 Restructure RPC state to also keep track of remote worktrees on guests 2021-06-28 15:35:36 +02:00
Antonio Scandurra 97d22397fb Maintain active selections as editors are focused and blurred 2021-06-28 12:37:58 +02:00
Antonio Scandurra 69b68545ba Remove selection set when an editor is closed 2021-06-28 11:43:21 +02:00
Max Brunsfeld 00887978c5 Avoid double handle-read in File::buffer_updated 2021-06-25 17:21:42 -07:00
Max Brunsfeld a87ce7ba29 Always represent anchor as a versioned offset
Remove the `Start` and `End` variants, and always
use the structure that was previously called `Middle`.
This makes Anchors simpler to serialize and deserialize.
2021-06-25 17:02:48 -07:00
Max BrunsfeldandNathan Sobo 48e8f4c169 Send and receive buffer operations
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-06-25 16:26:35 -07:00
Max Brunsfeld ef9ba32688 Start work on sending buffer operations 2021-06-25 13:46:36 -07:00
Nathan SoboandMax Brunsfeld 16a7034303 Notify host when guests close buffers
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2021-06-25 11:33:40 -07:00
Nathan SoboandMax Brunsfeld 6db1d090b2 Add Entity release hooks
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2021-06-25 10:35:06 -06:00
Antonio Scandurra 50731eb075 Move remote module from workspace to worktree 2021-06-25 12:14:04 +02:00
Nathan Sobo fe0e37064e Merge pull request #97 from zed-industries/limit-bundle-uploads
Only upload artifacts to workflow runs on the main branch
2021-06-24 19:07:04 -06:00
Nathan Sobo 9b400a1173 Only upload artifacts to workflow runs on the main branch
We're running out of actions storage, and we don't really need an artifact stored for every single build.
2021-06-24 19:02:57 -06:00
Nathan Sobo 48d24b7441 Merge pull request #96 from zed-industries/retry-flaky-tests
Add a "retries" option to gpui::test macro and use it in flaky tests
2021-06-24 18:08:06 -06:00
Nathan Sobo 4bd8b64746 Upgrade bindgen to fix warnings on new Rust 2021-06-24 18:02:53 -06:00
Nathan Sobo d67b451284 Add a "retries" option to gpui::test macro and use it in flaky tests 2021-06-24 17:51:16 -06:00
Antonio Scandurra 7677e38cff Allow cleaning up connections/handlers state using Peer::reset 2021-06-24 15:58:43 +02:00
Max Brunsfeld 258154b15f Consolidate more logic for joining worktree in Worktree::remote
This way we can use this method in tests and avoid
needing to construct a Workspace.
2021-06-23 18:07:09 -07:00
Max BrunsfeldandNathan Sobo d88896380d Add public method for connecting to RPC server with a given address
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-06-23 18:05:03 -07:00
Max BrunsfeldandNathan Sobo 9b2a5bee5e Fix last usage of App::test_async in one test
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-06-23 18:05:03 -07:00