Skip to content

Commit 9c183a7

Browse files
peffgitster
authored andcommitted
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 <[email protected]> Acked-by: Matthieu Moy <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 6319a2a commit 9c183a7

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

Documentation/git-credential.txt

+12
Original file line numberDiff line numberDiff line change
@@ -140,3 +140,15 @@ Git understands the following attributes:
140140
`password`::
141141

142142
The credential's password, if we are asking it to be stored.
143+
144+
`url`::
145+
146+
When this special attribute is read by `git credential`, the
147+
value is parsed as a URL and treated as if its constituent parts
148+
were read (e.g., `url=https://example.com` would behave as if
149+
`protocol=https` and `host=example.com` had been provided). This
150+
can help callers avoid parsing URLs themselves. Note that any
151+
components which are missing from the URL (e.g., there is no
152+
username in the example above) will be set to empty; if you want
153+
to provide a URL and override some attributes, provide the URL
154+
attribute first, followed by any overrides.

credential.c

+2
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,8 @@ int credential_read(struct credential *c, FILE *fp)
172172
} else if (!strcmp(key, "path")) {
173173
free(c->path);
174174
c->path = xstrdup(value);
175+
} else if (!strcmp(key, "url")) {
176+
credential_from_url(c, value);
175177
}
176178
/*
177179
* Ignore other lines; we don't know what they mean, but

0 commit comments

Comments
 (0)