summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2012-07-18 08:06:26 -0400
committerJunio C Hamano <gitster@pobox.com>2012-07-18 13:26:58 -0700
commit9c183a70722804114ac1dc54d17fe791ac1a452c (patch)
treeb48463c9c4bd5d7ecfff1aac55cd0715f02f8d5c
parent6319a2a148adaa78f11414e914f8c9f3f1c52b5e (diff)
downloadgit-9c183a70722804114ac1dc54d17fe791ac1a452c.tar.gz
credential: convert "url" attribute into its parsed subparts
The git-credential command requires that you feed it a broken-down credential, which means that the client needs to parse a URL itself. Since we have our own URL-parsing routines, we can easily allow the caller to just give us the URL as-is, saving them some code. Signed-off-by: Jeff King <peff@peff.net> Acked-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--Documentation/git-credential.txt12
-rw-r--r--credential.c2
2 files changed, 14 insertions, 0 deletions
diff --git a/Documentation/git-credential.txt b/Documentation/git-credential.txt
index afd5365255..53adee3203 100644
--- a/Documentation/git-credential.txt
+++ b/Documentation/git-credential.txt
@@ -140,3 +140,15 @@ Git understands the following attributes:
`password`::
The credential's password, if we are asking it to be stored.
+
+`url`::
+
+ When this special attribute is read by `git credential`, the
+ value is parsed as a URL and treated as if its constituent parts
+ were read (e.g., `url=https://example.com` would behave as if
+ `protocol=https` and `host=example.com` had been provided). This
+ can help callers avoid parsing URLs themselves. Note that any
+ components which are missing from the URL (e.g., there is no
+ username in the example above) will be set to empty; if you want
+ to provide a URL and override some attributes, provide the URL
+ attribute first, followed by any overrides.
diff --git a/credential.c b/credential.c
index 2c400073fa..e54753c75d 100644
--- a/credential.c
+++ b/credential.c
@@ -172,6 +172,8 @@ int credential_read(struct credential *c, FILE *fp)
} else if (!strcmp(key, "path")) {
free(c->path);
c->path = xstrdup(value);
+ } else if (!strcmp(key, "url")) {
+ credential_from_url(c, value);
}
/*
* Ignore other lines; we don't know what they mean, but