Avoid error about git-annex-shell not being found when syncing with -J with a git remote where git-annex-shell is not installed.

This commit was sponsored by andrea rota.
This commit is contained in:
Joey Hess 2017-06-06 12:57:27 -04:00
parent 954a24b5d1
commit e23839acf3
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
3 changed files with 41 additions and 5 deletions

View file

@ -193,8 +193,10 @@ prepSocket socketfile gc sshparams = do
c <- Annex.getState Annex.concurrency
case c of
Concurrent {} -> makeconnection socketlock
NonConcurrent -> return ()
Concurrent {}
| annexUUID (remoteGitConfig gc) /= NoUUID ->
makeconnection socketlock
_ -> return ()
lockFileCached socketlock
where
@ -207,11 +209,15 @@ prepSocket socketfile gc sshparams = do
-- When we can start the connection in batch mode,
-- ssh won't prompt to the console.
(_, connected) <- liftIO $ processTranscript "ssh"
(["-o", "BatchMode=true"] ++ toCommand startps)
(["-o", "BatchMode=true"]
++ toCommand startps)
Nothing
unless connected $
prompt $ void $ liftIO $
unless connected $ do
ok <- prompt $ liftIO $
boolSystem "ssh" startps
unless ok $
warning $ "Unable to run git-annex-shell on remote " ++
Git.repoDescribe (gitConfigRepo (remoteGitConfig gc))
-- Parameters to get ssh connected to the remote host,
-- by asking it to run a no-op command.

View file

@ -16,6 +16,9 @@ git-annex (6.20170520) UNRELEASED; urgency=medium
disable the usual automatic merge conflict resolution done by git-annex
sync and the assistant.
* sync: Added --no-resolvemerge option.
* Avoid error about git-annex-shell not being found when
syncing with -J with a git remote where git-annex-shell is not
installed.
-- Joey Hess <id@joeyh.name> Wed, 24 May 2017 14:03:40 -0400

View file

@ -0,0 +1,27 @@
[[!comment format=mdwn
username="joey"
subject="""comment 1"""
date="2017-06-06T16:21:53Z"
content="""
One of the remotes of your repository is on a host
where git-annex-shell is either not installed, or perhaps
it is installed but `ssh thehost git-annex-shell` does not
work -- eg due to the problem decribed in
[[tips/get_git-annex-shell_into_PATH]].
There was indeed a change in 6.20170519 that explains why this
only happens in -J mode. [[!commit 6992fe133b37ec6d64498f3dd2c69613c4c37469]]
made it run git-annex-shell at startup in that mode.
Hmm, I suppose one of your remotes could intentionally not have
git-annex-shell on it, and yet you'd still want `git annex sync`
to work to it, and so this message about git-annex-shell
being displayed is not ideal.
So, I've made it skip trying to run git-annex-shell in this case unless
the remote has an annex-uuid set. If the remote has never had
git-annex-shell installed, it can't have an annex-uuid set.
And, when it does fail to run git-annex-shell, I've made it say which
remote it was unable to run it on.
"""]]