Commit Graph
214 Commits
Author SHA1 Message Date
Max BrunsfeldandNathan Sobo 55fcc586bc Cancel outstanding fuzzy-matching calls before starting a new one
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-04-26 16:14:43 -07:00
Max Brunsfeld 733dc15c32 Ignore .git directories 2021-04-26 15:46:06 -07:00
Max Brunsfeld e7c594262f Fix handling of uppercase characters in fuzzy finding 2021-04-26 15:04:26 -07:00
Nathan Sobo 870925e2ac Rerender tabs when buffers' file handles change
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-04-26 14:16:35 -07:00
Max BrunsfeldandNathan Sobo 9753e67410 Update filehandle paths when renames occur
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-04-26 12:56:13 -07:00
6535304da8 WIP: Start on updating file handles
Co-Authored-By: Max Brunsfeld <max@zed.dev>
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-04-26 20:10:15 +02:00
Antonio Scandurra 111d98d6c1 Keep ignore status up-to-date as events are processed 2021-04-26 17:55:18 +02:00
Nathan Sobo f770a70929 WIP: Maintain an IgnoreStack while scanning
All ignore files associated with ancestors of the directory currently being scanned are included in the stack. This allows us to compute ignore status for each entry as we initially scan it. If we encounter an ignored directory, we replace the stack with an "ignore all" variant that simply ignores every descendant of the ignored directory.

This is incomplete. We still need to construct an ignore stack in an appropriate state when rescanning subtrees in response to events. It also doesn't deal with individual ignore files being added, removed, or changed. I think we could potentially use the ignore stack while reconstructing the tree for this purpose.
2021-04-24 23:59:03 -06:00
Antonio Scandurra 9cd1d5e607 Avoid cloning entry in Snapshot::entry_for_path 2021-04-24 10:14:17 +02:00
Max BrunsfeldandNathan Sobo 6a7308b87a Avoid storing redundant copies of file paths
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-04-23 21:17:26 -07:00
Max BrunsfeldandNathan Sobo 054203d21c Fix fuzzy matching after removing root dirname from stored paths
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-04-23 15:22:47 -07:00
Nathan SoboandMax Brunsfeld dced9469f5 WIP
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2021-04-23 12:47:23 -06:00
Nathan SoboandMax Brunsfeld c9d7249305 WIP
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2021-04-23 11:37:23 -06:00
Antonio ScandurraandNathan Sobo ec2e1c3045 Rename PathSearch::Sibling to PathSearch::Successor
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-04-23 17:15:04 +02:00
Antonio Scandurra 8f2fc079fd Restructure Worktree to index entries by path 2021-04-23 15:25:59 +02:00
Max BrunsfeldandNathan Sobo ae5f02d2e9 Use getmntinfo(3) to list mounted volumes
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-04-22 15:41:03 -07:00
Max BrunsfeldandNathan Sobo b37b047400 Start work on excluding separate mount dirs
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-04-22 14:11:46 -07:00
Max BrunsfeldandNathan Sobo 3e44a0adae Avoid redundant clearing of descendants when scanning dirs
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-04-22 10:30:47 -07:00
b2e7a2c42a Log when there's an error while scanning a directory
Co-Authored-By: Max Brunsfeld <max@zed.dev>
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-04-22 19:15:37 +02:00
99f51c0d85 Simulate .gitignores in the randomized test
Co-Authored-By: Max Brunsfeld <max@zed.dev>
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-04-22 18:57:46 +02:00
928ce0eec8 Clear descendants of existing children when scanning a directory
Co-Authored-By: Max Brunsfeld <max@zed.dev>
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-04-22 18:42:11 +02:00
Antonio Scandurra 9723e46af4 Replace linear scan of entries with a custom FileIter 2021-04-22 17:29:36 +02:00
Antonio Scandurra c429a937be Remove is_ignored from PathEntry and lean more on the tree instead 2021-04-22 16:49:11 +02:00
Antonio Scandurra f3b663e375 Ignore .git folder 2021-04-22 16:48:13 +02:00
Antonio Scandurra 19a2856780 Let ignore edits batch naturally without imposing a max batch len 2021-04-22 16:47:41 +02:00
Antonio Scandurra af3bc236b7 Recompute ignore status when .gitignore changes or for new entries 2021-04-22 15:14:23 +02:00
Max Brunsfeld 499e55e950 Start work on handling changes to gitignore files
* Use the published ignore crate
* Store ignore objects on snapshot, and use them to compute
  files' ignored status dynamically, instead of storing the
  ignored status on the file.
