summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Types/StandardGroups.hs2
-rw-r--r--doc/preferred_content.mdwn8
2 files changed, 8 insertions, 2 deletions
diff --git a/Types/StandardGroups.hs b/Types/StandardGroups.hs
index 32e2cb3af..aeae200c2 100644
--- a/Types/StandardGroups.hs
+++ b/Types/StandardGroups.hs
@@ -32,6 +32,6 @@ descStandardGroup BackupGroup = "backup: collects all files"
{- See doc/preferred_content.mdwn for explanations of these expressions. -}
preferredContent :: StandardGroup -> String
preferredContent ClientGroup = "exclude=*/archive/*"
-preferredContent TransferGroup = "not inallgroup=client and " ++ preferredContent ClientGroup
+preferredContent TransferGroup = "not (inallgroup=client or not copies=client:2) and " ++ preferredContent ClientGroup
preferredContent ArchiveGroup = "not copies=archive:1"
preferredContent BackupGroup = "" -- all content is preferred
diff --git a/doc/preferred_content.mdwn b/doc/preferred_content.mdwn
index c130a07e6..6205eb4c9 100644
--- a/doc/preferred_content.mdwn
+++ b/doc/preferred_content.mdwn
@@ -61,7 +61,13 @@ USB drive used in a sneakernet.
The preferred content expression for these causes them to get and retain
data until all clients have a copy.
-`not inallgroup=client and exclude=*/archive/*`
+`not (inallgroup=client or not copies=client:2) and exclude=*/archive/*`
+
+The "not copies=client:2" part of the above handles the case where
+there is only one client repository. It makes a transfer repository
+speculatively prefer content in this case, even though it as of yet
+has nowhere to transfer it to. Presumably, another client repository
+will be added later.
### archive