summaryrefslogtreecommitdiff
path: root/doc/design/preferred_content.mdwn
blob: 3972b8b583741dba802c1d8d45e9939ab29e740a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
The [[preferred_content]] expressions didn't have a design document, but
it's a small non-turing complete DSL for expressing which objects a
repository prefers to contain.

One thing that needs to be written down though is the stability analysis
that must be done of preferred content expressions. 

It's important that when a set of repositories all look at one-another's
preferred content expressions, and copy/move/drop objects to satisfy them,
they end up at a steady state. So, a given preferred content expression
should ideally evaluate to the same answer for each key, from the
perspective of each repository.

The best way to ensure that is the case is to only use terms in preferred
content expressions that rely on state that is shared between all
repositories. So, state in the git-annex branch, or the master branch
(assuming all repositories have master checked out).

Since git is eventually consistent, there might be disagreements about
which object belongs where, but once consistency is reached, things will
settle down.