coder / coder/internal

Git Flow: coder/coder: implement endpoint to query branches from git remote

Offen
#405 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
s
Vorherrschende Sprache
Keine Sprachdaten
Sterne
3
Forks
0
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Related to https://github.com/coder/internal/issues/404

In order to improve usability of Git repos, we want to have a way to quickly signal to the user if
- a Git repo they attempt to clone does not exist,
- the branch of the repo they attempted to clone does not exist,
- the user does not have the permission to clone the remote repo

Currently this is only detected when building the workspace, but ideally we should detect this up-front while the user is creating a workspace.

Add an endpoint in `coderd` to query a remote Git repo and return the list of branches on the remote:

```
GET /api/v2/users/{user}/git_repo/branches?repo={repo}&provider={provider_id}
```

* `git_repo` (required) should be the git URL of a remote repo to be queried
* If `provider` is set, authenticate with the provider using the logged in user's OAuth2 credentials. Otherwise assume no authentication.

Implementation notes:

* To query the remote branches, we can use an approach similar to `https://github.com/go-git/go-git/blob/main/_examples/ls-remote/main.go`
* We can also perform a basic syntax check of the Git repo URL using e.g. [github.com/chainguard-dev/git-urls](https://pkg.go.dev/github.com/chainguard-dev/git-urls). We should only warn and not block if the URL syntax appears incorrect; the likelihood of false positives is non-zero.
* Success criterion: we should be able to list remote branches of both Linux and Chromium without exploding 🙈

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne beim coderd API-Routing für den vorgeschlagenen Endpunkt GET /api/v2/users/{user}/git_repo/branches und lies anschließend das go-git ls-remote-Beispiel sowie die Hinweise zum Paket git-urls. Implementiere die nicht authentifizierten Fälle und die OAuth2-Fälle des Providers und überprüfe, dass Remote-Branches für Linux- und Chromium-Repositories aufgelistet werden können.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
git, go
Bereich
api, authentication, backend
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.