When re-execing git-annex, use current program location, rather than ~/.config/git-annex/program, when possible.

Most of the time, there will be no discreprancy between programPath and
readProgramFile.

But, the programFile might have been written by an old version of git-annex
that is still installed, while a newer one is currently running. In this
case, we want to run the same one that's currently running.

This is especially important for things like the GIT_SSH=git-annex used for
ssh connection caching.

The only code that still uses readProgramFile directly is the upgrade code,
which needs to know where the standalone git-annex was installed, in order to
upgrade it.
This commit is contained in:
Joey Hess 2015-02-28 17:23:13 -04:00
parent b9275b65f9
commit 450ee53ab6
14 changed files with 28 additions and 25 deletions

View file

@ -49,7 +49,7 @@ import Remote.Helper.Git
import Remote.Helper.Messages
import qualified Remote.Helper.Ssh as Ssh
import qualified Remote.GCrypt
import Config.Files
import Annex.Path
import Creds
import Annex.CatFile
@ -499,7 +499,7 @@ fsckOnRemote r params
Nothing -> return False
Just (c, ps) -> batchCommand c ps
| otherwise = return $ do
program <- readProgramFile
program <- programPath
r' <- Git.Config.read r
environ <- getEnvironment
let environ' = addEntries