ZIm/crates/collab/src
Kirill Bulatov 0199eca289
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
2025-01-18 22:57:17 +02:00
..
api Allow filling co-authors in the git panel's commit input (#23329) 2025-01-18 22:57:17 +02:00
bin windows: Make collab run on Windows (#23117) 2025-01-17 09:39:13 +02:00
db Allow filling co-authors in the git panel's commit input (#23329) 2025-01-18 22:57:17 +02:00
llm Check for predict-edits feature flag, remove is_staff check (#23165) 2025-01-15 13:52:10 +00:00
rpc Remove dev servers (#19638) 2024-10-24 12:14:03 -06:00
tests Allow filling co-authors in the git panel's commit input (#23329) 2025-01-18 22:57:17 +02:00
api.rs Allow filling co-authors in the git panel's commit input (#23329) 2025-01-18 22:57:17 +02:00
auth.rs Allow filling co-authors in the git panel's commit input (#23329) 2025-01-18 22:57:17 +02:00
cents.rs Send llm events to snowflake too (#21091) 2024-11-22 20:40:39 -07:00
completion.rs Supermaven (#10788) 2024-05-03 12:50:42 -07:00
db.rs Represent git statuses more faithfully (#23082) 2025-01-16 00:01:38 +00:00
env.rs collab: Add support for reading boolean values from .env.toml (#16317) 2024-08-15 17:07:17 -04:00
errors.rs Remove more unused code related to GitHub auth and errors 2022-04-21 08:57:49 -06:00
executor.rs Remove 2 suffix for collab, rope, settings, menu 2024-01-03 12:29:16 -08:00
lib.rs Stop sending data to Clickhouse (#21763) 2024-12-10 08:47:29 -07:00
llm.rs Timeout if completion takes longer than 2s (#23215) 2025-01-16 11:13:25 +01:00
main.rs Fix crash in collab when sending worktree updates (#19678) 2024-10-24 15:57:24 +02:00
migrations.rs collab: Remove unused parameter to run_database_migrations (#15883) 2024-08-06 17:31:52 -04:00
rate_limiter.rs Allow filling co-authors in the git panel's commit input (#23329) 2025-01-18 22:57:17 +02:00
rpc.rs Allow filling co-authors in the git panel's commit input (#23329) 2025-01-18 22:57:17 +02:00
seed.rs Allow filling co-authors in the git panel's commit input (#23329) 2025-01-18 22:57:17 +02:00
stripe_billing.rs collab: Anchor new subscription's billing cycle to the first of the month (#19367) 2024-10-17 10:18:12 -04:00
tests.rs Use LiveKit's Rust SDK on Linux while continue using Swift SDK on Mac (#21550) 2024-12-05 15:06:17 -08:00
user_backfiller.rs Allow filling co-authors in the git panel's commit input (#23329) 2025-01-18 22:57:17 +02:00