Adjust built-in preferred content expressions to make most types of repositories want content that is only located on untrusted or dead repositories.
This commit is contained in:
parent
c57baaaa30
commit
940e167ecc
3 changed files with 44 additions and 13 deletions
|
@ -16,6 +16,7 @@ data StandardGroup
|
|||
| FullArchiveGroup
|
||||
| SourceGroup
|
||||
| ManualGroup
|
||||
| UnwantedGroup
|
||||
deriving (Eq, Ord, Enum, Bounded, Show)
|
||||
|
||||
fromStandardGroup :: StandardGroup -> String
|
||||
|
@ -27,6 +28,7 @@ fromStandardGroup SmallArchiveGroup = "smallarchive"
|
|||
fromStandardGroup FullArchiveGroup = "archive"
|
||||
fromStandardGroup SourceGroup = "source"
|
||||
fromStandardGroup ManualGroup = "manual"
|
||||
fromStandardGroup UnwantedGroup = "unwanted"
|
||||
|
||||
toStandardGroup :: String -> Maybe StandardGroup
|
||||
toStandardGroup "client" = Just ClientGroup
|
||||
|
@ -37,6 +39,7 @@ toStandardGroup "smallarchive" = Just SmallArchiveGroup
|
|||
toStandardGroup "archive" = Just FullArchiveGroup
|
||||
toStandardGroup "source" = Just SourceGroup
|
||||
toStandardGroup "manual" = Just ManualGroup
|
||||
toStandardGroup "unwanted" = Just UnwantedGroup
|
||||
toStandardGroup _ = Nothing
|
||||
|
||||
descStandardGroup :: StandardGroup -> String
|
||||
|
@ -48,14 +51,26 @@ descStandardGroup SmallArchiveGroup = "small archive: archives files located in
|
|||
descStandardGroup FullArchiveGroup = "full archive: archives all files not archived elsewhere"
|
||||
descStandardGroup SourceGroup = "file source: moves files on to other repositories"
|
||||
descStandardGroup ManualGroup = "manual mode: only stores files you manually choose"
|
||||
descStandardGroup UnwantedGroup "unwanted: a repository in the process of being removed"
|
||||
|
||||
{- See doc/preferred_content.mdwn for explanations of these expressions. -}
|
||||
preferredContent :: StandardGroup -> String
|
||||
preferredContent ClientGroup = "exclude=*/archive/* and exclude=archive/*"
|
||||
preferredContent TransferGroup = "not (inallgroup=client and copies=client:2) and " ++ preferredContent ClientGroup
|
||||
preferredContent ClientGroup = normal
|
||||
"exclude=*/archive/* and exclude=archive/*"
|
||||
preferredContent TransferGroup = normal $
|
||||
"not (inallgroup=client and copies=client:2) and " ++ preferredContent ClientGroup
|
||||
preferredContent BackupGroup = "include=*"
|
||||
preferredContent IncrementalBackupGroup = "include=* and (not copies=incrementalbackup:1)"
|
||||
preferredContent SmallArchiveGroup = "(include=*/archive/* or include=archive/*) and " ++ preferredContent FullArchiveGroup
|
||||
preferredContent FullArchiveGroup = "not (copies=archive:1 or copies=smallarchive:1)"
|
||||
preferredContent IncrementalBackupGroup = normal $
|
||||
"include=* and (not copies=incrementalbackup:1)"
|
||||
preferredContent SmallArchiveGroup = normal $
|
||||
"(include=*/archive/* or include=archive/*) and " ++ preferredContent FullArchiveGroup
|
||||
preferredContent FullArchiveGroup = normal $
|
||||
"not (copies=archive:1 or copies=smallarchive:1)"
|
||||
preferredContent SourceGroup = "not (copies=1)"
|
||||
preferredContent ManualGroup = "present and exclude=*/archive/* and exclude=archive/*"
|
||||
preferredContent ManualGroup = normal $
|
||||
"present and exclude=*/archive/* and exclude=archive/*"
|
||||
preferredContent UnwantedGroup = "exclude=*"
|
||||
where
|
||||
{- Most repositories want any content that is only on untrusted
|
||||
- or dead repositories. -}
|
||||
normal s = "(" ++ s ++ ") or (not copies=semitrusted:1)"
|
||||
|
|
3
debian/changelog
vendored
3
debian/changelog
vendored
|
@ -19,6 +19,9 @@ git-annex (4.20130324) UNRELEASED; urgency=low
|
|||
* git-annex-shell: Passes rsync --bwlimit options on rsync.
|
||||
Thanks, guilhem for the patch.
|
||||
* webapp: Added UI to delete repositories. Closes: #689847
|
||||
* Adjust built-in preferred content expressions to make most types
|
||||
of repositories want content that is only located on untrusted or dead
|
||||
repositories.
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Mon, 25 Mar 2013 10:21:46 -0400
|
||||
|
||||
|
|
|
@ -77,13 +77,18 @@ drop content that is present! Don't go there..
|
|||
git-annex comes with some standard preferred content expressions, that can
|
||||
be used with repositories that are in some pre-defined groups. To make a
|
||||
repository use one of these, just set its preferred content expression
|
||||
to "standard", and put it in one of these groups:
|
||||
to "standard", and put it in one of these groups.
|
||||
|
||||
(Note that most of these standard expressions also make the repository
|
||||
prefer any content that is only currently available on untrusted and
|
||||
dead repositories. So if an untrusted repository gets connected,
|
||||
any repository that can will back it up.)
|
||||
|
||||
### client
|
||||
|
||||
All content is preferred, unless it's in a "archive" directory.
|
||||
|
||||
`exclude=*/archive/* and exclude=archive/*`
|
||||
`(exclude=*/archive/* and exclude=archive/*) or (not copies=semitrusted:1)`
|
||||
|
||||
### transfer
|
||||
|
||||
|
@ -95,7 +100,7 @@ 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 copies=client:2) and exclude=*/archive/* and exclude=archive/*`
|
||||
`(not (inallgroup=client and copies=client:2) and exclude=*/archive/* and exclude=archive/*) or (not copies=semitrusted:1)`
|
||||
|
||||
The "copies=client:2" part of the above handles the case where
|
||||
there is only one client repository. It makes a transfer repository
|
||||
|
@ -114,20 +119,20 @@ All content is preferred.
|
|||
Only prefers content that's not already backed up to another backup
|
||||
or incremental backup repository.
|
||||
|
||||
`include=* and (not copies=backup:1) and (not copies=incrementalbackup:1)`
|
||||
`(include=* and (not copies=backup:1) and (not copies=incrementalbackup:1)) or (not copies=semitrusted:1)`
|
||||
|
||||
### small archive
|
||||
|
||||
Only prefers content that's located in an "archive" directory, and
|
||||
only if it's not already been archived somewhere else.
|
||||
|
||||
`(include=*/archive/* or include=archive/*) and not (copies=archive:1 or copies=smallarchive:1)`
|
||||
`((include=*/archive/* or include=archive/*) and not (copies=archive:1 or copies=smallarchive:1)) or (not copies=semitrusted:1)`
|
||||
|
||||
### full archive
|
||||
|
||||
All content is preferred, unless it's already been archived somewhere else.
|
||||
|
||||
`not (copies=archive:1 or copies=smallarchive:1)`
|
||||
`(not (copies=archive:1 or copies=smallarchive:1)) or (not copies=semitrusted:1)`
|
||||
|
||||
Note that if you want to archive multiple copies (not a bad idea!),
|
||||
you should instead configure all your archive repositories with a
|
||||
|
@ -155,4 +160,12 @@ local copy of every file. Instead, you can manually run `git annex get`,
|
|||
Only content that is present is preferred. Content in "archive"
|
||||
directories is never preferred.
|
||||
|
||||
`present and exclude=*/archive/* and exclude=archive/*`
|
||||
`(present and exclude=*/archive/* and exclude=archive/*) or (not copies=semitrusted:1)`
|
||||
|
||||
### unwanted
|
||||
|
||||
Use for repositories that you don't want to exist. This will result
|
||||
in any content on them being moved away to other repositories. (Works
|
||||
best when the unwanted repository is also marked as untrusted or dead.)
|
||||
|
||||
`exclude=*`
|
||||
|
|
Loading…
Reference in a new issue