Joey Hess [Fri, 4 Dec 2020 17:07:30 +0000 (13:07 -0400)]
generalize to allow running in Assistant monad
Joey Hess [Fri, 4 Dec 2020 16:20:04 +0000 (12:20 -0400)]
fix problem with last commit and assistant
liftAnnex blocks all others calls, so avoid using it with a long-duration
call to readResponse.
Joey Hess [Thu, 3 Dec 2020 20:21:20 +0000 (16:21 -0400)]
new protocol for transferkeys, with message serialization
Necessarily threw out the old protocol, so if an old git-annex assistant
is running, and starts a transferkeys from the new git-annex, it would
fail. But, that seems unlikely; the assistant starts up transferkeys
processes and then keeps them running. Still, may need to test that
scenario.
The new protocol is simple read/show and looks like this:
TransferRequest Download (Right "origin") (Key {keyName = "
f8f8766a836fb6120abf4d5328ce8761404e437529e997aaa0363bdd4fecd7bb", keyVariety = SHA2Key (HashSize 256) (HasExt True), keySize = Just 30, keyMtime = Nothing, keyChunkSize = Nothing, keyChunkNum = Nothing}) (AssociatedFile (Just "foo"))
TransferOutput (ProgressMeter (Just 30) (MeterState {meterBytesProcessed = BytesProcessed 0, meterTimeStamp = 1.
6070268727892535e9}) (MeterState {meterBytesProcessed = BytesProcessed 30, meterTimeStamp = 1.
6070268728043e9}))
TransferOutput (OutputMessage "(checksum...) ")
TransferResult True
Granted, this is not optimally fast, but it seems good enough, and is
probably nearly as fast as the old protocol anyhow.
emitSerializedOutput for ProgressMeter is not yet implemented. It needs
to somehow start or update a progress meter. There may need to be a new
message that allocates a progress meter, and then have ProgressMeter
update it.
This commit was sponsored by Ethan Aubin
Joey Hess [Thu, 3 Dec 2020 18:57:22 +0000 (14:57 -0400)]
comments
Joey Hess [Thu, 3 Dec 2020 18:47:04 +0000 (14:47 -0400)]
when serializing messages, include json objects
This is done always, it's up to the comsumer to decide if it wants to
output the json objects or the messages.
Messages.JSON.finalize changed to not need a JSONOptions.
As far as I can see, this does not change its behavior,
since addErrorMessage appends to any list that's already there.
This commit was sponsored by Ethan Aubin.
Joey Hess [Thu, 3 Dec 2020 17:01:28 +0000 (13:01 -0400)]
start on serializing Messages
Json objects not yet handled, and some other special cases, but this is
the bulk of the messages.
For progress meters, POSIXTime does not have a Read instance (or a
suitable Show instance), so had to switch to using a Double for progress
meters.
This commit was sponsored by Ethan Aubin on Patreon.
Joey Hess [Wed, 2 Dec 2020 18:57:43 +0000 (14:57 -0400)]
remove uses of warningIO
It's not concurrent-output safe, and doesn't support
--json-error-messages.
Using Annex.makeRunner is a bit scary, because what if it's run in a
different thread from an active annex action? Normally the same Annex
state is not used concurrently in several threads, and it's not designed
to be fully concurrency safe. (Annex.Concurrent exists to deal with
that.) I think it will be ok in these simple cases though. Eg,
when buffering a warning message to json, Annex.changeState is used,
and it modifies the MVar in a concurrency safe way.
The only warningIO remaining is not a problem.
Joey Hess [Wed, 2 Dec 2020 18:31:24 +0000 (14:31 -0400)]
design work
basak [Wed, 2 Dec 2020 02:12:59 +0000 (02:12 +0000)]
Added a comment
https://launchpad.net/~barthelemy [Tue, 1 Dec 2020 21:55:31 +0000 (21:55 +0000)]
Added a comment
Joey Hess [Tue, 1 Dec 2020 20:05:55 +0000 (16:05 -0400)]
improve p2p protocol handling of requested object not available
Avoid spurious "verification of content failed" message when downloading
content from a ssh or tor remote fails due to the remote no longer having a
copy of the content.
The P2P protocol already handled this case by sending DATA 0, followed by
VALID. But VALID was not really right, because the data is not the
requested data. So, send DATA 0, followed by INVALID. Old versions of
git-annex handle INVALID the same as VALID in this case. Now new versions
avoid displaying an incorrect message.
It would be better for the P2P protocol to have a different way to indicate
this, like perhaps sending INVALID without DATA. But that would be a
breaking change and need a new protocol verison. Since INVALID already is
part of the protocol and already needs to be handled, using it for this
special case too seems ok, and avoids the complication of another protocol
version.
This commit was sponsored by Jochen Bartl on Patreon.
Joey Hess [Tue, 1 Dec 2020 19:39:57 +0000 (15:39 -0400)]
add show instance
Joey Hess [Tue, 1 Dec 2020 19:39:22 +0000 (15:39 -0400)]
avoid hGetMetered 0 closing the handle
This is an edge case, which happened to be triggered by the P2P protocol
seeing DATA 0. When reading 0 bytes, getting an empty string does
not mean the handle has reached EOF.
I verified there was in fact a bug, where get of an empty file followed
by another file would get the empty file and then fail
with "handle is closed". This fixes it.
This commit was sponsored by Boyd Stephen Smith Jr. on Patreon.
Joey Hess [Tue, 1 Dec 2020 16:59:10 +0000 (12:59 -0400)]
comment
falsifian [Mon, 30 Nov 2020 20:35:21 +0000 (20:35 +0000)]
dzhu [Mon, 30 Nov 2020 19:10:54 +0000 (19:10 +0000)]
Added a comment
Joey Hess [Mon, 30 Nov 2020 17:31:02 +0000 (13:31 -0400)]
remove digression
Joey Hess [Mon, 30 Nov 2020 17:27:45 +0000 (13:27 -0400)]
thought
Joey Hess [Mon, 30 Nov 2020 17:13:56 +0000 (13:13 -0400)]
comment
Joey Hess [Mon, 30 Nov 2020 17:03:47 +0000 (13:03 -0400)]
Fix hang on shutdown of external special remote using ASYNC protocol extension.
Reversion introduced in version 8.
20201007, one release after the 1st
release with the extension.
Surprisingly, hClose can hang if another thread is reading from the
handle. This is because it uses takeMVar.
The use of cancel here does mean that, if receiveMessageAddonProcess
or Remote.External.AsyncExtension.receiveloop allocated some resource in
a non-async-exception safe way, they might not get a chance to clean it up.
They do not appear to, and anyway, this only happens when git-annex is
shutting down, so any recource that did leak would not be a problem.
This commit was sponsored by Boyd Stephen Smith Jr. on Patreon.
Joey Hess [Mon, 30 Nov 2020 16:44:40 +0000 (12:44 -0400)]
comment
Joey Hess [Mon, 30 Nov 2020 16:28:20 +0000 (12:28 -0400)]
close
kyle [Mon, 30 Nov 2020 15:18:58 +0000 (15:18 +0000)]
Added a comment
Lukey [Mon, 30 Nov 2020 07:36:41 +0000 (07:36 +0000)]
Added a comment
filipg@7e6a4a5ad3a393bcea174bf8fd6664deffc76c25 [Mon, 30 Nov 2020 07:20:35 +0000 (07:20 +0000)]
Added a comment
dzhu [Mon, 30 Nov 2020 00:11:16 +0000 (00:11 +0000)]
fix typo (CONFIGSEND -> CONFIGEND)
Lukey [Sun, 29 Nov 2020 20:57:25 +0000 (20:57 +0000)]
Added a comment
filipg@7e6a4a5ad3a393bcea174bf8fd6664deffc76c25 [Sun, 29 Nov 2020 20:13:14 +0000 (20:13 +0000)]
Lukey [Sun, 29 Nov 2020 19:06:37 +0000 (19:06 +0000)]
Lukey [Sun, 29 Nov 2020 19:04:34 +0000 (19:04 +0000)]
Lukey [Sun, 29 Nov 2020 15:37:21 +0000 (15:37 +0000)]
Added a comment
dzhu [Sun, 29 Nov 2020 02:36:23 +0000 (02:36 +0000)]
tcurdt@9d3ccb47a593bf70ac547ddae8fa634048b87ddf [Sat, 28 Nov 2020 16:49:47 +0000 (16:49 +0000)]
Added a comment
Lukey [Fri, 27 Nov 2020 18:46:04 +0000 (18:46 +0000)]
Added a comment
Joey Hess [Fri, 27 Nov 2020 17:02:43 +0000 (13:02 -0400)]
fix build
Joey Hess [Fri, 27 Nov 2020 16:57:31 +0000 (12:57 -0400)]
add news item for git-annex 8.
20201127
Joey Hess [Fri, 27 Nov 2020 16:57:02 +0000 (12:57 -0400)]
releasing package git-annex version 8.
20201127
tcurdt@9d3ccb47a593bf70ac547ddae8fa634048b87ddf [Fri, 27 Nov 2020 14:13:00 +0000 (14:13 +0000)]
Joey Hess [Thu, 26 Nov 2020 15:50:12 +0000 (11:50 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Thu, 26 Nov 2020 15:48:52 +0000 (11:48 -0400)]
fix test failure on windows
"a:" failed; this test wants a relative filename so isDrive avoids it
Note that on linux, isDrive "/foo" is true. This test also filters out
absolute paths already, so that is ok.
This commit was sponsored by Brock Spratlen on Patreon.
Ilya_Shlyakhter [Wed, 25 Nov 2020 20:31:23 +0000 (20:31 +0000)]
fix typo in git-annex command to create public S3 remote
Joey Hess [Wed, 25 Nov 2020 10:25:58 +0000 (06:25 -0400)]
close
Joey Hess [Wed, 25 Nov 2020 10:25:13 +0000 (06:25 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Wed, 25 Nov 2020 10:24:49 +0000 (06:24 -0400)]
fix build on windows
jkniiv [Wed, 25 Nov 2020 09:19:03 +0000 (09:19 +0000)]
jkniiv [Wed, 25 Nov 2020 07:38:17 +0000 (07:38 +0000)]
Joey Hess [Tue, 24 Nov 2020 21:29:19 +0000 (17:29 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Tue, 24 Nov 2020 21:17:09 +0000 (17:17 -0400)]
improve display of test failures
Display the transcript as part of the failure message for the assertion.
This avoids scrambling the tasty display.
This commit was sponsored by Ethan Aubin on Patreon.
gueux [Tue, 24 Nov 2020 21:07:37 +0000 (21:07 +0000)]
Added a comment
Joey Hess [Tue, 24 Nov 2020 19:00:39 +0000 (15:00 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Tue, 24 Nov 2020 19:00:06 +0000 (15:00 -0400)]
comment and moreinfo needed
Lukey [Tue, 24 Nov 2020 18:35:16 +0000 (18:35 +0000)]
Added a comment
Joey Hess [Tue, 24 Nov 2020 18:33:52 +0000 (14:33 -0400)]
close
Joey Hess [Tue, 24 Nov 2020 18:32:34 +0000 (14:32 -0400)]
close
Joey Hess [Tue, 24 Nov 2020 18:07:46 +0000 (14:07 -0400)]
Made the test suite significantly less noisy
Only displaying git-annex and git command output when something went wrong.
A few could still leak stderr. These include the couple of calls
to readProcess, which reads stdin but lets stderr through. But they don't
leak any usually, so probably only would when failing anyway.
Currently, there is no excess output at all!
This commit was sponsored by Brock Spratlen on Patreon.
Joey Hess [Tue, 24 Nov 2020 16:38:12 +0000 (12:38 -0400)]
finish fixing removeLink on windows
9cb250f7be21a8f5b15454df4fb67bfd1811e39d got the ones in RawFilePath,
but there were others that used the one from unix-compat, which fails at
runtime on windows. To avoid this,
import System.PosixCompat.Files hiding removeLink
This commit was sponsored by Ethan Aubin.
Joey Hess [Tue, 24 Nov 2020 16:35:09 +0000 (12:35 -0400)]
squash remaining build warnings on windows
Joey Hess [Tue, 24 Nov 2020 16:31:33 +0000 (12:31 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Tue, 24 Nov 2020 16:31:17 +0000 (12:31 -0400)]
upgrade: Support an edge case upgrading a v5 direct mode repo where nothing had ever been committed to the head branch
This commit was sponsored by Jack Hill on Patreon.
jkniiv [Tue, 24 Nov 2020 16:28:25 +0000 (16:28 +0000)]
Added a comment: I concur, in fact `git annex init` doesn't work at all
Joey Hess [Tue, 24 Nov 2020 15:38:50 +0000 (11:38 -0400)]
details
jwodder [Tue, 24 Nov 2020 13:42:30 +0000 (13:42 +0000)]
Lukey [Mon, 23 Nov 2020 19:06:13 +0000 (19:06 +0000)]
Added a comment
Lukey [Mon, 23 Nov 2020 19:00:56 +0000 (19:00 +0000)]
Added a comment
Joey Hess [Mon, 23 Nov 2020 18:00:17 +0000 (14:00 -0400)]
squash build warnings on windows
Joey Hess [Mon, 23 Nov 2020 17:53:12 +0000 (13:53 -0400)]
fix build on windows
Joey Hess [Mon, 23 Nov 2020 17:00:36 +0000 (13:00 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Mon, 23 Nov 2020 17:00:20 +0000 (13:00 -0400)]
update
Joey Hess [Mon, 23 Nov 2020 16:52:10 +0000 (12:52 -0400)]
forward bug report
jwodder [Mon, 23 Nov 2020 15:02:29 +0000 (15:02 +0000)]
Added a comment
Joey Hess [Mon, 23 Nov 2020 01:28:57 +0000 (21:28 -0400)]
bug
Cebtenzzre [Sun, 22 Nov 2020 16:07:16 +0000 (16:07 +0000)]
Added a comment
ghen1 [Sun, 22 Nov 2020 13:24:47 +0000 (13:24 +0000)]
Joey Hess [Sat, 21 Nov 2020 16:25:34 +0000 (12:25 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Sat, 21 Nov 2020 16:24:41 +0000 (12:24 -0400)]
fix format
eric.w@eee65cd362d995ced72640c7cfae388ae93a4234 [Fri, 20 Nov 2020 22:16:34 +0000 (22:16 +0000)]
Added a comment
Joey Hess [Fri, 20 Nov 2020 16:53:25 +0000 (12:53 -0400)]
fix build on windows
Joey Hess [Fri, 20 Nov 2020 16:53:13 +0000 (12:53 -0400)]
done
gueux [Thu, 19 Nov 2020 22:15:58 +0000 (22:15 +0000)]
gueux [Thu, 19 Nov 2020 22:14:24 +0000 (22:14 +0000)]
rename bugs/adjust_--unlock_implies_all_files_set_as_modified.mdwn to bugs/after_adjust_--unlock_implies__44___a_lot_of_files_are_reported_as_modified.mdwn
gueux [Thu, 19 Nov 2020 22:09:23 +0000 (22:09 +0000)]
jwodder [Thu, 19 Nov 2020 21:15:42 +0000 (21:15 +0000)]
Joey Hess [Thu, 19 Nov 2020 20:38:51 +0000 (16:38 -0400)]
done
Joey Hess [Thu, 19 Nov 2020 20:36:37 +0000 (16:36 -0400)]
convert processTranscript to use hGetLineUntilExitOrEOF
It does use it on both stdout and stderr. It seems unlikely the problem
could really affect stdout, but the unix implementation of it combines
both into a single handle in any case.
Joey Hess [Thu, 19 Nov 2020 20:21:17 +0000 (16:21 -0400)]
converted reads from stderr to use hGetLineUntilExitOrEOF
These are all unlikely to suffer from the inherited stderr fd problem,
but who knows, it could happen.
Joey Hess [Thu, 19 Nov 2020 20:13:31 +0000 (16:13 -0400)]
convert to use hGetLineUntilExitOrEOF
It looks to me like the old code would have already dealt with the case
of ssh starting a ssh daemon that inherits stderr and keeps it open.
The ender thread closed the handle, which would unblock the other thread
and let it exit. Using hGetLineUntilExitOrEOF makes this more explicit
that it's dealt with and simplifies the code.
Joey Hess [Thu, 19 Nov 2020 19:34:26 +0000 (15:34 -0400)]
convert git config reading to use hGetLineUntilExitOrEOF
Much nicer than the old hack of waiting for a few seconds for stderr to be read.
Joey Hess [Thu, 19 Nov 2020 18:46:54 +0000 (14:46 -0400)]
changelog
Kyle Meyer [Thu, 19 Nov 2020 17:14:22 +0000 (12:14 -0500)]
BitTorrent: Fix build for "no torrent" code path
The RawFilePath conversions missed a spot in the else arm of "#ifdef
WITH_TORRENTPARSER".
Joey Hess [Thu, 19 Nov 2020 18:41:33 +0000 (14:41 -0400)]
preserve other headers when adding resume header
It had lost the hAcceptEncoding header that is set as part of the
overriding of http-client's default decompression of compressed files.
Seems likely that would have caused resuming of compressed files to fail
in some cases.
This commit was sponsored by Brett Eisenberg on Patreon.
Joey Hess [Thu, 19 Nov 2020 18:03:00 +0000 (14:03 -0400)]
don't rely on exception for http 416
Fix a bug that could make resuming a download from the web fail when the
entire content of the file is actually already present locally.
What a mess that Request can throw exceptions or not, depending on how
it's configured. Makes it very hard if you need to handle some specific
http status codes in a function like this! Implementing everything two
ways did not seem appealing, if possible at all, so I decided to
override the Request if it did come configured to throw exception on
non-2xx http status. Other exceptions, like from http-client-restricted,
or due to a redirect to a non-http url, still get thrown.
This commit was sponsored by Luke Shumaker on Patreon.
Joey Hess [Thu, 19 Nov 2020 17:02:23 +0000 (13:02 -0400)]
comment
Joey Hess [Thu, 19 Nov 2020 17:02:17 +0000 (13:02 -0400)]
comment
Joey Hess [Thu, 19 Nov 2020 16:50:25 +0000 (12:50 -0400)]
fix windows assistant upgrade glitch
Prevent windows assistant from trying (and failing) to upgrade itself,
which has never been supported on windows.
The new windows build is made with UPGRADE_LOCATION set, which enabled this
code path that had never run on windows before, and doesn't work. I don't
want to try to support self-upgrade on windows, or generally on other OS's
than the ones where its working, so added a check for that. This way the
build can keep setting UPGRADE_LOCATION and if some later git-annex does
learn how to upgrade itself on some OS, it won't need changing the build
setup.
Joey Hess [Thu, 19 Nov 2020 16:33:00 +0000 (12:33 -0400)]
Fix build on Windows
Thanks to bug reporter for the patch.
Joey Hess [Thu, 19 Nov 2020 16:20:18 +0000 (12:20 -0400)]
fix removeLink on windows
This removeLink was introduced in commit
e505c03bccdc6567cd517a6ddaf70a411489473d, which replaced code
that used removeFile on Windows. So, I know git-annex did not used to do
anything other than removeFile on Windows. If there were symlinks it
wanted to remove, this would not work on windows, but of course it does
not use symlinks on windows.
Joey Hess [Thu, 19 Nov 2020 16:08:06 +0000 (12:08 -0400)]
close
kyle [Thu, 19 Nov 2020 15:35:00 +0000 (15:35 +0000)]
Added a comment