git-annex.git
5 years agogeneralize to allow running in Assistant monad
Joey Hess [Fri, 4 Dec 2020 17:07:30 +0000 (13:07 -0400)]
generalize to allow running in Assistant monad

5 years agofix problem with last commit and assistant
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.

5 years agonew protocol for transferkeys, with message serialization
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

5 years agocomments
Joey Hess [Thu, 3 Dec 2020 18:57:22 +0000 (14:57 -0400)]
comments

5 years agowhen serializing messages, include json objects
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.

5 years agostart on serializing Messages
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.

5 years agoremove uses of warningIO
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.

5 years agodesign work
Joey Hess [Wed, 2 Dec 2020 18:31:24 +0000 (14:31 -0400)]
design work

5 years agoAdded a comment
basak [Wed, 2 Dec 2020 02:12:59 +0000 (02:12 +0000)]
Added a comment

5 years agoAdded a comment
https://launchpad.net/~barthelemy [Tue, 1 Dec 2020 21:55:31 +0000 (21:55 +0000)]
Added a comment

5 years agoimprove p2p protocol handling of requested object not available
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.

5 years agoadd show instance
Joey Hess [Tue, 1 Dec 2020 19:39:57 +0000 (15:39 -0400)]
add show instance

5 years agoavoid hGetMetered 0 closing the handle
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.

5 years agocomment
Joey Hess [Tue, 1 Dec 2020 16:59:10 +0000 (12:59 -0400)]
comment

5 years ago(no commit message)
falsifian [Mon, 30 Nov 2020 20:35:21 +0000 (20:35 +0000)]

5 years agoAdded a comment
dzhu [Mon, 30 Nov 2020 19:10:54 +0000 (19:10 +0000)]
Added a comment

5 years agoremove digression
Joey Hess [Mon, 30 Nov 2020 17:31:02 +0000 (13:31 -0400)]
remove digression

5 years agothought
Joey Hess [Mon, 30 Nov 2020 17:27:45 +0000 (13:27 -0400)]
thought

5 years agocomment
Joey Hess [Mon, 30 Nov 2020 17:13:56 +0000 (13:13 -0400)]
comment

5 years agoFix hang on shutdown of external special remote using ASYNC protocol extension.
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.

5 years agocomment
Joey Hess [Mon, 30 Nov 2020 16:44:40 +0000 (12:44 -0400)]
comment

5 years agoclose
Joey Hess [Mon, 30 Nov 2020 16:28:20 +0000 (12:28 -0400)]
close

5 years agoAdded a comment
kyle [Mon, 30 Nov 2020 15:18:58 +0000 (15:18 +0000)]
Added a comment

5 years agoAdded a comment
Lukey [Mon, 30 Nov 2020 07:36:41 +0000 (07:36 +0000)]
Added a comment

5 years agoAdded a comment
filipg@7e6a4a5ad3a393bcea174bf8fd6664deffc76c25 [Mon, 30 Nov 2020 07:20:35 +0000 (07:20 +0000)]
Added a comment

5 years agofix typo (CONFIGSEND -> CONFIGEND)
dzhu [Mon, 30 Nov 2020 00:11:16 +0000 (00:11 +0000)]
fix typo (CONFIGSEND -> CONFIGEND)

5 years agoAdded a comment
Lukey [Sun, 29 Nov 2020 20:57:25 +0000 (20:57 +0000)]
Added a comment

5 years ago(no commit message)
filipg@7e6a4a5ad3a393bcea174bf8fd6664deffc76c25 [Sun, 29 Nov 2020 20:13:14 +0000 (20:13 +0000)]

5 years ago(no commit message)
Lukey [Sun, 29 Nov 2020 19:06:37 +0000 (19:06 +0000)]

5 years ago(no commit message)
Lukey [Sun, 29 Nov 2020 19:04:34 +0000 (19:04 +0000)]

5 years agoAdded a comment
Lukey [Sun, 29 Nov 2020 15:37:21 +0000 (15:37 +0000)]
Added a comment

5 years ago(no commit message)
dzhu [Sun, 29 Nov 2020 02:36:23 +0000 (02:36 +0000)]

5 years agoAdded a comment
tcurdt@9d3ccb47a593bf70ac547ddae8fa634048b87ddf [Sat, 28 Nov 2020 16:49:47 +0000 (16:49 +0000)]
Added a comment

