credential-cache: use XDG_CACHE_HOME for socket
Make git-credential-cache follow the XDG base path specification by default. This increases consistency with other applications and helps keep clutter out of users' home directories. Check the old socket location, ~/.git-credential-cache/, and use ~/.git-credential-cache/socket if that directory exists rather than forcing users who have used `git credential-cache` before to migrate to the new XDG compliant location. Otherwise use the socket $XDG_CACHE_HOME/git/credential/socket following XDG base path specification. Use the subdirectory credential/ in case other files are cached under $XDG_CACHE_HOME/git/ in the future and to make the socket's purpose clear. Signed-off-by: Devin Lehmacher <lehmacdj@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
e7f136bf93
commit
60759baac1
@ -33,10 +33,13 @@ OPTIONS
|
|||||||
--socket <path>::
|
--socket <path>::
|
||||||
|
|
||||||
Use `<path>` to contact a running cache daemon (or start a new
|
Use `<path>` to contact a running cache daemon (or start a new
|
||||||
cache daemon if one is not started). Defaults to
|
cache daemon if one is not started).
|
||||||
`~/.git-credential-cache/socket`. If your home directory is on a
|
Defaults to `$XDG_CACHE_HOME/git/credential/socket` unless
|
||||||
network-mounted filesystem, you may need to change this to a
|
`~/.git-credential-cache/` exists in which case
|
||||||
local filesystem. You must specify an absolute path.
|
`~/.git-credential-cache/socket` is used instead.
|
||||||
|
If your home directory is on a network-mounted filesystem, you
|
||||||
|
may need to change this to a local filesystem. You must specify
|
||||||
|
an absolute path.
|
||||||
|
|
||||||
CONTROLLING THE DAEMON
|
CONTROLLING THE DAEMON
|
||||||
----------------------
|
----------------------
|
||||||
|
@ -83,6 +83,19 @@ static void do_cache(const char *socket, const char *action, int timeout,
|
|||||||
strbuf_release(&buf);
|
strbuf_release(&buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *get_socket_path(void)
|
||||||
|
{
|
||||||
|
struct stat sb;
|
||||||
|
char *old_dir, *socket;
|
||||||
|
old_dir = expand_user_path("~/.git-credential-cache");
|
||||||
|
if (old_dir && !stat(old_dir, &sb) && S_ISDIR(sb.st_mode))
|
||||||
|
socket = xstrfmt("%s/socket", old_dir);
|
||||||
|
else
|
||||||
|
socket = xdg_cache_home("credential/socket");
|
||||||
|
free(old_dir);
|
||||||
|
return socket;
|
||||||
|
}
|
||||||
|
|
||||||
int cmd_main(int argc, const char **argv)
|
int cmd_main(int argc, const char **argv)
|
||||||
{
|
{
|
||||||
char *socket_path = NULL;
|
char *socket_path = NULL;
|
||||||
@ -106,7 +119,7 @@ int cmd_main(int argc, const char **argv)
|
|||||||
op = argv[0];
|
op = argv[0];
|
||||||
|
|
||||||
if (!socket_path)
|
if (!socket_path)
|
||||||
socket_path = expand_user_path("~/.git-credential-cache/socket");
|
socket_path = get_socket_path();
|
||||||
if (!socket_path)
|
if (!socket_path)
|
||||||
die("unable to find a suitable socket path; use --socket");
|
die("unable to find a suitable socket path; use --socket");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user