Move git status out of Entry (#22224)
- [x] Rewrite worktree git handling - [x] Fix tests - [x] Fix `test_propagate_statuses_for_repos_under_project` - [x] Replace `WorkDirectoryEntry` with `WorkDirectory` in `RepositoryEntry` - [x] Add a worktree event for capturing git status changes - [x] Confirm that the local repositories are correctly updating the new WorkDirectory field - [x] Implement the git statuses query as a join when pulling entries out of worktree - [x] Use this new join to implement the project panel and outline panel. - [x] Synchronize git statuses over the wire for collab and remote dev (use the existing `worktree_repository_statuses` table, adjust as needed) - [x] Only send changed statuses to collab Release Notes: - N/A --------- Co-authored-by: Cole Miller <cole@zed.dev> Co-authored-by: Mikayla <mikayla@zed.com> Co-authored-by: Nathan <nathan@zed.dev>
This commit is contained in:
parent
72057e5716
commit
9613084f59
57 changed files with 2824 additions and 1254 deletions
|
@ -9,6 +9,15 @@ struct StackEntry<'a, T: Item, D> {
|
|||
position: D,
|
||||
}
|
||||
|
||||
impl<'a, T: Item + fmt::Debug, D: fmt::Debug> fmt::Debug for StackEntry<'a, T, D> {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
f.debug_struct("StackEntry")
|
||||
.field("index", &self.index)
|
||||
.field("position", &self.position)
|
||||
.finish()
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct Cursor<'a, T: Item, D> {
|
||||
tree: &'a SumTree<T>,
|
||||
|
@ -18,6 +27,21 @@ pub struct Cursor<'a, T: Item, D> {
|
|||
at_end: bool,
|
||||
}
|
||||
|
||||
impl<'a, T: Item + fmt::Debug, D: fmt::Debug> fmt::Debug for Cursor<'a, T, D>
|
||||
where
|
||||
T::Summary: fmt::Debug,
|
||||
{
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
f.debug_struct("Cursor")
|
||||
.field("tree", &self.tree)
|
||||
.field("stack", &self.stack)
|
||||
.field("position", &self.position)
|
||||
.field("did_seek", &self.did_seek)
|
||||
.field("at_end", &self.at_end)
|
||||
.finish()
|
||||
}
|
||||
}
|
||||
|
||||
pub struct Iter<'a, T: Item> {
|
||||
tree: &'a SumTree<T>,
|
||||
stack: ArrayVec<StackEntry<'a, T, ()>, 16>,
|
||||
|
@ -60,6 +84,7 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
/// Item is None, when the list is empty, or this cursor is at the end of the list.
|
||||
#[track_caller]
|
||||
pub fn item(&self) -> Option<&'a T> {
|
||||
self.assert_did_seek();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue