git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Matthieu Moy <Matthieu.Moy@imag.fr>
To: git@vger.kernel.org, gitster@pobox.com
Cc: Matthieu Moy <Matthieu.Moy@imag.fr>
Subject: [PATCH 1/3] api-credential.txt: show the big picture first
Date: Sun,  3 Jun 2012 18:10:02 +0200	[thread overview]
Message-ID: <1338739804-32167-2-git-send-email-Matthieu.Moy@imag.fr> (raw)
In-Reply-To: <1338739804-32167-1-git-send-email-Matthieu.Moy@imag.fr>

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>
---
I took Jeff's explanation, but I insist in having a picture ;-).

I made the picture more generic compared to my first proposal, and
just mention remote-helper in the text (I originally was wondering
whether this API could be used from a helper, since the helper has its
STDIN and STDOUT bound to the main Git process already, so this
explanation would have avoided the confusion for me).

 Documentation/technical/api-credentials.txt | 50 +++++++++++++++++++++++++++--
 1 file changed, 47 insertions(+), 3 deletions(-)

diff --git a/Documentation/technical/api-credentials.txt b/Documentation/technical/api-credentials.txt
index 21ca6a2..8804c42 100644
--- a/Documentation/technical/api-credentials.txt
+++ b/Documentation/technical/api-credentials.txt
@@ -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 couple (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 do 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`::
 
@@ -28,7 +72,7 @@ This struct should always be initialized with `CREDENTIAL_INIT` or
 
 
 Functions
----------
+~~~~~~~~~
 
 `credential_init`::
 
@@ -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:
-- 
1.7.11.rc0.57.g84a04c7

  reply	other threads:[~2012-06-03 16:11 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-03 16:10 [PATCH 0/3] Improve credential API documentation Matthieu Moy
2012-06-03 16:10 ` Matthieu Moy [this message]
2012-06-04 11:51   ` [PATCH 1/3] api-credential.txt: show the big picture first Jeff King
2012-06-03 16:10 ` [PATCH 2/3] api-credentials.txt: mention credential.helper explicitly Matthieu Moy
2012-06-04 11:54   ` Jeff King
2012-06-04 17:51     ` Matthieu Moy
2012-06-03 16:10 ` [PATCH 3/3] api-credentials.txt: add "see also" section Matthieu Moy
2012-06-03 22:28   ` Junio C Hamano
2012-06-04 11:31     ` Matthieu Moy
2012-06-04 11:56       ` Jeff King
2012-06-04 19:31         ` Junio C Hamano
2012-06-04 20:06         ` Matthieu Moy
2012-06-05  6:59           ` Jeff King
2012-06-05  7:34             ` Jeff King
2012-06-05 11:20               ` Matthieu Moy
2012-06-05 11:22                 ` Jeff King
2012-06-05 15:12               ` Junio C Hamano
2012-06-05 15:35                 ` Jeff King
2012-06-05 17:28                   ` Junio C Hamano
2012-06-04 20:17 ` [PATCH 1/4] doc: fix xref link from api docs to manual pages Matthieu Moy
2012-06-04 20:17   ` [PATCH 2/4 v2] api-credential.txt: show the big picture first Matthieu Moy
2012-06-05  7:36     ` Jeff King
2012-06-04 20:17   ` [PATCH 3/4 v2] api-credentials.txt: mention credential.helper explicitly Matthieu Moy
2012-06-04 20:17   ` [PATCH 4/4 v2] api-credentials.txt: add "see also" section Matthieu Moy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1338739804-32167-2-git-send-email-Matthieu.Moy@imag.fr \
    --to=matthieu.moy@imag.fr \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).