diff --git a/Remote.hs b/Remote.hs index fc27ea206f..a57a929114 100644 --- a/Remote.hs +++ b/Remote.hs @@ -448,8 +448,8 @@ claimingUrl' remotefilter url = do where checkclaim = maybe (pure False) (`id` url) . claimUrl -{- Is this a remote of a type we can sync with, or a special remote - - with an annex:: url configured? -} +{- Is this a remote of a type that git pull and push work with? + - That includes special remotes with an annex:: url configured. -} gitSyncableRemote :: Remote -> Bool gitSyncableRemote r | gitSyncableRemoteType (remotetype r) diff --git a/Remote/Git.hs b/Remote/Git.hs index 8cbb04abaa..6f7d4265c2 100644 --- a/Remote/Git.hs +++ b/Remote/Git.hs @@ -811,14 +811,14 @@ listProxied proxies rs = concat <$> mapM go rs | any isconfig (M.keys (Git.config g)) = pure Nothing | otherwise = do -- Not using addGitConfigOverride for inherited - -- configs other than the uuid, because child - -- git processes do not need them to be provided - -- with -c. + -- configs, because child git processes do not + -- need them to be provided with -c. Annex.adjustGitRepo (pure . annexconfigadjuster) return $ Just $ renamedr where renamedr = - let c = adduuid configkeyUUID $ Git.fullconfig r + let c = adduuid configkeyUUID $ + Git.fullconfig r in r { Git.remoteName = Just proxyname , Git.config = M.map Prelude.head c @@ -827,6 +827,7 @@ listProxied proxies rs = concat <$> mapM go rs annexconfigadjuster r' = let c = adduuid (configRepoUUID renamedr) $ + addurl (remoteConfig renamedr "url") $ inheritconfigs $ Git.fullconfig r' in r' { Git.config = M.map Prelude.head c @@ -836,6 +837,9 @@ listProxied proxies rs = concat <$> mapM go rs adduuid ck = M.insert ck [Git.ConfigValue $ fromUUID $ proxyRemoteUUID p] + addurl ck = M.insert ck + [Git.ConfigValue $ encodeBS $ Git.repoLocation r] + inheritconfigs c = foldl' inheritconfig c proxyInheritedFields inheritconfig c k = case (M.lookup dest c, M.lookup src c) of diff --git a/Types/GitConfig.hs b/Types/GitConfig.hs index c4a739e454..2f8a4e3875 100644 --- a/Types/GitConfig.hs +++ b/Types/GitConfig.hs @@ -620,7 +620,7 @@ remoteGitConfigField = \case -- Allow proxy chains. ProxyField -> inherited "proxy" ClusterNodeField -> uninherited "cluster-node" - UrlField -> inherited "url" + UrlField -> uninherited "url" ShellField -> inherited "shell" SshOptionsField -> inherited "ssh-options" RsyncOptionsField -> inherited "rsync-options" diff --git a/doc/todo/git-annex_proxies.mdwn b/doc/todo/git-annex_proxies.mdwn index 0ad17a00b4..57f7ca5186 100644 --- a/doc/todo/git-annex_proxies.mdwn +++ b/doc/todo/git-annex_proxies.mdwn @@ -26,15 +26,14 @@ In development on the `proxy` branch. For June's work on [[design/passthrough_proxy]], remaining todos: -* `git-annex sync --content` does not send content to clusters, or to - proxied remotes. Seems that the second call to Remote.list somehow - is failing to listProxies. +* `git-annex sync` etc should not treat clusters as git syncable remotes. * `git-annex sync` etc, when operating on clusters, should first operate on the cluster as a whole, to take advantages of fanout on upload and mass drop. Only operate on individual cluster nodes afterwards, to handle cases such as a cluster containing a key, but some node - wanting and lacking the key. + wanting and lacking the key. Perhaps just setting cost for nodes slightly + higher than the cluster cost will be enough? * On upload to cluster, send to nodes where it's preferred content, and not to other nodes.