summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Assistant/DaemonStatus.hs8
-rw-r--r--Assistant/Sync.hs8
-rw-r--r--Assistant/Threads/XMPPClient.hs2
-rw-r--r--Command/Sync.hs4
-rw-r--r--Remote.hs10
-rw-r--r--debian/changelog3
6 files changed, 21 insertions, 14 deletions
diff --git a/Assistant/DaemonStatus.hs b/Assistant/DaemonStatus.hs
index e38463ff6..eb842b784 100644
--- a/Assistant/DaemonStatus.hs
+++ b/Assistant/DaemonStatus.hs
@@ -55,7 +55,7 @@ calcSyncRemotes = do
let good r = Remote.uuid r `elem` alive
let syncable = filter good rs
let syncdata = filter (not . remoteAnnexIgnore . Remote.gitconfig) $
- filter (not . isXMPPRemote) syncable
+ filter (not . Remote.isXMPPRemote) syncable
return $ \dstatus -> dstatus
{ syncRemotes = syncable
@@ -257,11 +257,5 @@ alertDuring alert a = do
i <- addAlert $ alert { alertClass = Activity }
removeAlert i `after` a
-{- Remotes using the XMPP transport have urls like xmpp::user@host -}
-isXMPPRemote :: Remote -> Bool
-isXMPPRemote remote = Git.repoIsUrl r && "xmpp::" `isPrefixOf` Git.repoLocation r
- where
- r = Remote.repo remote
-
getXMPPClientID :: Remote -> ClientID
getXMPPClientID r = T.pack $ drop (length "xmpp::") (Git.repoLocation (Remote.repo r))
diff --git a/Assistant/Sync.hs b/Assistant/Sync.hs
index adbe41350..fc95419ab 100644
--- a/Assistant/Sync.hs
+++ b/Assistant/Sync.hs
@@ -71,7 +71,7 @@ reconnectRemotes notifypushes rs = void $ do
mapM_ signal $ filter (`notElem` failedrs) rs'
where
gitremotes = filter (notspecialremote . Remote.repo) rs
- (xmppremotes, nonxmppremotes) = partition isXMPPRemote rs
+ (xmppremotes, nonxmppremotes) = partition Remote.isXMPPRemote rs
notspecialremote r
| Git.repoIsUrl r = True
| Git.repoIsLocal r = True
@@ -133,7 +133,7 @@ pushToRemotes' now notifypushes remotes = do
<$> gitRepo
<*> inRepo Git.Branch.current
<*> getUUID
- let (xmppremotes, normalremotes) = partition isXMPPRemote remotes
+ let (xmppremotes, normalremotes) = partition Remote.isXMPPRemote remotes
ret <- go True branch g u normalremotes
unless (null xmppremotes) $ do
shas <- liftAnnex $ map fst <$>
@@ -206,7 +206,7 @@ syncAction rs a
return failed
where
visibleremotes = filter (not . Remote.readonly) $
- filter (not . isXMPPRemote) rs
+ filter (not . Remote.isXMPPRemote) rs
{- Manually pull from remotes and merge their branches. Returns any
- remotes that it failed to pull from, and a Bool indicating
@@ -220,7 +220,7 @@ syncAction rs a
manualPull :: Maybe Git.Ref -> [Remote] -> Assistant ([Remote], Bool)
manualPull currentbranch remotes = do
g <- liftAnnex gitRepo
- let (xmppremotes, normalremotes) = partition isXMPPRemote remotes
+ let (xmppremotes, normalremotes) = partition Remote.isXMPPRemote remotes
failed <- liftIO $ forM normalremotes $ \r ->
ifM (Git.Command.runBool [Param "fetch", Param $ Remote.name r] g)
( return Nothing
diff --git a/Assistant/Threads/XMPPClient.hs b/Assistant/Threads/XMPPClient.hs
index 8eb469939..ab4de9257 100644
--- a/Assistant/Threads/XMPPClient.hs
+++ b/Assistant/Threads/XMPPClient.hs
@@ -322,7 +322,7 @@ pairMsgReceived urlrenderer PairReq theiruuid selfjid theirjid
| baseJID selfjid == baseJID theirjid = autoaccept
| otherwise = do
knownjids <- mapMaybe (parseJID . getXMPPClientID)
- . filter isXMPPRemote . syncRemotes <$> getDaemonStatus
+ . filter Remote.isXMPPRemote . syncRemotes <$> getDaemonStatus
um <- liftAnnex uuidMap
if elem (baseJID theirjid) knownjids && M.member theiruuid um
then autoaccept
diff --git a/Command/Sync.hs b/Command/Sync.hs
index acd487df3..5719f5b70 100644
--- a/Command/Sync.hs
+++ b/Command/Sync.hs
@@ -75,6 +75,7 @@ seek rs = do
remotes <- syncRemotes rs
let gitremotes = filter Remote.gitSyncableRemote remotes
+ let dataremotes = filter (not . remoteAnnexIgnore . Remote.gitconfig) remotes
-- Syncing involves many actions, any of which can independently
-- fail, without preventing the others from running.
@@ -85,7 +86,7 @@ seek rs = do
, [ mergeAnnex ]
]
whenM (Annex.getFlag $ optionName contentOption) $
- seekSyncContent remotes
+ seekSyncContent dataremotes
seekActions $ return $ concat
[ [ withbranch pushLocal ]
, map (withbranch . pushRemote) gitremotes
@@ -112,6 +113,7 @@ syncRemotes rs = ifM (Annex.getState Annex.fast) ( nub <$> pickfast , wanted )
| otherwise = listed
listed = catMaybes <$> mapM (Remote.byName . Just) rs
available = filter (remoteAnnexSync . Types.Remote.gitconfig)
+ . filter (not . Remote.isXMPPRemote)
<$> Remote.remoteList
good r
| Remote.gitSyncableRemote r = Remote.Git.repoAvail $ Types.Remote.repo r
diff --git a/Remote.hs b/Remote.hs
index 3c838a623..f2af025fb 100644
--- a/Remote.hs
+++ b/Remote.hs
@@ -41,7 +41,8 @@ module Remote (
showLocations,
forceTrust,
logStatus,
- checkAvailable
+ checkAvailable,
+ isXMPPRemote
) where
import qualified Data.Map as M
@@ -60,6 +61,7 @@ import Logs.Location hiding (logStatus)
import Remote.List
import Config
import Git.Types (RemoteName)
+import qualified Git
{- Map from UUIDs of Remotes to a calculated value. -}
remoteMap :: (Remote -> a) -> Annex (M.Map UUID a)
@@ -292,3 +294,9 @@ byCost = map snd . sortBy (comparing fst) . M.toList . costmap
checkAvailable :: Bool -> Remote -> IO Bool
checkAvailable assumenetworkavailable =
maybe (return assumenetworkavailable) doesDirectoryExist . localpath
+
+{- Remotes using the XMPP transport have urls like xmpp::user@host -}
+isXMPPRemote :: Remote -> Bool
+isXMPPRemote remote = Git.repoIsUrl r && "xmpp::" `isPrefixOf` Git.repoLocation r
+ where
+ r = repo remote
diff --git a/debian/changelog b/debian/changelog
index 457e79a0a..de5229ddb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,6 +6,9 @@ git-annex (5.20140128) UNRELEASED; urgency=medium
guard against recursive file drops.
* Windows: Avoid using unix-compat's rename, which refuses to rename
directories.
+ * sync --content: Honor annex-ignore configuration.
+ * sync: Don't try to sync with xmpp remotes, which are only currently
+ supported when using the assistant.
-- Joey Hess <joeyh@debian.org> Tue, 28 Jan 2014 13:57:19 -0400