git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/13] credential helpers, take two
@ 2011-11-24 10:58 Jeff King
  2011-11-24 10:58 ` [PATCH 01/13] test-lib: add test_config_global variant Jeff King
                   ` (14 more replies)
  0 siblings, 15 replies; 49+ messages in thread
From: Jeff King @ 2011-11-24 10:58 UTC (permalink / raw)
  To: git

Here's a revised version of the http-auth / credential-helper series.

It has the same basic premise as the first series (git contacts external
programs to access secure storage, thus enabling secure password
caching), but there are a number of tweaks in the implementation.

The main departures are:

  1. Helpers now _only_ act as storage; they never ask for credentials
     directly from the user.  This makes writing them much simpler.

     It also means that "askpass" remains the only way to get input from
     the user. However, I've left room in the helper protocol to add an
     "ask" action. If people really want something like a classy
     username/password dialog from the helpers, it will be easy to add.

  2. The helper protocol now happens completely over pipes. In the first
     round, we gave information to helpers on the command line. That was
     OK, since we never gave them a password; they only gave them to us
     (and cached them if they wanted to). But now that git is asking for
     the password itself, it has to send the password to the helper to
     store. And that definitely shouldn't go on the command line.

     The parsing load on the helper is therefore a little higher.
     However, it's still really quite easy.

  3. The old "unique" token has been broken into components. That means
     less parsing for most helpers, which wanted the broken-down fields.
     Helpers that want a single token can pretty easily reassemble.

  4. I dropped the "description" field. I noticed that all of the
     components of a credential context are actually parts of a URL. So
     we can just show the URL (or a subset thereof) to the user in the
     prompt. See the discussion in patches 05 and 08.

  5. Config handling happens at the right place (before helpers) now.

If you want an overview without reading the patches too carefully, I
recommend reading the documentation added in patches 03 and 09, which
contain the API and end-user documentation respectively.

Helper writers may want to look at t0303 added in patch 13; it's an
adaptation of the test script I posted earlier for testing new external
helpers.

  [01/13]: test-lib: add test_config_global variant
  [02/13]: t5550: fix typo
  [03/13]: introduce credentials API
  [04/13]: credential: add function for parsing url components
  [05/13]: http: use credential API to get passwords
  [06/13]: credential: apply helper config
  [07/13]: credential: add credential.*.username
  [08/13]: credential: make relevance of http path configurable
  [09/13]: docs: end-user documentation for the credential subsystem
  [10/13]: credentials: add "cache" helper
  [11/13]: strbuf: add strbuf_add*_urlencode
  [12/13]: credentials: add "store" helper
  [13/13]: t: add test harness for external credential helpers

I've been running with this for a few days, so I think the most horrible
bugs are shaken out. But I had to rewrite almost all of the code from
the first series, so I wouldn't be surprised if there are some new bugs
lurking in there. If you are reviewing, please read from scratch and
don't assume that something that worked in the first series is still
working. :)

-Peff

^ permalink raw reply	[flat|nested] 49+ messages in thread

end of thread, other threads:[~2011-11-30  5:41 UTC | newest]

Thread overview: 49+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-24 10:58 [PATCH 0/13] credential helpers, take two Jeff King
2011-11-24 10:58 ` [PATCH 01/13] test-lib: add test_config_global variant Jeff King
2011-11-24 10:59 ` [PATCH 02/13] t5550: fix typo Jeff King
2011-11-24 11:01 ` [PATCH 03/13] introduce credentials API Jeff King
2011-11-28 21:46   ` Junio C Hamano
2011-11-29  5:04     ` Jeff King
2011-11-29 17:34       ` Junio C Hamano
2011-11-29 21:14         ` Jeff King
2011-11-24 11:01 ` [PATCH 04/13] credential: add function for parsing url components Jeff King
2011-11-24 11:01 ` [PATCH 05/13] http: use credential API to get passwords Jeff King
2011-11-24 11:02 ` [PATCH 06/13] credential: apply helper config Jeff King
2011-11-24 11:02 ` [PATCH 07/13] credential: add credential.*.username Jeff King
2011-11-24 11:03 ` [PATCH 08/13] credential: make relevance of http path configurable Jeff King
2011-11-24 11:05 ` [PATCH 09/13] docs: end-user documentation for the credential subsystem Jeff King
2011-11-24 11:07 ` [PATCH 10/13] credentials: add "cache" helper Jeff King
2011-11-24 14:36   ` Eric Sunshine
2011-11-29  0:42   ` Junio C Hamano
2011-11-29  5:04     ` Jeff King
2011-11-24 11:07 ` [PATCH 11/13] strbuf: add strbuf_add*_urlencode Jeff King
2011-11-29 18:19   ` Junio C Hamano
2011-11-29 21:19     ` Jeff King
2011-11-29 23:26       ` René Scharfe
2011-11-30  3:20         ` Jeff King
2011-11-30  5:40           ` Junio C Hamano
2011-11-30  5:41           ` René Scharfe
2011-11-24 11:07 ` [PATCH 12/13] credentials: add "store" helper Jeff King
2011-11-24 14:29   ` Eric Sunshine
2011-11-24 20:09     ` Jeff King
2011-11-29 18:19   ` Junio C Hamano
2011-11-29 21:38     ` Jeff King
2011-11-24 11:09 ` [PATCH 13/13] t: add test harness for external credential helpers Jeff King
2011-11-24 11:45 ` [PATCH 0/13] credential helpers, take two Erik Faye-Lund
2011-11-24 11:53   ` Jeff King
2011-11-24 12:08     ` Erik Faye-Lund
2011-11-27  8:27 ` [PATCH 0/6] echo usernames as they are typed Jeff King
2011-11-27  8:28   ` [PATCH 1/6] move git_getpass to its own source file Jeff King
2011-11-27  8:29   ` [PATCH 2/6] refactor git_getpass into generic prompt function Jeff King
2011-11-27  8:30   ` [PATCH 3/6] stub out getpass_echo function Jeff King
2011-11-27  8:30   ` [PATCH 4/6] prompt: add PROMPT_ECHO flag Jeff King
2011-11-27  8:31   ` [PATCH 5/6] credential: use git_prompt instead of git_getpass Jeff King
2011-11-27  8:31   ` [PATCH 6/6] compat/getpass: add a /dev/tty implementation Jeff King
2011-11-27  8:56   ` [PATCH 0/6] echo usernames as they are typed Junio C Hamano
2011-11-27  9:17   ` Erik Faye-Lund
2011-11-28  3:53     ` Jeff King
2011-11-28  9:36       ` Erik Faye-Lund
2011-11-28 11:31         ` Jeff King
2011-11-28 11:49           ` Frans Klaver
2011-11-28 12:59           ` Erik Faye-Lund
2011-11-28 18:59             ` Jeff King

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).