My example use case is I have a number of archive remotes. The archive groupwanted includes approxlackingcopies=1 so numcopies-1 copies get sent to the archives, along with the 1 local copy. This means that git-annex drop isn't able to drop files; they need to be manually sent to one more archive remote first.

Idea: Add a way to make a preferred content expression like lackingcopies but that excludes copies in a group.

Syntax could be: lackingcopies=number-groupname eg lackingcopies=1-client

Alternatively to excluding a group, it could only look at copies in a particular group: lackingcopies=groupname:number. This would correspond well with copies=groupname:number, and so seems better on that basis.

Both of these approaches would be more general if they supported multiple groups. Eg lackingcopies=number-client-othergroup or lackingcopies=archive,othergroup:1.

The nice thing about lackingcopies=archive,othergroup:1 is that it could be back-generalized to copies=archive,othergroup:1 --Joey

Considering back-compat, older versions of git-annex need to fail to parse the new syntax, rather than misparsing it. So, reusing "=foo:number" is not good, because old git-annex will take "foo" to be the name of a group, and eg "not copies=-offsite=1" would evaluate to true, because there are no copies in group "-offsite".

So I have settled on "=grouplimit=number" with a group limit syntax that supports both including and excluding groups. Eg, "lackingcopies=backup+archive-offsite=1" --Joey

done --Joey