git-annex/Remote/Helper
Joey Hess c20358b671
incremental verify for byteRetriever special remotes
Several special remotes verify content while it is being retrieved,
avoiding a separate checksum pass. They are: S3, bup, ddar, and
gcrypt (with a local repository).

Not done when using chunking, yet.

Complicated by Retriever needing to change to be polymorphic. Which in turn
meant RankNTypes is needed, and also needed some code changes. The
change in Remote.External does not change behavior at all but avoids
the type checking failing because of a "rigid, skolem type" which
"would escape its scope". So I refactored slightly to make the type
checker's job easier there.

Unfortunately, directory uses fileRetriever (except when chunked),
so it is not amoung the improved ones. Fixing that would need a way for
FileRetriever to return a Verification. But, since the file retrieved
may be encrypted or chunked, it would be extra work to always
incrementally checksum the file while retrieving it. Hm.

Some other special remotes use fileRetriever, and so don't get incremental
verification, but could be converted to byteRetriever later. One is
GitLFS, which uses downloadConduit, which writes to the file, so could
verify as it goes. Other special remotes like web could too, but don't
use Remote.Helper.Special and so will need to be addressed separately.

Sponsored-by: Dartmouth College's DANDI project
2021-08-11 14:20:38 -04:00
..
Chunked incremental checksum on download from ssh or p2p 2021-02-09 17:03:27 -04:00
AWS.hs include credPairRemoteFields in RemoteConfigParsers 2020-01-15 10:57:45 -04:00
Chunked.hs incremental verify for byteRetriever special remotes 2021-08-11 14:20:38 -04:00
Encryptable.hs Avoid more than 1 gpg password prompt at the same time 2021-04-27 16:36:44 -04:00
ExportImport.hs move verifyKeyContent to Annex.Verify 2021-07-27 14:07:23 -04:00
Git.hs convert TopFilePath to use RawFilePath 2019-12-09 15:07:21 -04:00
Hooks.hs propagate signals to the transferrer process group 2020-12-11 15:32:00 -04:00
Http.hs convert getFileSize to RawFilePath 2020-11-05 11:32:57 -04:00
Messages.hs remove "checking remotename" message 2021-04-27 13:05:27 -04:00
P2P.hs move verifyKeyContent to Annex.Verify 2021-07-27 14:07:23 -04:00
ReadOnly.hs convert renameExport to throw exception 2020-05-15 15:08:09 -04:00
Special.hs incremental verify for byteRetriever special remotes 2021-08-11 14:20:38 -04:00
Ssh.hs remove "checking remotename" message 2021-04-27 13:05:27 -04:00
ThirdPartyPopulated.hs borg: Support importing files that are hard linked in the borg backup 2021-03-26 13:29:34 -04:00