Skip to content

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

@johnstcn

Description

@johnstcn

Related to #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. 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 🙈

Metadata

Metadata

Assignees

No one assigned

    Labels

    sestimated at 1-2 days of work

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions