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
|
| FullArchiveGroup
|
||||||
| SourceGroup
|
| SourceGroup
|
||||||
| ManualGroup
|
| ManualGroup
|
||||||
|
| UnwantedGroup
|
||||||
deriving (Eq, Ord, Enum, Bounded, Show)
|
deriving (Eq, Ord, Enum, Bounded, Show)
|
||||||
|
|
||||||
fromStandardGroup :: StandardGroup -> String
|
fromStandardGroup :: StandardGroup -> String
|
||||||
|
@ -27,6 +28,7 @@ fromStandardGroup SmallArchiveGroup = "smallarchive"
|
||||||
fromStandardGroup FullArchiveGroup = "archive"
|
fromStandardGroup FullArchiveGroup = "archive"
|
||||||
fromStandardGroup SourceGroup = "source"
|
fromStandardGroup SourceGroup = "source"
|
||||||
fromStandardGroup ManualGroup = "manual"
|
fromStandardGroup ManualGroup = "manual"
|
||||||
|
fromStandardGroup UnwantedGroup = "unwanted"
|
||||||
|
|
||||||
toStandardGroup :: String -> Maybe StandardGroup
|
toStandardGroup :: String -> Maybe StandardGroup
|
||||||
toStandardGroup "client" = Just ClientGroup
|
toStandardGroup "client" = Just ClientGroup
|
||||||
|
@ -37,6 +39,7 @@ toStandardGroup "smallarchive" = Just SmallArchiveGroup
|
||||||
toStandardGroup "archive" = Just FullArchiveGroup
|
toStandardGroup "archive" = Just FullArchiveGroup
|
||||||
toStandardGroup "source" = Just SourceGroup
|
toStandardGroup "source" = Just SourceGroup
|
||||||
toStandardGroup "manual" = Just ManualGroup
|
toStandardGroup "manual" = Just ManualGroup
|
||||||
|
toStandardGroup "unwanted" = Just UnwantedGroup
|
||||||
toStandardGroup _ = Nothing
|
toStandardGroup _ = Nothing
|
||||||
|
|
||||||
descStandardGroup :: StandardGroup -> String
|
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 FullArchiveGroup = "full archive: archives all files not archived elsewhere"
|
||||||
descStandardGroup SourceGroup = "file source: moves files on to other repositories"
|
descStandardGroup SourceGroup = "file source: moves files on to other repositories"
|
||||||
descStandardGroup ManualGroup = "manual mode: only stores files you manually choose"
|
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. -}
|
{- See doc/preferred_content.mdwn for explanations of these expressions. -}
|
||||||
preferredContent :: StandardGroup -> String
|
preferredContent :: StandardGroup -> String
|
||||||
preferredContent ClientGroup = "exclude=*/archive/* and exclude=archive/*"
|
preferredContent ClientGroup = normal
|
||||||
preferredContent TransferGroup = "not (inallgroup=client and copies=client:2) and " ++ preferredContent ClientGroup
|
"exclude=*/archive/* and exclude=archive/*"
|
||||||
|
preferredContent TransferGroup = normal $
|
||||||
|
"not (inallgroup=client and copies=client:2) and " ++ preferredContent ClientGroup
|
||||||
preferredContent BackupGroup = "include=*"
|
preferredContent BackupGroup = "include=*"
|
||||||
preferredContent IncrementalBackupGroup = "include=* and (not copies=incrementalbackup:1)"
|
preferredContent IncrementalBackupGroup = normal $
|
||||||
preferredContent SmallArchiveGroup = "(include=*/archive/* or include=archive/*) and " ++ preferredContent FullArchiveGroup
|
"include=* and (not copies=incrementalbackup:1)"
|
||||||
preferredContent FullArchiveGroup = "not (copies=archive:1 or copies=smallarchive: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 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.
|
* git-annex-shell: Passes rsync --bwlimit options on rsync.
|
||||||
Thanks, guilhem for the patch.
|
Thanks, guilhem for the patch.
|
||||||
* webapp: Added UI to delete repositories. Closes: #689847
|
* 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
|
-- 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
|
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
|
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
|
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
|
### client
|
||||||
|
|
||||||
All content is preferred, unless it's in a "archive" directory.
|
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
|
### transfer
|
||||||
|
|
||||||
|
@ -95,7 +100,7 @@ USB drive used in a sneakernet.
|
||||||
The preferred content expression for these causes them to get and retain
|
The preferred content expression for these causes them to get and retain
|
||||||
data until all clients have a copy.
|
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
|
The "copies=client:2" part of the above handles the case where
|
||||||
there is only one client repository. It makes a transfer repository
|
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
|
Only prefers content that's not already backed up to another backup
|
||||||
or incremental backup repository.
|
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
|
### small archive
|
||||||
|
|
||||||
Only prefers content that's located in an "archive" directory, and
|
Only prefers content that's located in an "archive" directory, and
|
||||||
only if it's not already been archived somewhere else.
|
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
|
### full archive
|
||||||
|
|
||||||
All content is preferred, unless it's already been archived somewhere else.
|
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!),
|
Note that if you want to archive multiple copies (not a bad idea!),
|
||||||
you should instead configure all your archive repositories with a
|
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"
|
Only content that is present is preferred. Content in "archive"
|
||||||
directories is never preferred.
|
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