remove the older move --force, which never behaved as documented and seems useless
* move: --force was accidentially enabling two unrelated behaviors since 6.20180427. The older behavior, which has never been well documented and seems almost entirely useless, has been removed. * copy: --force no longer does anything. This commit was sponsored by Øyvind Andersen Holm.
This commit is contained in:
parent
ca6f5be284
commit
2fabd7cdb5
5 changed files with 41 additions and 19 deletions
|
@ -4,6 +4,10 @@ git-annex (6.20180510) UNRELEASED; urgency=medium
|
||||||
* Don't allow entering a view with staged or unstaged changes.
|
* Don't allow entering a view with staged or unstaged changes.
|
||||||
* Workaround for bug in an old version of cryptonite that broke https
|
* Workaround for bug in an old version of cryptonite that broke https
|
||||||
downloads, by using curl for downloads when git-annex is built with it.
|
downloads, by using curl for downloads when git-annex is built with it.
|
||||||
|
* move: --force was accidentially enabling two unrelated behaviors
|
||||||
|
since 6.20180427. The older behavior, which has never been well
|
||||||
|
documented and seems almost entirely useless, has been removed.
|
||||||
|
* copy: --force no longer does anything.
|
||||||
|
|
||||||
-- Joey Hess <id@joeyh.name> Mon, 14 May 2018 13:42:41 -0400
|
-- Joey Hess <id@joeyh.name> Mon, 14 May 2018 13:42:41 -0400
|
||||||
|
|
||||||
|
|
|
@ -186,15 +186,13 @@ fromStart removewhen afile key ai src = case removewhen of
|
||||||
next $ fromPerform src removewhen key afile
|
next $ fromPerform src removewhen key afile
|
||||||
|
|
||||||
fromOk :: Remote -> Key -> Annex Bool
|
fromOk :: Remote -> Key -> Annex Bool
|
||||||
fromOk src key = go =<< Annex.getState Annex.force
|
fromOk src key
|
||||||
|
| Remote.hasKeyCheap src =
|
||||||
|
either (const checklog) return =<< haskey
|
||||||
|
| otherwise = checklog
|
||||||
where
|
where
|
||||||
go True = either (const $ return True) return =<< haskey
|
|
||||||
go False
|
|
||||||
| Remote.hasKeyCheap src =
|
|
||||||
either (const expensive) return =<< haskey
|
|
||||||
| otherwise = expensive
|
|
||||||
haskey = Remote.hasKey src key
|
haskey = Remote.hasKey src key
|
||||||
expensive = do
|
checklog = do
|
||||||
u <- getUUID
|
u <- getUUID
|
||||||
remotes <- Remote.keyPossibilities key
|
remotes <- Remote.keyPossibilities key
|
||||||
return $ u /= Remote.uuid src && elem src remotes
|
return $ u /= Remote.uuid src && elem src remotes
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 2"""
|
||||||
|
date="2018-05-21T17:04:56Z"
|
||||||
|
content="""
|
||||||
|
Actually the --force documentation re location tracking is not a good
|
||||||
|
description of the behavior. It only affects --from, and with --force
|
||||||
|
it still contacts the remote to check if it has the content. Only
|
||||||
|
if that check fails to return a result (ie, the remote can't be contacted),
|
||||||
|
does it assume that the remote has the content, rather than the default
|
||||||
|
behavior of falling back to looking at the location tracking information.
|
||||||
|
|
||||||
|
It's hard to see how that could be useful at all; if it fails in
|
||||||
|
communication with the remote, presumably the content transfer will later
|
||||||
|
fail as well.
|
||||||
|
|
||||||
|
The only actual behavior change would be when the remote cannot be
|
||||||
|
contacted, and the location tracking information says it does not contain a
|
||||||
|
file. Then `move --force --from remote` will fail, because it tries
|
||||||
|
to perform the move and can't contact the remote, while `move --from
|
||||||
|
remote` will succeed, because it assumes the location tracking is right.
|
||||||
|
|
||||||
|
That does not seem a useful distinction. And that was the behavior all the
|
||||||
|
way back to the first commit of this "feature" in 2013.
|
||||||
|
|
||||||
|
So, removing that.
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
There may be room for a new option that actually does whatever you were
|
||||||
|
hoping --force did. So let's talk about that..
|
||||||
|
"""]]
|
|
@ -46,12 +46,6 @@ Copies the content of files from or to another remote.
|
||||||
already has content. This can be faster, but might skip copying content
|
already has content. This can be faster, but might skip copying content
|
||||||
to the remote in some cases.
|
to the remote in some cases.
|
||||||
|
|
||||||
* `--force`
|
|
||||||
|
|
||||||
When copying content from a remote, ignore location tracking information
|
|
||||||
and always check if the remote has content. Can be useful if the location
|
|
||||||
tracking information is out of date.
|
|
||||||
|
|
||||||
* `--all` `-A`
|
* `--all` `-A`
|
||||||
|
|
||||||
Rather than specifying a filename or path to copy, this option can be
|
Rather than specifying a filename or path to copy, this option can be
|
||||||
|
|
|
@ -69,12 +69,6 @@ Moves the content of files from or to another remote.
|
||||||
already has content. This can be faster, but might skip moving content
|
already has content. This can be faster, but might skip moving content
|
||||||
to the remote in some cases.
|
to the remote in some cases.
|
||||||
|
|
||||||
* `--force`
|
|
||||||
|
|
||||||
When moving content from a remote, ignore location tracking information
|
|
||||||
and always check if the remote has content. Can be useful if the location
|
|
||||||
tracking information is out of date.
|
|
||||||
|
|
||||||
* file matching options
|
* file matching options
|
||||||
|
|
||||||
The [[git-annex-matching-options]](1)
|
The [[git-annex-matching-options]](1)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue