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

@ -28,7 +28,7 @@ import Logs.UUID
import Assistant.RemoteControl
import Types.Creds
import Assistant.CredPairCache
import Config.Files
import Annex.Path
import Utility.Tmp
import Utility.FileMode
import Utility.ThreadScheduler
@ -381,7 +381,7 @@ sshAuthTranscript sshinput opts input = case inputAuthMethod sshinput of
Just (fromMaybe "" input)
setupAskPass = do
program <- liftIO readProgramFile
program <- liftIO programPath
v <- getCachedCred login
liftIO $ case v of
Nothing -> go [passwordprompts 0] Nothing