pub struct Credential {
pub protocol: Option<String>,
pub host: Option<String>,
pub path: Option<String>,
pub username: Option<String>,
pub password: Option<String>,
pub url: Option<String>,
pub extra: Vec<(String, String)>,
}Expand description
A structured Git credential.
Mirrors the fields Git’s credential protocol exchanges. Round-trips through
the key=value\n…\n\n wire format via Credential::parse and
Credential::serialize. Any keys outside the named fields below
(capability[], authtype, password_expiry_utc, …) are preserved in
extra so they survive a parse/serialize round-trip
and are forwarded to helpers unchanged.
Fields§
§protocol: Option<String>protocol field (e.g. https, http, ssh).
host: Option<String>host field, optionally including a :port suffix.
path: Option<String>path field (repository path on the host).
username: Option<String>username field.
password: Option<String>password field (the secret).
url: Option<String>url field — a full URL Git can decompose into the fields above.
HelperCredentialProvider uses it to match credential.<url>.*
config (see target_url) and to fill a
missing protocol/host, but never writes it to a helper: helpers such as
git-credential-store would otherwise key the lookup on its path.
extra: Vec<(String, String)>Any additional key=value pairs, in wire order. Multi-valued keys such
as capability[] may appear more than once.
Implementations§
Source§impl Credential
impl Credential
Sourcepub fn parse(input: &str) -> Self
pub fn parse(input: &str) -> Self
Parse a credential from Git’s key=value\n… wire format.
Parsing stops at the first blank line (Git’s record terminator) or at
EOF. Trailing \r is stripped from each line so the parser accepts both
LF and CRLF input. Lines without an = are ignored.
Sourcepub fn from_url(url: &str, config: &ConfigSet) -> Option<Self>
pub fn from_url(url: &str, config: &ConfigSet) -> Option<Self>
The credential Git requests for the repository at url.
protocol and host (with any :port) come from url, and
url keeps url itself so credential.<url>.*
config still matches on the full repository path. For http and
https the path is only included when credential.useHttpPath
applies to url, so one host-level entry (as written by
git-credential-store or a keychain helper) serves every repository on
the host. Other protocols always carry the path. The path is
percent-decoded and has surrounding slashes removed, as in Git.
A user[:password]@ in the URL becomes the percent-decoded
username and
password, so a URL with both is already
complete and a username-only URL is only asked for its password. The
stored url has the userinfo removed, so the secret
never reaches config matching or messages built from it.
Pass the repository URL (https://host/owner/repo.git), not a
smart-HTTP request URL with /info/refs and a query appended.
§Returns
None when url does not parse or has no host.
Sourcepub fn parse_bytes(bytes: &[u8]) -> Self
pub fn parse_bytes(bytes: &[u8]) -> Self
Parse from raw bytes (lossy UTF-8); convenience for helper stdout.
Sourcepub fn serialize(&self) -> String
pub fn serialize(&self) -> String
Serialize to Git’s key=value\n wire format (no trailing blank line).
Fields are emitted in Git’s canonical order
(protocol, host, path, username, password, url) followed by any
extra entries in their stored order.
Sourcepub fn is_complete(&self) -> bool
pub fn is_complete(&self) -> bool
True when the credential carries a usable username and password.
Sourcepub fn target_url(&self) -> Option<String>
pub fn target_url(&self) -> Option<String>
The URL this credential authenticates against, for matching
credential.<url>.helper config entries. Prefers an explicit
url; otherwise reconstructs it from
protocol/host/path (matching Git’s credential_apply_config).
Trait Implementations§
Source§impl Clone for Credential
impl Clone for Credential
Source§impl Debug for Credential
impl Debug for Credential
Source§impl Default for Credential
impl Default for Credential
impl Eq for Credential
Source§impl PartialEq for Credential
impl PartialEq for Credential
impl StructuralPartialEq for Credential
Auto Trait Implementations§
impl Freeze for Credential
impl RefUnwindSafe for Credential
impl Send for Credential
impl Sync for Credential
impl Unpin for Credential
impl UnsafeUnpin for Credential
impl UnwindSafe for Credential
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.