Commit graph

79 commits

Author SHA1 Message Date
Joey Hess
703c437bd9 rename modules for data types into Types/ directory 2011-06-01 21:56:04 -04:00
Joey Hess
93a4f3d4e6 Add --debug option. Closes: #627499
This takes advantage of the debug logging done by missingh, and I added
my own debug messages for executeFile calls. There are still some other
low-level ways git-annex runs stuff that are not shown by debugging,
but this gets most of it easily.
2011-05-21 11:52:13 -04:00
Joey Hess
21d9c84e72 more standard names for whenM and unlessM operators
These are defined in ifelse, but it's not currently available and I don't
want to pull in a library for 6 lines of code anyhow.

Also, ifelse sets the fixity to 1, which does not allow >>? error $ ...
2011-05-17 11:45:24 -04:00
Joey Hess
c91929f693 add whenM and unlessM
Just more golfing.. I am pretty sure something in a library somewhere can
do this, but I have been unable to find it.
2011-05-17 03:13:11 -04:00
Joey Hess
760cde28b6 more pointless monadic golfing 2011-05-16 14:49:28 -04:00
Joey Hess
0a7bcd47ae IA: do not create bucket at initremote time
This way, the metadata sent when uploading a file is applied to the bucket
then.
2011-05-16 13:10:26 -04:00
Joey Hess
1d2984441c add a few tweaks to make it easy to use the Internet Archive's variant of S3
In particular, munge key filenames to comply with the IA's filename limits,
disable encryption, support their nonstandard way of creating buckets, and
allow x-amz-* headers to be specified in initremote to set item metadata.

Still TODO: initremote does not handle multiword metadata headers right.
2011-05-16 11:20:35 -04:00
Joey Hess
79c74bf27d refactor 2011-05-16 09:42:54 -04:00
Joey Hess
3e15a8a791 Maybe reduction pass 2 2011-05-15 12:25:58 -04:00
Joey Hess
cad0e1c8b7 simplified a bunch of Maybe handling 2011-05-15 03:38:08 -04:00
Joey Hess
3c319cd844 avoid always decrypting cipher
Last change moved cipher decryption to remote setup time.
Fixed this with a bit of a hack.
2011-05-01 15:13:54 -04:00
Joey Hess
2ddade8132 factor out base64 code 2011-05-01 14:27:40 -04:00
Joey Hess
1f84c7a964 S3: When encryption is enabled, the Amazon S3 login credentials are stored, encrypted, in .git-annex/remotes.log, so environment variables need not be set after the remote is initialized. 2011-05-01 14:05:10 -04:00
Joey Hess
cf501d3b9b set ANNEX_HASH_* always 2011-04-29 14:04:20 -04:00
Joey Hess
3ab3f41aea hook special remote implemented, and tested 2011-04-28 17:21:45 -04:00
Joey Hess
d7b330b33b Fix hasKeyCheap setting for bup and rsync special remotes. 2011-04-28 14:39:51 -04:00
Joey Hess
39966ba4ee filter out --delete rsync option
rsync does not have a --no-delete, so do it this way instead
2011-04-27 20:31:56 -04:00
Joey Hess
e68f128a9b rsync special remote
Fully tested and working, including resuming and encryption. (Though not
resuming when sending *with* encryption; gpg doesn't produce identical
output each time.)

Uses same layout as the directory special remote and the .git/annex/objects/
directory.
2011-04-27 20:23:09 -04:00
Joey Hess
45bdb2d413 ensure tmp dir exists 2011-04-21 10:53:29 -04:00
Joey Hess
6fcd3e1ef7 fix S3 upload buffering problem
Provide file size to new version of hS3.
2011-04-21 10:33:17 -04:00
Joey Hess
4837176897 update on memory leak
Finished applying to S3 the change that fixed the memory leak in bup, but
it didn't seem to help S3.. with encryption it still grows to 2x file size.
2011-04-19 16:31:35 -04:00
Joey Hess
5985acdfad bup: Avoid memory leak when transferring encrypted data.
This was a most surprising leak. It occurred in the process that is forked
off to feed data to gpg. That process was passed a lazy ByteString of
input, and ghc seemed to not GC the ByteString as it was lazily read
and consumed, so memory slowly leaked as the file was read and passed
through gpg to bup.

To fix it, I simply changed the feeder to take an IO action that returns
the lazy bytestring, and fed the result directly to hPut.

AFAICS, this should change nothing WRT buffering. But somehow it makes
ghc's GC do the right thing. Probably I triggered some weakness in ghc's
GC (version 6.12.1).

