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
next prev parent 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).