git: Implement commit creation (#23263)

- [x] Basic implementation
- [x] Disable commit buttons when committing is not possible (empty
message, no changes)
- [x] Upgrade GitSummary to efficiently figure out whether there are any
staged changes
- [x] Make CommitAll work
- [x] Surface errors with toasts
  - [x] Channel shutdown
  - [x] Empty commit message or no changes
  - [x] Failed git operations
- [x] Fix added files no longer appearing correctly in the project panel
(GitSummary breakage)
- [x] Fix handling of commit message

Release Notes:

- N/A

---------

Co-authored-by: Nate <nate@zed.dev>
This commit is contained in:
Cole Miller
2025-01-17 18:51:20 +00:00
committed by GitHub
co-authored by Nate
parent 3767e7e5f0
commit 5da67899b7
10 changed files with 387 additions and 198 deletions
+4
View File
@@ -231,6 +231,10 @@ impl RepositoryEntry {
self.statuses_by_path.summary().item_summary.count
}
pub fn status_summary(&self) -> GitSummary {
self.statuses_by_path.summary().item_summary
}
pub fn status_for_path(&self, path: &RepoPath) -> Option<StatusEntry> {
self.statuses_by_path
.get(&PathKey(path.0.clone()), &())