(Note that S3 still has this leak, and others too. Fixing it will involve
another dance with the type system.)

Update: One theory I have is that this has something to do with
the forking of the feeder process. Perhaps, when the ByteString
is produced before the fork, ghc decides it need to hold a pointer
to the start of it, for some reason -- maybe it doesn't realize that
it is only used in the forked process.
2011-04-19 15:27:03 -04:00
Joey Hess
b1274b6378 refactor 2011-04-19 14:50:09 -04:00
Joey Hess
a441e08da1 Fix stalls in S3 when transferring encrypted data.
Stalls were caused by code that did approximatly:

content' <- liftIO $ withEncryptedContent cipher content return
store content'

The return evaluated without actually reading content from S3,
and so the cleanup code began waiting on gpg to exit before
gpg could send all its data.

Fixing it involved moving the `store` type action into the IO monad:

liftIO $ withEncryptedContent cipher content store

Which was a bit of a pain to do, thank you type system, but
avoids the problem as now the whole content is consumed, and
stored, before cleanup.
2011-04-19 14:45:19 -04:00
Joey Hess
86f7feb278 initremote: show gpg keys 2011-04-17 18:18:27 -04:00
Joey Hess
d9690a9b5d cleanup 2011-04-17 13:11:38 -04:00
Joey Hess
dd207994bc reword again
On second thought, "unlocking" is confusable with git-annex unlock.
2011-04-17 12:36:12 -04:00
Joey Hess
f486768b16 tweak wording 2011-04-17 11:31:56 -04:00
Joey Hess
67cced26dc S3 crypto support
Untested, I will need to dust off my S3 keys, and plug the modem back in
that was unplugged last night due to very low battery bank power. But it
compiles, so it's probably perfect. :)
2011-04-17 11:01:34 -04:00
Joey Hess
50cfcdf54b make encrypted remotes have slightly higher costs 2011-04-17 01:13:21 -04:00
Joey Hess
89fab6c7b8 refactor 2011-04-17 00:57:29 -04:00
Joey Hess
9606409b9d bup encryption support 100% working 2011-04-17 00:57:11 -04:00
Joey Hess
b6b04642c8 rename 2011-04-17 00:40:23 -04:00
Joey Hess
d996637fd6 fix stall while storing encrypted data in bup
Forking a new process rather than relying on a thread to feed gpg.
The feeder thread was stalling, probably when the main thread got
to the point it was wait()ing on the gpg to exit.
2011-04-17 00:34:38 -04:00
Joey Hess
480cc353c4 incomplete and buggy encryption support for bup
Some kind of laziness issue that I don't want to debug right now,
and decryption is not implemented.
2011-04-16 23:01:29 -04:00
Joey Hess
991efddfa1 refactor 2011-04-16 21:41:14 -04:00
Joey Hess
98e3817466 don't let users change encryption type once remote is initted 2011-04-16 19:45:59 -04:00
Joey Hess
4f9fafa023 full encryption support for directory special remotes 2011-04-16 19:12:50 -04:00
Joey Hess
5efd413270 add encryption support to directory special remotes 2011-04-16 16:29:28 -04:00
Joey Hess
7fdf20f577 encryption key management working
Encrypted remotes don't yet encrypt data, but git annex initremote can
be used to generate a cipher and add additional gpg keys that can use it.
2011-04-16 13:25:27 -04:00
Joey Hess
1e84dab4c8 RemoteConfig type 2011-04-15 15:09:36 -04:00
Joey Hess
66950189fc actually check that bup has keys
I don't trust the location log, even for bup. Too many things could go
wrong.
2011-04-09 15:41:16 -04:00
Joey Hess
8ad901a647 refactor 2011-04-09 14:26:32 -04:00
Joey Hess
54286c993d support bup repositories on removable media 2011-04-09 12:59:18 -04:00
Joey Hess
f808a83350 more buprepo fixes 2011-04-09 12:45:30 -04:00
Joey Hess
c739c7d787 change name of buprepo
Instead of remote=, use buprepo=

Anyone already using bup will need to re-run git annex initremote.
2011-04-09 12:41:17 -04:00
Joey Hess
141e55ff11 store annex.uuid in bup repos 2011-04-09 12:34:49 -04:00
Joey Hess
c5174f0cb8 make local bup repos a bit more expensive than local git repos
does have to run bup and reassemble files, after all
2011-04-08 23:08:21 -04:00
Joey Hess
1bfd3922c0 set cost for local bup repos to cheap 2011-04-08 21:37:59 -04:00
Joey Hess
c253d07a82 minor 2011-04-08 20:55:22 -04:00