Re: [GSOC] Microproject "Move ~/.git-credential-cache to ~/.config/git"
- From
惠轶群 <huiyiqun@gmail.com>
- Date
- Mar 14, 2016, 19:53 UTC
- Message-ID
- <CAKqreuwgxzVTAUdZPf9+ivXCdW8F2Ksafw7V0pbLAaRPwGX9Uw@mail.gmail.com>
- In-Reply-To
- <xmqqshztawwd.fsf@gitster.mtv.corp.google.com>
2016-03-14 23:42 GMT+08:00 Junio C Hamano <gitster@pobox.com>:
Show 10 quoted lines
> 惠轶群 <huiyiqun@gmail.com> writes: > >> I'm still confused about following: >> >> 1. should `~/.git-credential-cache` been moved to >> `~/.cache/git/credential`(as the descreption of the micropject says) >> or `~/.config/git/credential`(as the title of the microproject says)? > > The latter, I'd think, as you noticed in 2. the former does not make > much sense.
I'm not sure. There is only a unix socket under ~/.git-credential-cache. It's not a config.
After reading the [spec](https://specifications.freedesktop.org/basedir-spec/basedir-spec-0.7.html) more carefully, I think that $XDG_RUNTIME_DIR may be a better choice than the above two. For ~/.git-credential-cache/socket is a unix socket and should be used only runtime.
On my computer, this variable is well defined and pointed to /run/user/$UID.
The problem is that there is no suitable default to it if $XDG_RUNTIME_DIR is not set. I guess /tmp/git-$USER is a good choice.
Show 11 quoted lines
>> 3. Does "without breaking compatibility with the old behavior." mean >> that I should still try to connect to the unix socket placed at the >> old place? If yes, which order is prefered? > > Let me be vague and oblique on purpose ;-) > > We used to have only ~/.gitconfig as the per-user location, and at > some point in the history we added XDG_CONFIG_HOME support. Study > how that was done (hint: "git log" and "git blame" may be useful > tools for this purpose), and imitate it. >
I have read almost every commit which contains "XDG", as well as their diffs.
I think this issue I'm currently dealing with is a little different from formers, For this file is just an unix socket and never persistent. I could not just keep in step with old behavior unless that user manually create the file at new-style path.
Of course I could check the existence of `~/.git-credential-cache` and `$XDG_CONFIG_HOME/git/credential-cache` to decide where to put the socket, but it's not elegant enough. Because, as mentioned above, the socket file itself is not persistent.