fix bug involving local git remote and out of date location log
get --from, move --from: When used with a local git remote, these used to silently skip files that the location log thought were present on the remote, when the remote actually no longer contained them. Since that behavior could be surprising, now instead display a warning. I got very confused when I encountered this behavior, since it was silently skipping a file I needed that whereis said was on the remote. get without --from already displayed a "unable to access these remotes" message, which while a bit misleading in that the remote is likely accessible, but just doesn't contain the file, at least indicated something went wrong. Having get --from display a warning makes it in line with get w/o --from, so seems certianly ok. It might be there are situations where move --from is used, on eg a whole directory, and the user only wants to move whatever is present in the remote, and is perfectly ok with files that are not present being skipped. So I'm less sure about the new warning being ok there. OTOH, only local git remotes avoiding displaying a warning in that case too, so this just brings them into line with other remotes. (Also note that this makes it a little bit faster when dealing with a lot of files, since it avoids a redundant stat of the file.)
This commit is contained in:
parent
2f87c6db79
commit
cd1676d604
4 changed files with 13 additions and 11 deletions
|
@ -19,6 +19,10 @@ git-annex (8.20200331) UNRELEASED; urgency=medium
|
|||
with a large -J value.
|
||||
* Avoid running with more git check-attr and check-ignore processes than
|
||||
there are CPU cores when run with a large -J value.
|
||||
* get --from, move --from: When used with a local git remote, these used
|
||||
to silently skip files that the location log thought were present on the
|
||||
remote, when the remote actually no longer contained them. Since that
|
||||
behavior could be surprising, now instead display a warning.
|
||||
|
||||
-- Joey Hess <id@joeyh.name> Mon, 30 Mar 2020 15:58:34 -0400
|
||||
|
||||
|
|
|
@ -187,16 +187,10 @@ fromStart removewhen afile key ai src = case removewhen of
|
|||
fromPerform src removewhen key afile
|
||||
|
||||
fromOk :: Remote -> Key -> Annex Bool
|
||||
fromOk src key
|
||||
| Remote.hasKeyCheap src =
|
||||
either (const checklog) return =<< haskey
|
||||
| otherwise = checklog
|
||||
where
|
||||
haskey = Remote.hasKey src key
|
||||
checklog = do
|
||||
u <- getUUID
|
||||
remotes <- Remote.keyPossibilities key
|
||||
return $ u /= Remote.uuid src && elem src remotes
|
||||
fromOk src key = do
|
||||
u <- getUUID
|
||||
remotes <- Remote.keyPossibilities key
|
||||
return $ u /= Remote.uuid src && elem src remotes
|
||||
|
||||
fromPerform :: Remote -> RemoveWhen -> Key -> AssociatedFile -> CommandPerform
|
||||
fromPerform src removewhen key afile = do
|
||||
|
|
|
@ -527,7 +527,9 @@ copyFromRemote'' repo forcersync r st@(State connpool _ _ _ _) key file dest met
|
|||
onLocalFast st $ do
|
||||
v <- Annex.Content.prepSendAnnex key
|
||||
case v of
|
||||
Nothing -> return (False, UnVerified)
|
||||
Nothing -> do
|
||||
warning "content is not present in remote"
|
||||
return (False, UnVerified)
|
||||
Just (object, checksuccess) -> do
|
||||
copier <- mkCopier hardlink st params
|
||||
runTransfer (Transfer Download u (fromKey id key))
|
||||
|
|
|
@ -5,3 +5,5 @@ anything.
|
|||
(This happened with a git remote on a drive fwiw).
|
||||
|
||||
--[[Joey]]
|
||||
|
||||
> [[fixed|done]] --[[Joey]]
|
||||
|
|
Loading…
Reference in a new issue