Lewati ke konten utama

Git Credentials

Git Credential Policy

Stable

Pertahankan native Git sebagai otoritas dan sediakan external HTTPS token untuk push container secara opsional.

Command[tool.custy.git.credentials]

Category

Git Configuration

Quick Command

[tool.custy.git.credentials]

native firstexternal secretsDocker

Terminal
toml
[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

PropertyTypeDescriptionDefaultRequired
modenative | autonative menonaktifkan fallback Custy. auto mengizinkan enabled sources setelah normal Git authentication.nativeNo
container_onlyBooleanBatasi managed fallback ke container agar local credential-manager session tidak berubah.trueNo
source_orderString arrayCari missing sources secara berurutan. Malformed source yang ada menghasilkan error.[file, environment]No
interactive_fallbackBooleanIzinkan normal username/PAT prompt dari Git saat interactive terminal tersedia dan managed token tidak ditemukan.trueNo
fail_non_interactiveBooleanNonaktifkan terminal prompt ketika tidak dapat dijawab agar CI dan detached container tidak hang.trueNo

Provider Properties

Properties

PropertyTypeDescriptionDefaultRequired
enabledBooleanOpt-in satu supported provider ke managed fallback.falseNo
usernameStringNon-secret HTTPS username. Default x-access-token untuk GitHub dan oauth2 untuk GitLab.Provider defaultNo
token_filePath stringExternal filename di credential root atau approved absolute path di luar target project.github.token / gitlab.tokenNo
token_envEnvironment nameVariable dibaca hanya saat environment ada di source_order dan provider fallback aktif.CUSTY_GITHUB_TOKEN / CUSTY_GITLAB_TOKENNo

Behavior matrix

modecontainer_onlyLocal executionContainer execution
nativetrue atau falseNative Git onlyNative Git only
autotrueNative Git onlyNative Git, lalu enabled fallback
autofalseNative Git, lalu enabled fallbackNative Git, lalu enabled fallback

External credential root

RuntimeDefault
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:

Terminal
bash
-v "%LOCALAPPDATA%Custycredentials:/run/secrets/custy"
Host pathContainer pathArti
%LOCALAPPDATA%\Custy\credentials\github.token/run/secrets/custy/github.tokenMounted GitHub token file yang sama
%LOCALAPPDATA%\Custy\credentials\gitlab.token/run/secrets/custy/gitlab.tokenMounted 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

ColumnArti
EnabledProvider policy yang disimpan dalam config.toml milik project
Token fileAvailability dan validation external file pada process ini
EnvironmentAvailability 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 stateBehavior
Valid file ditemukan lebih duluGunakan file; environment variable yang tidak ada tidak relevan
File missing, environment availableLanjut ke environment source
Tidak ada managed source, interactive TTY diizinkanBerikan terminal ke native Git untuk username/PAT atau SSH prompt
Tidak ada managed source dan tidak ada usable TTYGagal tanpa menunggu saat fail_non_interactive = true
Existing source malformedBerhenti dengan actionable validation error

Resolution Rules

  1. Dry-run berhenti sebelum token read atau remote contact.
  2. native mode berhenti pada normal Git/SSH behavior.
  3. container_only = true menonaktifkan managed fallback di luar container.
  4. Hanya exact supported HTTPS hosts yang eligible.
  5. Existing Git helpers berjalan sebelum per-command Custy helper.
  6. Missing file mencoba source berikutnya; invalid existing source berhenti.
  7. Interactive prompt dapat tetap tersedia. Custy memberikan direct terminal ownership kepada Git agar prompt tetap terlihat dan dapat digunakan.
  8. Non-interactive execution gagal alih-alih hang saat safeguard diaktifkan.

Lanjutkan