5 years agoAdded a comment
Lukey [Fri, 27 Nov 2020 18:46:04 +0000 (18:46 +0000)]
Added a comment

5 years agofix build
Joey Hess [Fri, 27 Nov 2020 17:02:43 +0000 (13:02 -0400)]
fix build

5 years agoadd news item for git-annex 8.20201127
Joey Hess [Fri, 27 Nov 2020 16:57:31 +0000 (12:57 -0400)]
add news item for git-annex 8.20201127

5 years agoreleasing package git-annex version 8.20201127
Joey Hess [Fri, 27 Nov 2020 16:57:02 +0000 (12:57 -0400)]
releasing package git-annex version 8.20201127

5 years ago(no commit message)
tcurdt@9d3ccb47a593bf70ac547ddae8fa634048b87ddf [Fri, 27 Nov 2020 14:13:00 +0000 (14:13 +0000)]

5 years agoMerge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Thu, 26 Nov 2020 15:50:12 +0000 (11:50 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com

5 years agofix test failure on windows
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.

5 years agofix typo in git-annex command to create public S3 remote
Ilya_Shlyakhter [Wed, 25 Nov 2020 20:31:23 +0000 (20:31 +0000)]
fix typo in git-annex command to create public S3 remote

5 years agoclose
Joey Hess [Wed, 25 Nov 2020 10:25:58 +0000 (06:25 -0400)]
close

5 years agoMerge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Wed, 25 Nov 2020 10:25:13 +0000 (06:25 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com

5 years agofix build on windows
Joey Hess [Wed, 25 Nov 2020 10:24:49 +0000 (06:24 -0400)]
fix build on windows

5 years ago(no commit message)
jkniiv [Wed, 25 Nov 2020 09:19:03 +0000 (09:19 +0000)]

5 years ago(no commit message)
jkniiv [Wed, 25 Nov 2020 07:38:17 +0000 (07:38 +0000)]

5 years agoMerge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Tue, 24 Nov 2020 21:29:19 +0000 (17:29 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com

5 years agoimprove display of test failures
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.

5 years agoAdded a comment
gueux [Tue, 24 Nov 2020 21:07:37 +0000 (21:07 +0000)]
Added a comment

5 years agoMerge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Tue, 24 Nov 2020 19:00:39 +0000 (15:00 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com

5 years agocomment and moreinfo needed
Joey Hess [Tue, 24 Nov 2020 19:00:06 +0000 (15:00 -0400)]
comment and moreinfo needed

5 years agoAdded a comment
Lukey [Tue, 24 Nov 2020 18:35:16 +0000 (18:35 +0000)]
Added a comment

5 years agoclose
Joey Hess [Tue, 24 Nov 2020 18:33:52 +0000 (14:33 -0400)]
close

5 years agoclose
Joey Hess [Tue, 24 Nov 2020 18:32:34 +0000 (14:32 -0400)]
close

5 years agoMade the test suite significantly less noisy
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.

5 years agofinish fixing removeLink on windows
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.

5 years agosquash remaining build warnings on windows
Joey Hess [Tue, 24 Nov 2020 16:35:09 +0000 (12:35 -0400)]
squash remaining build warnings on windows

5 years agoMerge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Tue, 24 Nov 2020 16:31:33 +0000 (12:31 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com

5 years agoupgrade: Support an edge case upgrading a v5 direct mode repo where nothing had ever...
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.

5 years agoAdded a comment: I concur, in fact `git annex init` doesn't work at all
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

5 years agodetails
Joey Hess [Tue, 24 Nov 2020 15:38:50 +0000 (11:38 -0400)]
details

5 years ago(no commit message)
jwodder [Tue, 24 Nov 2020 13:42:30 +0000 (13:42 +0000)]

5 years ago(no commit message)
lucas.gautheron@09f1983993dfb0907d02ba268b3ca672f1dc3eea [Tue, 24 Nov 2020 11:53:44 +0000 (11:53 +0000)]

5 years agoAdded a comment
Lukey [Mon, 23 Nov 2020 19:06:13 +0000 (19:06 +0000)]
Added a comment

5 years agoAdded a comment
Lukey [Mon, 23 Nov 2020 19:00:56 +0000 (19:00 +0000)]
Added a comment

5 years agosquash build warnings on windows
Joey Hess [Mon, 23 Nov 2020 18:00:17 +0000 (14:00 -0400)]
squash build warnings on windows

5 years agofix build on windows
Joey Hess [Mon, 23 Nov 2020 17:53:12 +0000 (13:53 -0400)]
fix build on windows

5 years agoMerge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Mon, 23 Nov 2020 17:00:36 +0000 (13:00 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com

5 years agoupdate
Joey Hess [Mon, 23 Nov 2020 17:00:20 +0000 (13:00 -0400)]
update

5 years agoforward bug report
Joey Hess [Mon, 23 Nov 2020 16:52:10 +0000 (12:52 -0400)]
forward bug report

5 years agoAdded a comment
jwodder [Mon, 23 Nov 2020 15:02:29 +0000 (15:02 +0000)]
Added a comment

5 years agobug
Joey Hess [Mon, 23 Nov 2020 01:28:57 +0000 (21:28 -0400)]
bug

5 years agoAdded a comment
Cebtenzzre [Sun, 22 Nov 2020 16:07:16 +0000 (16:07 +0000)]
Added a comment

5 years ago(no commit message)
ghen1 [Sun, 22 Nov 2020 13:24:47 +0000 (13:24 +0000)]

5 years agoMerge branch 'master' of ssh://git-annex.branchable.com
Joey Hess [Sat, 21 Nov 2020 16:25:34 +0000 (12:25 -0400)]
Merge branch 'master' of ssh://git-annex.branchable.com

5 years agofix format
Joey Hess [Sat, 21 Nov 2020 16:24:41 +0000 (12:24 -0400)]
fix format

5 years ago(no commit message)
git-annex@6e52e5c5d048aa6b470b95d81fbaf44769d11fbd [Sat, 21 Nov 2020 04:21:26 +0000 (04:21 +0000)]

5 years agoAdded a comment
eric.w@eee65cd362d995ced72640c7cfae388ae93a4234 [Fri, 20 Nov 2020 22:16:34 +0000 (22:16 +0000)]
Added a comment

5 years agofix build on windows
Joey Hess [Fri, 20 Nov 2020 16:53:25 +0000 (12:53 -0400)]
fix build on windows

5 years agodone
Joey Hess [Fri, 20 Nov 2020 16:53:13 +0000 (12:53 -0400)]
done

5 years ago(no commit message)
gueux [Thu, 19 Nov 2020 22:15:58 +0000 (22:15 +0000)]

5 years agorename bugs/adjust_--unlock_implies_all_files_set_as_modified.mdwn to bugs/after_adju...
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

5 years ago(no commit message)
gueux [Thu, 19 Nov 2020 22:09:23 +0000 (22:09 +0000)]

5 years ago(no commit message)
jwodder [Thu, 19 Nov 2020 21:15:42 +0000 (21:15 +0000)]

5 years agodone
Joey Hess [Thu, 19 Nov 2020 20:38:51 +0000 (16:38 -0400)]
done

5 years agoconvert processTranscript to use hGetLineUntilExitOrEOF
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.

5 years agoconverted reads from stderr to use hGetLineUntilExitOrEOF
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.

5 years agoconvert to use hGetLineUntilExitOrEOF
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.

5 years agoconvert git config reading to use hGetLineUntilExitOrEOF
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.

5 years agochangelog
Joey Hess [Thu, 19 Nov 2020 18:46:54 +0000 (14:46 -0400)]
changelog

5 years agoBitTorrent: Fix build for "no torrent" code path
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".

5 years agopreserve other headers when adding resume header
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.

5 years agodon't rely on exception for http 416
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.

5 years agocomment
Joey Hess [Thu, 19 Nov 2020 17:02:23 +0000 (13:02 -0400)]
comment

5 years agocomment
Joey Hess [Thu, 19 Nov 2020 17:02:17 +0000 (13:02 -0400)]
comment

5 years agofix windows assistant upgrade glitch
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.

5 years agoFix build on Windows
Joey Hess [Thu, 19 Nov 2020 16:33:00 +0000 (12:33 -0400)]
Fix build on Windows

Thanks to bug reporter for the patch.

5 years agofix removeLink on windows
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.

5 years agoclose
Joey Hess [Thu, 19 Nov 2020 16:08:06 +0000 (12:08 -0400)]
close

5 years agoAdded a comment
kyle [Thu, 19 Nov 2020 15:35:00 +0000 (15:35 +0000)]
Added a comment