1
0
mirror of https://github.com/git/git synced 2024-07-05 00:58:49 +00:00

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:
Devin Lehmacher 2017-03-17 08:36:33 -04:00 committed by Junio C Hamano
parent e7f136bf93
commit 60759baac1
2 changed files with 21 additions and 5 deletions

View File

@ -33,10 +33,13 @@ OPTIONS
--socket <path>::
Use `<path>` to contact a running cache daemon (or start a new
cache daemon if one is not started). Defaults to
`~/.git-credential-cache/socket`. 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.
cache daemon if one is not started).
Defaults to `$XDG_CACHE_HOME/git/credential/socket` unless
`~/.git-credential-cache/` exists in which case
`~/.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
----------------------

View File

@ -83,6 +83,19 @@ static void do_cache(const char *socket, const char *action, int timeout,
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)
{
char *socket_path = NULL;
@ -106,7 +119,7 @@ int cmd_main(int argc, const char **argv)
op = argv[0];
if (!socket_path)
socket_path = expand_user_path("~/.git-credential-cache/socket");
socket_path = get_socket_path();
if (!socket_path)
die("unable to find a suitable socket path; use --socket");