mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-09-06 15:39:07 +00:00
1bcf7b5f36
A Git host throttle response (a 429, or a sideband message naming a rate limit or abuse-detection mechanism) previously fell through to AUTH_FAILED or a generic GIT_ERROR depending on the host's exact wording, telling the operator to check a credential that was never the problem. Adds RATE_LIMITED to the transport-facing error model, mapped to HTTP 429, checked ahead of the auth-shaped branches in classifyGitFailure. Proven against a real git binary: git's smart-HTTP client never surfaces the HTTP response body in stderr, only the status line, so a host that throttles via a bare 403 stays indistinguishable from a rejected credential and correctly classifies as AUTH_FAILED; only an explicit 429, or a sideband remote: message naming the throttle, classifies as RATE_LIMITED.
82 lines
5.9 KiB
Plaintext
82 lines
5.9 KiB
Plaintext
---
|
|
title: Git Transport Support
|
|
sidebarTitle: Transport Support
|
|
description: Which transports, reference types, authentication methods, and Git hosts Git Sources supports, with the evidence behind each claim.
|
|
---
|
|
|
|
<Note>
|
|
Git Sources, and everything on this page, is available on every tier, including Community.
|
|
</Note>
|
|
|
|
This page states exactly what Git Sources supports today: which transports, reference types, authentication methods, TLS trust modes, and Git hosts, and what happens where a combination is not supported or not yet verified. For how to configure a Git source, see [Git Sources](/features/git-sources).
|
|
|
|
Every "Supported" row here is backed by a test that runs on every change to Sencho, or by a dated pass against a real instance of that host. A row marked "Not yet verified" is not a claim of failure: it means that specific combination has not been exercised yet, so it is not advertised as working. Nothing on this page is inferred from a related combination that behaved correctly.
|
|
|
|
<!-- GENERATED:BEGIN (run `npm run matrix:render` in backend/ to regenerate, do not edit by hand) -->
|
|
|
|
## Transports
|
|
|
|
| Transport | Status | Notes |
|
|
| --- | --- | --- |
|
|
| HTTPS | Supported | Personal Access Token for private repositories, or no credential at all for public ones. TLS verification uses the system trust store by default, or a per-source custom CA when configured. |
|
|
| SSH | Supported | A read-only deploy key with strict host-key verification. Standard (22) and nonstandard ports are both supported. |
|
|
|
|
## Reference types
|
|
|
|
| Reference type | Status | Notes |
|
|
| --- | --- | --- |
|
|
| Branch | Supported | Tracks the head of a branch; each pull resolves and pins the exact commit. |
|
|
| Tag | Supported | Both annotated and lightweight tags resolve to their target commit. |
|
|
| Commit SHA | Supported | A full commit SHA is pinned directly; the Git host must advertise the commit on some branch or tag. |
|
|
|
|
## Authentication
|
|
|
|
| Method | Status | Notes |
|
|
| --- | --- | --- |
|
|
| Public (no auth) | Supported | For public repositories. |
|
|
| Personal Access Token | Supported | Stored encrypted at rest, never returned after save. |
|
|
| SSH deploy key | Supported | Stored encrypted at rest; the server host key is verified on every fetch. |
|
|
|
|
## Git hosts
|
|
|
|
| Host | HTTPS | SSH | Branch | Tag | Commit SHA | Evidence |
|
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
| Generic (self-hosted or any Git server) | Supported | Supported | Supported | Supported | Supported | Automated, every change |
|
|
| GitHub | Supported | Not yet verified | Supported | Not yet verified | Supported | Live, 2026-09-01 |
|
|
| GitLab | Supported | Not yet verified | Supported | Supported | Supported | Live, 2026-09-01 |
|
|
| Gitea | Supported | Supported | Supported | Supported | Supported | Live, 2026-09-01 |
|
|
| Forgejo | Supported | Supported | Supported | Supported | Supported | Live, 2026-09-01 |
|
|
| Bitbucket | Supported | Not yet verified | Supported | Not yet verified | Supported | Live, 2026-09-01 |
|
|
|
|
## TLS and certificate authorities
|
|
|
|
| Mode | Status | Notes |
|
|
| --- | --- | --- |
|
|
| System trust (default) | Supported | The host running the fetch trusts its system certificate store. |
|
|
| Per-source custom CA | Supported | Combined with the system trust anchors, so public hosts keep validating normally. Redirects are re-resolved and only followed when they stay on the source's own host. |
|
|
|
|
## Not supported
|
|
|
|
- **No Git LFS.** Compose and env files tracked via Git LFS are rejected rather than silently fetched as pointer stubs. Commit plain files instead.
|
|
- **No submodules.** Submodule contents are not fetched. Inputs and build contexts that reference submodule contents are refused with an actionable message; a warning is shown when .gitmodules is present.
|
|
- **No sparse or partial clone.** Every fetch materializes the complete repository at the resolved commit (shallow, single-branch); there is no sparse or partial clone for large monorepos.
|
|
- **No GitHub App authentication.** Authentication is Personal Access Token or SSH deploy key only. GitHub App installation tokens are not supported.
|
|
- **No provider pull/merge request revisions.** Sources track a branch, a tag, or a pinned commit SHA. A provider-specific pull request or merge request revision (for example GitHub's refs/pull/N/head) is not a supported ref shape.
|
|
- **Outbound target restrictions.** Repository targets that resolve to loopback, link-local, multicast, or selected special-use addresses are refused before any request is sent. Private hosts on an operator's own LAN or VPN are not affected by this restriction.
|
|
- **Branch/tag name collisions.** A bare ref name resolves as a branch first, then as a tag. If an operator renames a branch and a tag of the same name later appears, the source silently starts resolving the tag instead. A ref name that is also a valid 40 or 64 character hex string resolves as a commit SHA before either lookup.
|
|
|
|
<!-- GENERATED:END -->
|
|
|
|
## How these claims are verified
|
|
|
|
Two kinds of evidence back the rows above:
|
|
|
|
- **Automated.** A real `git` client, talking to a real local test server over HTTPS or SSH, drives the exact same code path Sencho uses in production. These tests run on every change, so a regression here fails the build before it reaches a release.
|
|
- **Live.** A dated pass against a real instance of the named host (a public GitHub, GitLab, Gitea, Forgejo, or Bitbucket repository, or a self-hosted instance under Sencho's control). This is repeated periodically, not on every change, so its date tells you how current the result is.
|
|
|
|
A host that is not listed, or a combination marked "Not yet verified," most likely still works: Git Sources speaks the standard Git smart-HTTP and SSH protocols, not anything host-specific. It simply has not been exercised as its own row yet.
|
|
|
|
<Card title="Git Sources" icon="code-branch" href="/features/git-sources">
|
|
Configure a repository, review pull previews, and read the field-by-field reference for every setting mentioned above.
|
|
</Card>
|