git-annex/Remote
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
..
Directory incremental verify for byteRetriever special remotes 2021-08-11 14:20:38 -04:00
External Added GETGITREMOTENAME to extenal special remote protocol 2021-01-26 12:42:47 -04:00
Helper incremental verify for byteRetriever special remotes 2021-08-11 14:20:38 -04:00
List auto-init autoenable=yes 2020-05-27 12:40:35 -04:00
Rsync add newtypes for QuickCheck to avoid LANG=C issues 2020-11-09 20:21:18 -04:00
WebDAV fix exporting when the file is in the top of the repo 2021-03-16 14:17:29 -04:00
Adb.hs incremental verify for byteRetriever special remotes 2021-08-11 14:20:38 -04:00
BitTorrent.hs Tahoe: Avoid verifying hash after download, since tahoe does sufficient verification itself 2021-02-09 13:42:16 -04:00
Borg.hs simplify and speed up Utility.FileSystemEncoding 2021-08-11 12:13:31 -04:00
Bup.hs incremental verify for byteRetriever special remotes 2021-08-11 14:20:38 -04:00
Ddar.hs incremental verify for byteRetriever special remotes 2021-08-11 14:20:38 -04:00
Directory.hs incremental verify for byteRetriever special remotes 2021-08-11 14:20:38 -04:00
External.hs incremental verify for byteRetriever special remotes 2021-08-11 14:20:38 -04:00
GCrypt.hs incremental verify for byteRetriever special remotes 2021-08-11 14:20:38 -04:00
Git.hs propagate debugging into remote's Annex monad 2021-07-26 11:40:51 -04:00
GitLFS.hs incremental verify for byteRetriever special remotes 2021-08-11 14:20:38 -04:00
Glacier.hs incremental verify for byteRetriever special remotes 2021-08-11 14:20:38 -04:00
Hook.hs incremental verify for byteRetriever special remotes 2021-08-11 14:20:38 -04:00
HttpAlso.hs remove "checking remotename" message 2021-04-27 13:05:27 -04:00
List.hs start borg special remote 2020-12-18 16:03:51 -04:00
P2P.hs incremental checksum on download from ssh or p2p 2021-02-09 17:03:27 -04:00
Rsync.hs simplify 2021-08-09 15:17:48 -04:00
S3.hs incremental verify for byteRetriever special remotes 2021-08-11 14:20:38 -04:00
Tahoe.hs Tahoe: Avoid verifying hash after download, since tahoe does sufficient verification itself 2021-02-09 13:42:16 -04:00
Web.hs remove "checking remotename" message 2021-04-27 13:05:27 -04:00
WebDAV.hs incremental verify for byteRetriever special remotes 2021-08-11 14:20:38 -04:00