Skip to content

Commit

Permalink
api-credentials.txt: show the big picture first
Browse files Browse the repository at this point in the history
The API documentation targets two kinds of developers: those using the
C API, and those writing remote-helpers. The document was not clear
about which part was useful to which category, and for example, the C API
could be mistakenly thought as an API for writting remote helpers.

Based-on-patch-by: Jeff King <peff@peff.net>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
moy authored and gitster committed Jun 4, 2012
1 parent dd4287a commit 2239888
Showing 1 changed file with 47 additions and 3 deletions.
50 changes: 47 additions & 3 deletions Documentation/technical/api-credentials.txt
Expand Up @@ -6,8 +6,52 @@ password credentials from the user (even though credentials in the wider
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
communicate with system-specific "credential helpers". If you are
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.

Typical setup
-------------

------------
+-----------------------+
| git code (C) |--- to server requiring --->
| | authentication
|.......................|
| C credential API |--- prompt ---> User
+-----------------------+
^ |
| pipe |
| v
+-----------------------+
| git credential helper |
+-----------------------+
------------

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
store. If the credential helper cannot find the information, the C API
will prompt the user. Then, the caller of the API takes care of
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
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),
approve (mark a credential as successfully used so that it can be stored
for later use), and reject (mark a credential as unsuccessful so that it
can be erased from any persistent storage).

Data Structures
---------------
~~~~~~~~~~~~~~~

`struct credential`::

Expand All @@ -28,7 +72,7 @@ This struct should always be initialized with `CREDENTIAL_INIT` or


Functions
---------
~~~~~~~~~

`credential_init`::

Expand Down Expand Up @@ -72,7 +116,7 @@ Functions
Parse a URL into broken-down credential fields.

Example
-------
~~~~~~~

The example below shows how the functions of the credential API could be
used to login to a fictitious "foo" service on a remote host:
Expand Down

0 comments on commit 2239888

Please sign in to comment.