Subject: Re: bug#5344: 23.1.91; bug/wish: vc does not honour GIT_DIR / GIT_WORK_TREE environment variables

From: Lars Ingebrigtsen <[email-masked]>
Date: Sun, 24 Nov 2019 22:46:39 +0100

(Please keep the debbugs address in the Cc header -- otherwise the mail
doesn't reach the bug tracker.)

Gregor Zattler <[email-masked]> writes:

> Actually git does it the other way around: It uses the values of
> the environment variables even if there is a .git directory
> further up in the file system hierarchy.  So it's not a fall
> back but it overrides the default.

The vc functions in Emacs sets GIT_DIR to "" before calling git, so in
vc mode it would be a fallback.

> When I wrote this bug report and later the tiny patch, what I
> wanted was to edit dotfiles with emacsclient from the terminal
> command line in terminal frames.  But in several terminals there
> are several shells with possibly different GIT_DIR/GIR_WORK_TREE
> environment variables.
>
> But working with emacsclient there is only one emacs server and
> therefore only one pair of GIT_DIR/GIR_WORK_TREE variables.
>
> To work with git from the command line with emacsclient the
> environment variables would have to be frame local.
>
> This is where I stuck.
>
> Therefore nowadays I'm back to a single ~/.git directory, not
> using the environment variables any more.  And I'm working with
> magit nowadays.  Magit also does not support the
> GIT_DIR/GIR_WORK_TREE environment variables.
>
> There are interesting discussions on this topic here:
> https://github.com/magit/magit/issues/2939#issuecomment-271186636
> and here: https://github.com/magit/magit/issues/460
>
> These are attempts to solve the pu:
> https://gitlab.com/stepnem/vcsh-el
> https://github.com/vanicat/magit-vcsh

It seems like providing a simple alist of directories/git repos would do
the trick in vc-dir, wouldn't it?