2021-04-21 18:11:52 -07:00
Max Brunsfeld 427930cd8a wip - gitignore handling on rescan 2021-04-21 12:30:30 -07:00
Max BrunsfeldandNathan Sobo 8e0ca2056e Store paths as strings on PathMatch structs
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-04-21 12:05:34 -07:00
Max BrunsfeldandNathan Sobo 955268e2a6 Check worktree invariants in randomized test
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-04-21 11:46:49 -07:00
Max BrunsfeldandNathan Sobo ce28dc39ff Fix missing insert in populate_dir
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-04-21 11:39:50 -07:00
Nathan SoboandMax Brunsfeld a898acf6b5 WIP
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2021-04-21 12:29:16 -06:00
Nathan SoboandMax Brunsfeld 56b48c8229 WIP: Establish new invariant-maintaining API for mutating worktree snapshots
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
2021-04-21 12:08:09 -06:00
Antonio ScandurraandNathan Sobo 031d5ac7d4 WIP
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-04-21 16:58:17 +02:00
Antonio Scandurra fd8125b22c Re-enable file finder test and bind menu:select-{next-prev} 2021-04-21 10:07:32 +02:00
Max BrunsfeldandNathan Sobo b20f5e9139 Fully halt background scanner threads when dropping Worktree
* Rework fsevent API to expose a handle for halting the event stream

Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-04-20 15:55:29 -07:00
Max Brunsfeld 9fd8acdce7 Use our own scoped_pool implementation 2021-04-20 14:07:36 -07:00
Max BrunsfeldandAntonio Scandurra 265ad90034 Stop processing events if root path is deleted
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-04-20 10:40:17 -07:00
Max BrunsfeldandAntonio Scandurra 85f8537017 Worktree: silence log message when dir is overwritten by file
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-04-20 10:12:48 -07:00
5cbbf620ed WIP
Co-Authored-By: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2021-04-20 10:59:12 -06:00
Antonio ScandurraandNathan Sobo ddd746b9f9 Use env_logger instead of simplelog in tests
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-04-20 17:34:14 +02:00
Antonio ScandurraandNathan Sobo 37444acc9c Time out condition after 200ms and add basic unit tests for it
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2021-04-20 17:21:29 +02:00
Antonio Scandurra cd7dccd30c Replace remaining usages of finish_pending_tasks with condition 2021-04-20 12:28:30 +02:00
Antonio Scandurra ebb7124405 Use scan_complete and the new ModelHandle::condition test method 2021-04-20 11:48:12 +02:00
Antonio Scandurra d11d5483b6 Rework Worktree::scan_complete to use a watch 2021-04-20 11:24:46 +02:00
Nathan Sobo a4c1fe5a0b WIP: Add a condition method to model and view handles for use in tests
It returns a future that resolves when the provided predicate returns true. The predicate is called any time the handle's targeted entity calls notify.

Still need to add a timeout and completely remove finsih_pending_tasks.
2021-04-19 22:01:54 -06:00
Max Brunsfeld 69a43afcbd Add a method for waiting until a worktree's current scan is complete
Start removing usages of finish_pending_tasks in tests
2021-04-19 17:45:01 -07:00
Max Brunsfeld f27b01fcd5 Get all worktree tests passing
* Store non-canocalized path on worktree, but canonicalize it for the purpose of processing events
* Simplify rescan unit test
2021-04-19 14:11:55 -07:00
Max Brunsfeld f06164ade9 💄 process_events 2021-04-19 13:19:34 -07:00
Max Brunsfeld e44a59dc7d Worktree: handle files being renamed to overwrite dirs 2021-04-19 13:07:32 -07:00