add: make warn_pathless_add() a no-op after first call
[gitweb.git] / Documentation / technical / api-credentials.txt
index adb6f0c8962377b3dc04fcdc948e40bfbd132a1b..516fda74120c18f4d124ee8e5402dda39b72777a 100644 (file)
@@ -7,9 +7,9 @@ world can take many forms, in this document the word "credential" always
 refers to a username and password pair).
 
 This document describes two interfaces: the C API that the credential
-subsystem provides to the rest of git, and the protocol that git uses to
+subsystem provides to the rest of Git, and the protocol that Git uses to
 communicate with system-specific "credential helpers". If you are
-writing git code that wants to look up or prompt for credentials, see
+writing Git code that wants to look up or prompt for credentials, see
 the section "C API" below. If you want to write your own helper, see
 the section on "Credential Helpers" below.
 
@@ -18,7 +18,7 @@ Typical setup
 
 ------------
 +-----------------------+
-| git code (C)          |--- to server requiring --->
+| Git code (C)          |--- to server requiring --->
 |                       |        authentication
 |.......................|
 | C credential API      |--- prompt ---> User
@@ -27,11 +27,11 @@ Typical setup
        | pipe |
        |      v
 +-----------------------+
-| git credential helper |
+| Git credential helper |
 +-----------------------+
 ------------
 
-The git code (typically a remote-helper) will call the C API to obtain
+The Git code (typically a remote-helper) will call the C API to obtain
 credential data like a login/password pair (credential_fill). The
 API will itself call a remote helper (e.g. "git credential-cache" or
 "git credential-store") that may retrieve credential data from a
@@ -42,7 +42,7 @@ contacting the server, and does the actual authentication.
 C API
 -----
 
-The credential C API is meant to be called by git code which needs to
+The credential C API is meant to be called by Git code which needs to
 acquire or store a credential. It is centered around an object
 representing a single credential and provides three basic operations:
 fill (acquire credentials by calling helpers and/or prompting the user),
@@ -177,14 +177,14 @@ int foo_login(struct foo_connection *f)
 Credential Helpers
 ------------------
 
-Credential helpers are programs executed by git to fetch or save
+Credential helpers are programs executed by Git to fetch or save
 credentials from and to long-term storage (where "long-term" is simply
-longer than a single git process; e.g., credentials may be stored
+longer than a single Git process; e.g., credentials may be stored
 in-memory for a few minutes, or indefinitely on disk).
 
 Each helper is specified by a single string in the configuration
 variable `credential.helper` (and others, see linkgit:git-config[1]).
-The string is transformed by git into a command to be executed using
+The string is transformed by Git into a command to be executed using
 these rules:
 
   1. If the helper string begins with "!", it is considered a shell
@@ -241,47 +241,14 @@ appended to its command line, which is one of:
        Remove a matching credential, if any, from the helper's storage.
 
 The details of the credential will be provided on the helper's stdin
-stream. The credential is split into a set of named attributes.
-Attributes are provided to the helper, one per line. Each attribute is
-specified by a key-value pair, separated by an `=` (equals) sign,
-followed by a newline. The key may contain any bytes except `=`,
-newline, or NUL. The value may contain any bytes except newline or NUL.
-In both cases, all bytes are treated as-is (i.e., there is no quoting,
-and one cannot transmit a value with newline or NUL in it). The list of
-attributes is terminated by a blank line or end-of-file.
-
-Git will send the following attributes (but may not send all of
-them for a given credential; for example, a `host` attribute makes no
-sense when dealing with a non-network protocol):
-
-`protocol`::
-
-       The protocol over which the credential will be used (e.g.,
-       `https`).
-
-`host`::
-
-       The remote hostname for a network credential.
-
-`path`::
-
-       The path with which the credential will be used. E.g., for
-       accessing a remote https repository, this will be the
-       repository's path on the server.
-
-`username`::
-
-       The credential's username, if we already have one (e.g., from a
-       URL, from the user, or from a previously run helper).
-
-`password`::
-
-       The credential's password, if we are asking it to be stored.
+stream. The exact format is the same as the input/output format of the
+`git credential` plumbing command (see the section `INPUT/OUTPUT
+FORMAT` in linkgit:git-credential[7] for a detailed specification).
 
 For a `get` operation, the helper should produce a list of attributes
 on stdout in the same format. A helper is free to produce a subset, or
 even no values at all if it has nothing useful to provide. Any provided
-attributes will overwrite those already known about by git.
+attributes will overwrite those already known about by Git.
 
 For a `store` or `erase` operation, the helper's output is ignored.
 If it fails to perform the requested operation, it may complain to