Add API for accessing git branch

Mikayla Maki created

Change summary

crates/gpui/src/elements/flex.rs |  4 ++++
crates/project/src/worktree.rs   | 16 ++++++++++++++++
2 files changed, 20 insertions(+)

Detailed changes

crates/gpui/src/elements/flex.rs 🔗

@@ -66,6 +66,10 @@ impl<V: View> Flex<V> {
         self
     }
 
+    pub fn is_empty(&self) -> bool {
+        self.children.is_empty()
+    }
+
     fn layout_flex_children(
         &mut self,
         layout_expanded: bool,

crates/project/src/worktree.rs 🔗

@@ -133,6 +133,10 @@ impl RepositoryEntry {
     pub(crate) fn in_dot_git(&self, path: &Path) -> bool {
         path.starts_with(self.git_dir_path.as_ref())
     }
+
+    pub fn branch(&self) -> Option<Arc<str>> {
+        self.branch.clone()
+    }
 }
 
 /// This path corresponds to the 'content path' (the folder that contains the .git)
@@ -160,6 +164,12 @@ impl Deref for RepositoryWorkDirectory {
     }
 }
 
+impl<'a> From<&'a str> for RepositoryWorkDirectory {
+    fn from(value: &'a str) -> Self {
+        RepositoryWorkDirectory(Path::new(value).into())
+    }
+}
+
 #[derive(Clone, Debug, Ord, PartialOrd, Eq, PartialEq)]
 pub struct RepoPath(PathBuf);
 
@@ -1443,6 +1453,12 @@ impl Snapshot {
         &self.root_name
     }
 
+    pub fn root_git_entry(&self) -> Option<RepositoryEntry> {
+        self.repository_entries
+            .get(&"".into())
+            .map(|entry| entry.to_owned())
+    }
+
     pub fn scan_id(&self) -> usize {
         self.scan_id
     }