dead: A command which says that a repository is gone for good and you don't want git-annex to mention it again.
This commit is contained in:
parent
7b08584c55
commit
251c01d51e
8 changed files with 40 additions and 15 deletions
|
@ -46,6 +46,7 @@ import qualified Command.Uninit
|
|||
import qualified Command.Trust
|
||||
import qualified Command.Untrust
|
||||
import qualified Command.Semitrust
|
||||
import qualified Command.Dead
|
||||
import qualified Command.AddUrl
|
||||
import qualified Command.Map
|
||||
import qualified Command.Upgrade
|
||||
|
@ -70,6 +71,7 @@ cmds = concat
|
|||
, Command.Trust.def
|
||||
, Command.Untrust.def
|
||||
, Command.Semitrust.def
|
||||
, Command.Dead.def
|
||||
, Command.AddUrl.def
|
||||
, Command.FromKey.def
|
||||
, Command.DropKey.def
|
||||
|
|
|
@ -27,6 +27,7 @@ module Logs.Location (
|
|||
import Common.Annex
|
||||
import qualified Annex.Branch
|
||||
import Logs.Presence
|
||||
import Logs.Trust
|
||||
|
||||
{- Log a change in the presence of a key's value in a repository. -}
|
||||
logChange :: Key -> UUID -> LogStatus -> Annex ()
|
||||
|
@ -34,9 +35,14 @@ logChange key (UUID u) s = addLog (logFile key) =<< logNow s u
|
|||
logChange _ NoUUID _ = return ()
|
||||
|
||||
{- Returns a list of repository UUIDs that, according to the log, have
|
||||
- the value of a key. -}
|
||||
- the value of a key.
|
||||
-
|
||||
- Dead repositories are skipped.
|
||||
-}
|
||||
keyLocations :: Key -> Annex [UUID]
|
||||
keyLocations key = map toUUID <$> (currentLog . logFile) key
|
||||
keyLocations key = do
|
||||
l <- map toUUID <$> (currentLog . logFile) key
|
||||
snd <$> trustPartition DeadTrusted l
|
||||
|
||||
{- Finds all keys that have location log information.
|
||||
- (There may be duplicate keys in the list.) -}
|
||||
|
|
|
@ -67,12 +67,14 @@ parseTrust s
|
|||
w = words s
|
||||
parse "1" = Trusted
|
||||
parse "0" = UnTrusted
|
||||
parse "X" = DeadTrusted
|
||||
parse _ = SemiTrusted
|
||||
|
||||
showTrust :: TrustLevel -> String
|
||||
showTrust SemiTrusted = "?"
|
||||
showTrust UnTrusted = "0"
|
||||
showTrust Trusted = "1"
|
||||
showTrust UnTrusted = "0"
|
||||
showTrust DeadTrusted = "X"
|
||||
showTrust SemiTrusted = "?"
|
||||
|
||||
{- Changes the trust level for a uuid in the trustLog. -}
|
||||
trustSet :: UUID -> TrustLevel -> Annex ()
|
||||
|
|
|
@ -14,7 +14,7 @@ import qualified Data.Map as M
|
|||
|
||||
import Types.UUID
|
||||
|
||||
data TrustLevel = SemiTrusted | UnTrusted | Trusted
|
||||
data TrustLevel = Trusted | SemiTrusted | UnTrusted | DeadTrusted
|
||||
deriving Eq
|
||||
|
||||
type TrustMap = M.Map UUID TrustLevel
|
||||
|
|
2
debian/changelog
vendored
2
debian/changelog
vendored
|
@ -15,6 +15,8 @@ git-annex (3.20111123) UNRELEASED; urgency=low
|
|||
git repository.
|
||||
* --inbackend can be used to make git-annex only operate on files
|
||||
whose content is stored using a specified key-value backend.
|
||||
* dead: A command which says that a repository is gone for good
|
||||
and you don't want git-annex to mention it again.
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Tue, 22 Nov 2011 17:53:42 -0400
|
||||
|
||||
|
|
|
@ -173,6 +173,11 @@ subdirectories).
|
|||
|
||||
Returns a repository to the default semi trusted state.
|
||||
|
||||
* dead [repository ...]
|
||||
|
||||
Indicates that the repository has been irretrevably lost.
|
||||
(To undo, use semitrust.)
|
||||
|
||||
# REPOSITORY MAINTENANCE COMMANDS
|
||||
|
||||
* fsck [path ...]
|
||||
|
|
|
@ -4,16 +4,16 @@ drive died or some other misfortune has befallen your data.
|
|||
Unless you configured backups, git-annex can't get your data back. But it
|
||||
can help you deal with the loss.
|
||||
|
||||
First, go somewhere that knows about the lost repository, and mark it as
|
||||
untrusted.
|
||||
Go somewhere that knows about the lost repository, and mark it as
|
||||
dead:
|
||||
|
||||
git annex untrust usbdrive
|
||||
git annex dead usbdrive
|
||||
|
||||
To remind yourself later what happened, you can change its description, too:
|
||||
This retains the [[location_tracking]] information for the repository,
|
||||
but avoids trying to access it, or list it as a location where files
|
||||
are present.
|
||||
|
||||
git annex describe usbdrive "USB drive lost in Timbuktu. Probably gone forever."
|
||||
If you later found the drive, you could let git-annex know it's found
|
||||
like so:
|
||||
|
||||
This retains the [[location_tracking]] information for the repository.
|
||||
Maybe you'll find the drive later. Maybe that's impossible. Either way,
|
||||
this lets git-annex tell you why a file is no longer accessible, and
|
||||
it avoids it relying on that drive to hold any content.
|
||||
git annex semitrusted usbdrive
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
Git-annex supports three levels of trust of a repository:
|
||||
Git-annex supports several levels of trust of a repository:
|
||||
|
||||
* semitrusted (default)
|
||||
* untrusted
|
||||
* trusted
|
||||
* dead
|
||||
|
||||
## semitrusted
|
||||
|
||||
|
@ -49,3 +50,10 @@ trust temporarily.
|
|||
|
||||
To configure a repository as fully and permanently trusted,
|
||||
use the `git annex trust` command.
|
||||
|
||||
## dead
|
||||
|
||||
This is used to indicate that you have no trust that the repository
|
||||
exists at all. It's appropriate to use when a drive has been lost,
|
||||
or a directory irretrevably deleted. It will make git-annex avoid
|
||||
even showing the repository as a place where data might still reside.
|
||||
|
|
Loading…
Reference in a new issue