Allow filling co-authors in the git panel's commit input (#23329)
https://github.com/user-attachments/assets/78db908e-cfe5-4803-b0dc-4f33bc457840 * starts to extract usernames out of `users/` GitHub API responses, and pass those along with e-mails in the collab sessions as part of the `User` data * adjusts various prefill and seed test methods so that the new data can be retrieved from GitHub properly * if there's an active call, where guests have write permissions and e-mails, allow to trigger `FillCoAuthors` action in the context of the git panel, that will fill in `co-authored-by:` lines, using e-mail and names (or GitHub handle names if name is absent) * the action tries to not duplicate such entries, if any are present already, and adds those below the rest of the commit input's text Concerns: * users with write permissions and no e-mails will be silently omitted — adding odd entries that try to indicate this or raising pop-ups is very intrusive (maybe, we can add `#`-prefixed comments?), logging seems pointless * it's not clear whether the data prefill will run properly on the existing users — seems tolerable now, as it seems that we get e-mails properly already, so we'll see GitHub handles instead of names in the worst case. This can be prefilled better later. * e-mails and names for a particular project may be not what the user wants. E.g. my `.gitconfig` has ``` [user] email = mail4score@gmail.com # .....snip [includeif "gitdir:**/work/zed/**/.git"] path = ~/.gitconfig.work ``` and that one has ``` [user] email = kirill@zed.dev ``` while my GitHub profile is configured so, that `mail4score@gmail.com` is the public, commit e-mail. So, when I'm a participant in a Zed session, wrong e-mail will be picked. The problem is, it's impossible for a host to get remote's collaborator git metadata for a particular project, as that might not even exist on disk for the client. Seems that we might want to add some "project git URL <-> user name and email" mapping in the settings(?). The design of this is not very clear, so the PR concentrates on the basics for now. When https://github.com/zed-industries/zed/pull/23308 lands, most of the issues can be solved by collaborators manually, before committing. Release Notes: - N/A
This commit is contained in:
parent
ac214c52c9
commit
0199eca289
32 changed files with 215 additions and 14 deletions
|
@ -40,6 +40,15 @@ pub struct LocalParticipant {
|
|||
pub role: proto::ChannelRole,
|
||||
}
|
||||
|
||||
impl LocalParticipant {
|
||||
pub fn can_write(&self) -> bool {
|
||||
matches!(
|
||||
self.role,
|
||||
proto::ChannelRole::Admin | proto::ChannelRole::Member
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
pub struct RemoteParticipant {
|
||||
pub user: Arc<User>,
|
||||
pub peer_id: proto::PeerId,
|
||||
|
@ -57,4 +66,11 @@ impl RemoteParticipant {
|
|||
pub fn has_video_tracks(&self) -> bool {
|
||||
!self.video_tracks.is_empty()
|
||||
}
|
||||
|
||||
pub fn can_write(&self) -> bool {
|
||||
matches!(
|
||||
self.role,
|
||||
proto::ChannelRole::Admin | proto::ChannelRole::Member
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,6 +39,15 @@ pub struct LocalParticipant {
|
|||
pub role: proto::ChannelRole,
|
||||
}
|
||||
|
||||
impl LocalParticipant {
|
||||
pub fn can_write(&self) -> bool {
|
||||
matches!(
|
||||
self.role,
|
||||
proto::ChannelRole::Admin | proto::ChannelRole::Member
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct RemoteParticipant {
|
||||
pub user: Arc<User>,
|
||||
|
@ -57,4 +66,11 @@ impl RemoteParticipant {
|
|||
pub fn has_video_tracks(&self) -> bool {
|
||||
!self.video_tracks.is_empty()
|
||||
}
|
||||
|
||||
pub fn can_write(&self) -> bool {
|
||||
matches!(
|
||||
self.role,
|
||||
proto::ChannelRole::Admin | proto::ChannelRole::Member
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue