Git Credentials
Git Credential Policy
Pertahankan native Git sebagai otoritas dan sediakan external HTTPS token untuk push container secara opsional.
[tool.custy.git.credentials]Category
Quick Command
[tool.custy.git.credentials]Recommended configuration
[tool.custy.git.credentials]
mode = "native"
container_only = true
source_order = ["file", "environment"]
interactive_fallback = true
fail_non_interactive = true
[tool.custy.git.credentials.github]
enabled = false
username = "x-access-token"
token_file = "github.token"
token_env = "CUSTY_GITHUB_TOKEN"
[tool.custy.git.credentials.gitlab]
enabled = false
username = "oauth2"
token_file = "gitlab.token"
token_env = "CUSTY_GITLAB_TOKEN"Policy Properties
Properties
| Property | Type | Description | Default | Required |
|---|---|---|---|---|
mode | native | auto | native menonaktifkan fallback Custy. auto mengizinkan enabled sources setelah normal Git authentication. | native | No |
container_only | Boolean | Batasi managed fallback ke container agar local credential-manager session tidak berubah. | true | No |
source_order | String array | Cari missing sources secara berurutan. Malformed source yang ada menghasilkan error. | [file, environment] | No |
interactive_fallback | Boolean | Izinkan normal username/PAT prompt dari Git saat interactive terminal tersedia dan managed token tidak ditemukan. | true | No |
fail_non_interactive | Boolean | Nonaktifkan terminal prompt ketika tidak dapat dijawab agar CI dan detached container tidak hang. | true | No |
Provider Properties
Properties
| Property | Type | Description | Default | Required |
|---|---|---|---|---|
enabled | Boolean | Opt-in satu supported provider ke managed fallback. | false | No |
username | String | Non-secret HTTPS username. Default x-access-token untuk GitHub dan oauth2 untuk GitLab. | Provider default | No |
token_file | Path string | External filename di credential root atau approved absolute path di luar target project. | github.token / gitlab.token | No |
token_env | Environment name | Variable dibaca hanya saat environment ada di source_order dan provider fallback aktif. | CUSTY_GITHUB_TOKEN / CUSTY_GITLAB_TOKEN | No |
Behavior matrix
mode | container_only | Local execution | Container execution |
|---|---|---|---|
native | true atau false | Native Git only | Native Git only |
auto | true | Native Git only | Native Git, lalu enabled fallback |
auto | false | Native Git, lalu enabled fallback | Native Git, lalu enabled fallback |
External credential root
| Runtime | Default |
|---|---|
| Windows | %LOCALAPPDATA%\Custy\credentials |
| Linux | $XDG_DATA_HOME/custy/credentials atau ~/.local/share/custy/credentials |
| Docker | /run/secrets/custy |
CUSTY_CREDENTIALS_DIR mengubah root. Relative override di-resolve dari user
home, bukan proyek. Custy menolak path di dalam target project.
Docker Bind-Mount Mapping
Pada Windows CMD, argument berikut memetakan satu persistent host directory ke
credential root milik Custy di container:-v "%LOCALAPPDATA%Custycredentials:/run/secrets/custy"
| Host path | Container path | Arti |
|---|---|---|
%LOCALAPPDATA%\Custy\credentials\github.token | /run/secrets/custy/github.token | Mounted GitHub token file yang sama |
%LOCALAPPDATA%\Custy\credentials\gitlab.token | /run/secrets/custy/gitlab.token | Mounted GitLab token file yang sama |
Gunakan writable mount untuk configure credentials set. Tambahkan :ro untuk
status, testing, dan push setelah file tersedia. Tanpa mount ini,
/run/secrets/custy hanya berada di container dan dihapus bersama --rm
container.
Interpretasi Status
| Column | Arti |
|---|---|
Enabled | Provider policy yang disimpan dalam config.toml milik project |
Token file | Availability dan validation external file pada process ini |
Environment | Availability named token variable pada process ini |
Dua column terakhir menjelaskan alternative runtime sources. Contohnya,
Enabled: yes, Token file: valid, dan Environment: missing adalah healthy
file-backed configuration.
Runtime Source Behavior
| Runtime state | Behavior |
|---|---|
| Valid file ditemukan lebih dulu | Gunakan file; environment variable yang tidak ada tidak relevan |
| File missing, environment available | Lanjut ke environment source |
| Tidak ada managed source, interactive TTY diizinkan | Berikan terminal ke native Git untuk username/PAT atau SSH prompt |
| Tidak ada managed source dan tidak ada usable TTY | Gagal tanpa menunggu saat fail_non_interactive = true |
| Existing source malformed | Berhenti dengan actionable validation error |
Resolution Rules
- Dry-run berhenti sebelum token read atau remote contact.
nativemode berhenti pada normal Git/SSH behavior.container_only = truemenonaktifkan managed fallback di luar container.- Hanya exact supported HTTPS hosts yang eligible.
- Existing Git helpers berjalan sebelum per-command Custy helper.
- Missing file mencoba source berikutnya; invalid existing source berhenti.
- Interactive prompt dapat tetap tersedia. Custy memberikan direct terminal ownership kepada Git agar prompt tetap terlihat dan dapat digunakan.
- Non-interactive execution gagal alih-alih hang saat safeguard diaktifkan.