# [GSoC] Move ~/.git-credential-cache to ~/.cache/git

5 messages from 2017-03-10 to 2017-03-11. Participants: Devin Lehmacher, Jonathan Nieder, Noam Postavsky, Junio C Hamano.
Thread: https://gitlist.dev/t/45350

## Devin Lehmacher, 2017-03-10 23:30

Subject: [GSoC] Move ~/.git-credential-cache to ~/.cache/git
Message-ID: <8BE1A361-32BB-4164-AD54-949555855C52@cornell.edu>
URL: https://gitlist.dev/e/8BE1A361-32BB-4164-AD54-949555855C52%40cornell.edu

```
I started working on this microproject and am not quite sure what is necessary for backwards compatibility. Since the socket is recreated whenever the credential daemon exits backwards compatibility shouldn’t really be a concern with regard to where the socket is located in the filesystem.

However, contrib/persistent-https depends on the socket being at ~/.git-credential-cache/socket, so changing the default location would break this. However, if we need to keep the socket at that location for cases like this I don’t understand how this change would be helpful in any way.

Is it safe to change the default location for this socket and removing the original location?

Thanks in advanced,
Devin Lehmacher

```

## Jonathan Nieder, 2017-03-11 00:26

Subject: Re: [GSoC] Move ~/.git-credential-cache to ~/.cache/git
Message-ID: <20170311002615.GG26789@aiede.mtv.corp.google.com>
URL: https://gitlist.dev/e/20170311002615.GG26789%40aiede.mtv.corp.google.com
In-Reply-To: <8BE1A361-32BB-4164-AD54-949555855C52@cornell.edu>

```
(+cc: npostavs)
Hi Devin,

Devin Lehmacher wrote:

> I started working on this microproject and am not quite sure what is
> necessary for backwards compatibility. Since the socket is recreated
> whenever the credential daemon exits backwards compatibility
> shouldn’t really be a concern with regard to where the socket is
> located in the filesystem.
>
> However, contrib/persistent-https depends on the socket being at
> ~/.git-credential-cache/socket, so changing the default location
> would break this. However, if we need to keep the socket at that
> location for cases like this I don’t understand how this change
> would be helpful in any way.

That's a good question.  If I'm reading contrib/persistent-https/
correctly, it uses the same directory but doesn't rely on the socket
there, so it should not be a problem.

However, that reminded me to search for other tools that might rely on
the socket.  Using
https://codesearch.debian.net/search?q=%5C.git-credential-cache, I
find that magit does rely on the socket path.

 $ git clone https://github.com/magit/magit
 $ git log -S.git-credential-cache
 commit 0f30dfbb0075ac2e99b65a2c7fac360197a989c1
 Author: Noam Postavsky <npostavs@users.sourceforge.net>
 Date:   Sat Oct 24 15:57:54 2015 -0400

    Start credential daemon on magit-credential-hook

    If we let git start the daemon, Emacs will send a SIGHUP when git
    finishes and closes the pty, killing the daemon.  Hence the need to have
    our own daemon running first.

Cc-ing Noam to figure out what a safe transition will look like.

Thanks for noticing,
Jonathan

```

## Noam Postavsky, 2017-03-11 01:02

Subject: Re: [GSoC] Move ~/.git-credential-cache to ~/.cache/git
Message-ID: <CAM-tV-9DV=XOVSehEfd2LiWYdubhwV7fC8uRnKqmFT_aTQ1OKg@mail.gmail.com>
URL: https://gitlist.dev/e/CAM-tV-9DV%3DXOVSehEfd2LiWYdubhwV7fC8uRnKqmFT_aTQ1OKg%40mail.gmail.com
In-Reply-To: <20170311002615.GG26789@aiede.mtv.corp.google.com>

```
On Fri, Mar 10, 2017 at 7:26 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:
> I find that magit does rely on the socket path.
>
>     Start credential daemon on magit-credential-hook
>
>     If we let git start the daemon, Emacs will send a SIGHUP when git
>     finishes and closes the pty, killing the daemon.  Hence the need to have
>     our own daemon running first.

Magit doesn't really care about the particular path, but it does call
git-credential-cache--daemon directly which needs to be told where to
create the socket. I guess Magit could just default to using
~/.cache/git/socket if ~/.cache/git exists? (Magit users can override
the path regardless)

```

## Devin Lehmacher, 2017-03-11 02:27

Subject: Re: [GSoC] Move ~/.git-credential-cache to ~/.cache/git
Message-ID: <3B988055-D8A3-43B7-BF5F-C43479EF7BEB@cornell.edu>
URL: https://gitlist.dev/e/3B988055-D8A3-43B7-BF5F-C43479EF7BEB%40cornell.edu
In-Reply-To: <CAM-tV-9DV=XOVSehEfd2LiWYdubhwV7fC8uRnKqmFT_aTQ1OKg@mail.gmail.com>

```
If I’m not mistaken magit won’t stop working with the changed location since it will just spawn an new instance of the daemon. The only downside would be it wouldn’t get credentials that were cached in the default socket.

I am going to move forward with git-credential-cache just using the new location at
`~/.cache/git/credential/socket` and submit a patch and then get more feedback on the patch.

Devin Lehmacher

```

## Junio C Hamano, 2017-03-11 03:17

Subject: Re: [GSoC] Move ~/.git-credential-cache to ~/.cache/git
Message-ID: <xmqqinngwlhr.fsf@gitster.mtv.corp.google.com>
URL: https://gitlist.dev/e/xmqqinngwlhr.fsf%40gitster.mtv.corp.google.com
In-Reply-To: <3B988055-D8A3-43B7-BF5F-C43479EF7BEB@cornell.edu>

```
Devin Lehmacher <djl329@cornell.edu> writes:

> If I’m not mistaken magit won’t stop working with the changed
> location since it will just spawn an new instance of the
> daemon. The only downside would be it wouldn’t get credentials
> that were cached in the default socket.

I am not quite sure how you can say "only" in that sentence.  Isn't
the whole point of socket based daemon interface to allow starting
the daemon so that it can keep using it?

Somebody upthread mentioned checking the current location (and use
it if there is) and then use the new location, which I found a more
reasonable approach.

Assuming that it is sensible to move it from ~/.git-credential-cache
to ~/.cache/git/ in the first place, that is.  If both are equally
acceptable places, then perhaps a configuration that allows those
who want to have things in ~/.config/git/ to specify where to have
the thing (and those without such a custom configuration will keep
using the current location) may be more appropriate.

```
