fsck: When run with --all or --unused, while .gitattributes annex.numcopies cannot be honored since it's operating on keys instead of files, make it honor the global numcopies setting, and the annex.numcopies git config setting.
This commit is contained in:
parent
2845224884
commit
134fdefb8c
4 changed files with 40 additions and 10 deletions
|
@ -68,7 +68,7 @@ seek ps = do
|
|||
from <- getOptionField fsckFromOption Remote.byNameWithUUID
|
||||
i <- getIncremental
|
||||
withKeyOptions
|
||||
(startKey i)
|
||||
(\k -> startKey i k =<< getNumCopies)
|
||||
(withFilesInGit $ whenAnnexed $ start from i)
|
||||
ps
|
||||
|
||||
|
@ -162,18 +162,19 @@ performRemote key file backend numcopies remote =
|
|||
)
|
||||
dummymeter _ = noop
|
||||
|
||||
startKey :: Incremental -> Key -> CommandStart
|
||||
startKey inc key = case Backend.maybeLookupBackendName (Types.Key.keyBackendName key) of
|
||||
Nothing -> stop
|
||||
Just backend -> runFsck inc (key2file key) key $ performAll key backend
|
||||
startKey :: Incremental -> Key -> NumCopies -> CommandStart
|
||||
startKey inc key numcopies =
|
||||
case Backend.maybeLookupBackendName (Types.Key.keyBackendName key) of
|
||||
Nothing -> stop
|
||||
Just backend -> runFsck inc (key2file key) key $
|
||||
performKey key backend numcopies
|
||||
|
||||
{- Note that numcopies cannot be checked in --all mode, since we do not
|
||||
- have associated filenames to look up in the .gitattributes file. -}
|
||||
performAll :: Key -> Backend -> Annex Bool
|
||||
performAll key backend = check
|
||||
performKey :: Key -> Backend -> NumCopies -> Annex Bool
|
||||
performKey key backend numcopies = check
|
||||
[ verifyLocationLog key (key2file key)
|
||||
, checkKeySize key
|
||||
, checkBackend backend key Nothing
|
||||
, checkKeyNumCopies key (key2file key) numcopies
|
||||
]
|
||||
|
||||
check :: [Annex Bool] -> Annex Bool
|
||||
|
@ -357,7 +358,7 @@ checkBackendOr' bad backend key file postcheck =
|
|||
, return True
|
||||
)
|
||||
|
||||
checkKeyNumCopies :: Key -> FilePath -> NumCopies -> Annex Bool
|
||||
checkKeyNumCopies :: Key -> String -> NumCopies -> Annex Bool
|
||||
checkKeyNumCopies key file numcopies = do
|
||||
(untrustedlocations, safelocations) <- trustPartition UnTrusted =<< Remote.keyLocations key
|
||||
let present = NumCopies (length safelocations)
|
||||
|
|
4
debian/changelog
vendored
4
debian/changelog
vendored
|
@ -12,6 +12,10 @@ git-annex (5.20140211) UNRELEASED; urgency=medium
|
|||
of annexed files within a view.
|
||||
* Add progress display for transfers to/from external special remotes.
|
||||
* unused: Fix to actually detect unused keys when in direct mode.
|
||||
* fsck: When run with --all or --unused, while .gitattributes
|
||||
annex.numcopies cannot be honored since it's operating on keys
|
||||
instead of files, make it honor the global numcopies setting,
|
||||
and the annex.numcopies git config setting.
|
||||
* Windows webapp: Can set up box.com, Amazon S3, and rsync.net remotes
|
||||
* Windows webapp: Can create repos on removable drives.
|
||||
* Windows: Ensure HOME is set, as needed by bundled cygwin utilities.
|
||||
|
|
|
@ -22,3 +22,19 @@ Linux (Ubuntu 13.10)
|
|||
|
||||
# End of transcript or log.
|
||||
"""]]
|
||||
|
||||
> It's expected that --all (and --unused) make .gitattributes
|
||||
> annex.numcopies settings be ignored, because with these options git-annex
|
||||
> is operating on keys, it does not know or care what filename they're
|
||||
> associated with, and so cannot look them up in .gitattributes. I have
|
||||
> improved the documentation of .gitattributes files to mention this
|
||||
> limitation.
|
||||
>
|
||||
> I also notice that fsck --all is not checking .git/config's
|
||||
> annex.numcopies or the new global numcopies setting. It certianly makes
|
||||
> sense for those numcopies settings to be paid attention to.
|
||||
> [[fixed|done]] --[[Joey]]
|
||||
>
|
||||
> (--all is faster because it can quickly scan through .git/annex/objects
|
||||
> to find everything, rather than looking at the symlink target of every
|
||||
> file in the work tree.)
|
||||
|
|
|
@ -1625,6 +1625,15 @@ for flac files:
|
|||
|
||||
Note that setting numcopies to 0 is very unsafe.
|
||||
|
||||
These settings are honored by git-annex whenever it's operating on a
|
||||
matching file. However, when using --all, --unused, or --key to specify
|
||||
keys to operate on, git-annex is operating on keys and not files, so will
|
||||
not honor the settings from .gitattributes.
|
||||
|
||||
Also note that when using views, only the toplevel .gitattributes file is
|
||||
preserved in the view, so other settings in other files won't have any
|
||||
efffect.
|
||||
|
||||
# FILES
|
||||
|
||||
These files are used by git-annex:
|
||||
|
|
Loading…
Reference in a new issue