threads / discuss / 45350

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

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

## tl;dr

5 messages between Mar 10, 2017 and Mar 11, 2017.

replies: 4people: 4as markdown or json

Devin Lehmacher· Mar 10, 2017, 23:30 UTC · lore
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· Mar 11, 2017, 00:26 UTC · re: Devin Lehmacher · lore

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

(+cc: npostavs) Hi Devin,

Devin Lehmacher wrote:
Show 11 quoted lines
> 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· Mar 11, 2017, 01:02 UTC · re: Jonathan Nieder · lore

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

On Fri, Mar 10, 2017 at 7:26 PM, Jonathan Nieder <jrnieder@gmail.com> wrote:
Show 7 quoted lines
> 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· Mar 11, 2017, 02:27 UTC · re: Noam Postavsky · lore

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

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· Mar 11, 2017, 03:17 UTC · re: Devin Lehmacher · lore

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

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.

← back to recent threads