fix handling of importtree-only remotes
Don't want to try to use these remotes as key/value remotes, which will surely fail. It only recently became possible for importtree to be set w/o exporttree, so before this code was ok. (cherry picked from commit 97599cb0f7f4115aa5a3e81a91ee3d1d6c52dc84)
This commit is contained in:
parent
e9db382308
commit
f62aee0525
4 changed files with 8 additions and 3 deletions
|
@ -30,7 +30,7 @@ type Reason = String
|
||||||
- and numcopies settings.
|
- and numcopies settings.
|
||||||
-
|
-
|
||||||
- Skips trying to drop from remotes that are appendonly, since those drops
|
- Skips trying to drop from remotes that are appendonly, since those drops
|
||||||
- would presumably fail. Also skips dropping from exporttree remotes,
|
- would presumably fail. Also skips dropping from exporttree/importtree remotes,
|
||||||
- which don't allow dropping individual keys.
|
- which don't allow dropping individual keys.
|
||||||
-
|
-
|
||||||
- The UUIDs are ones where the content is believed to be present.
|
- The UUIDs are ones where the content is believed to be present.
|
||||||
|
@ -87,6 +87,7 @@ handleDropsFrom locs rs reason fromhere key afile si preverified runner = do
|
||||||
| uuid r `S.notMember` slocs = go fs rest n
|
| uuid r `S.notMember` slocs = go fs rest n
|
||||||
| appendonly r = go fs rest n
|
| appendonly r = go fs rest n
|
||||||
| exportTree (config r) = go fs rest n
|
| exportTree (config r) = go fs rest n
|
||||||
|
| importTree (config r) = go fs rest n
|
||||||
| checkcopies n (Just $ Remote.uuid r) =
|
| checkcopies n (Just $ Remote.uuid r) =
|
||||||
dropr fs r n >>= go fs rest
|
dropr fs r n >>= go fs rest
|
||||||
| otherwise = pure n
|
| otherwise = pure n
|
||||||
|
|
|
@ -56,7 +56,8 @@ calcSyncRemotes = do
|
||||||
let syncable = filter good rs
|
let syncable = filter good rs
|
||||||
contentremotes <- filterM (not <$$> liftIO . getDynamicConfig . remoteAnnexIgnore . Remote.gitconfig) $
|
contentremotes <- filterM (not <$$> liftIO . getDynamicConfig . remoteAnnexIgnore . Remote.gitconfig) $
|
||||||
filter (\r -> Remote.uuid r /= NoUUID) syncable
|
filter (\r -> Remote.uuid r /= NoUUID) syncable
|
||||||
let (exportremotes, dataremotes) = partition (exportTree . Remote.config) contentremotes
|
let (exportremotes, nonexportremotes) = partition (exportTree . Remote.config) contentremotes
|
||||||
|
let dataremotes = filter (not . importTree . Remote.config) nonexportremotes
|
||||||
|
|
||||||
return $ \dstatus -> dstatus
|
return $ \dstatus -> dstatus
|
||||||
{ syncRemotes = syncable
|
{ syncRemotes = syncable
|
||||||
|
|
|
@ -210,8 +210,9 @@ seek' o = do
|
||||||
let gitremotes = filter (Remote.gitSyncableRemoteType . Remote.remotetype) remotes
|
let gitremotes = filter (Remote.gitSyncableRemoteType . Remote.remotetype) remotes
|
||||||
dataremotes <- filter (\r -> Remote.uuid r /= NoUUID)
|
dataremotes <- filter (\r -> Remote.uuid r /= NoUUID)
|
||||||
<$> filterM (not <$$> liftIO . getDynamicConfig . remoteAnnexIgnore . Remote.gitconfig) remotes
|
<$> filterM (not <$$> liftIO . getDynamicConfig . remoteAnnexIgnore . Remote.gitconfig) remotes
|
||||||
let (exportremotes, keyvalueremotes) = partition (exportTree . Remote.config) dataremotes
|
let (exportremotes, nonexportremotes) = partition (exportTree . Remote.config) dataremotes
|
||||||
let importremotes = filter (importTree . Remote.config) dataremotes
|
let importremotes = filter (importTree . Remote.config) dataremotes
|
||||||
|
let keyvalueremotes = partition (not . importTree . Remote.config) nonexportremotes
|
||||||
|
|
||||||
if cleanupOption o
|
if cleanupOption o
|
||||||
then do
|
then do
|
||||||
|
|
2
doc/todo/assistant_importtree.mdwn
Normal file
2
doc/todo/assistant_importtree.mdwn
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
The assistant currently will export to exporttree=yes remotes, but it will
|
||||||
|
not import from importtree=yes remotes.
|
Loading…
Reference in a new issue