Commit graph

22780 commits

Author SHA1 Message Date
Horus
1260756563 Added a comment 2017-09-07 09:30:53 +00:00
anthony@ad39673d230d75cbfd19d2757d754030049c7673
bb72640042 Added a comment 2017-09-06 22:01:57 +00:00
Joey Hess
084fbee8c8
devblog 2017-09-06 17:22:22 -04:00
Joey Hess
6ab14710fc
fix consistency bug reading from export database
The export database has writes made to it and then expects to read back
the same data immediately. But, the way that Database.Handle does
writes, in order to support multiple writers, makes that not work, due
to caching issues. This resulted in export re-uploading files it had
already successfully renamed into place.

Fixed by allowing databases to be opened in MultiWriter or SingleWriter
mode. The export database only needs to support a single writer; it does
not make sense for multiple exports to run at the same time to the same
special remote.

All other databases still use MultiWriter mode. And by inspection,
nothing else in git-annex seems to be relying on being able to
immediately query for changes that were just written to the database.

This commit was supported by the NSF-funded DataLad project.
2017-09-06 17:19:07 -04:00
Joey Hess
35cd329bd8
Merge branch 'master' into export 2017-09-06 15:49:30 -04:00
Joey Hess
3ccf661d7c
todo 2017-09-06 15:46:35 -04:00
Joey Hess
cae3704a44
export file renaming
This is seriously super hairy. It has to handle interrupted exports,
which may be resumed with the same or a different tree. It also has to
recover from export conflicts, which could cause the wrong content
to be renamed to a file.

I think this works, or is close to working. See the update to the design
for how it works.

This is definitely not optimal, in that it does more renames than are
necessary. It would probably be worth finding the keys that are really
renamed and only renaming those. But let's get the "simple" approach to
work first..

This commit was supported by the NSF-funded DataLad project.
2017-09-06 15:44:10 -04:00
Joey Hess
0fa948b402
record incomplete exports in export.log
Not yet used, but essential for resuming cleanly.

Note that, in normmal operation, only one commit is made to export.log
during an export; the incomplete version only gets to the journal and
is then overwritten.

This commit was supported by the NSF-funded DataLad project.
2017-09-06 13:45:03 -04:00
Joey Hess
1ec3a9eb05
thoughts on handling renames efficiently
This gets complicated, but I think this design will work!

This commit was supported by the NSF-funded DataLad project.
2017-09-06 13:04:09 -04:00
Joey Hess
8918b7ab09
Merge branch 'master' of ssh://git-annex.branchable.com 2017-09-06 12:26:18 -04:00
Edward Betts
c1b9f718bc
move line break to fix broken link 2017-09-06 11:25:06 -04:00
Joey Hess
fd8392b669
update 2017-09-06 11:23:04 -04:00
karel-de-macil
9a2e687b0d 2017-09-06 09:20:26 +00:00
yarikoptic
3e7d0e0de7 Added datalad "super-dataset". 2017-09-05 17:00:38 +00:00
EskildHustvedt
8755f320f5 removed 2017-09-05 09:17:44 +00:00
EskildHustvedt
70ecf52888 Added a comment: Partial exports 2017-09-05 09:16:59 +00:00
EskildHustvedt
5e15956225 Added a comment: Partial exports 2017-09-05 09:16:26 +00:00
eacousineau
b8b7a9a902 2017-09-05 01:22:19 +00:00
Joey Hess
c7af16eb3a
Merge branch 'master' of ssh://git-annex.branchable.com 2017-09-04 17:03:20 -04:00
Joey Hess
fa4defc9d7
devblog 2017-09-04 17:02:30 -04:00
Joey Hess
662f2a5ee7
git annex get from exports
Straightforward enough, except for the needed belt-and-suspenders sanity
checks to avoid foot shooting due to exports not being key/value stores.

* Even when annex.verify=false, always verify from exports.
* Only get files from exports that use a backend that supports
  checksum verification.
* Never trust exports, even if the user says to, because then
  `git annex drop` would drop content if the export seemed to contain
  a copy.

This commit was supported by the NSF-funded DataLad project.
2017-09-04 16:39:56 -04:00
Joey Hess
4da763439b
use export db to correctly handle duplicate files
Removed uncorrect UniqueKey key in db schema; a key can appear multiple
times with different files.

The database has to be flushed after each removal. But when adding files
to the export, lots of changes are able to be queued up w/o flushing.
So it's still fairly efficient.

If large removals of files from exports are too slow, an alternative
would be to make two passes over the diff, one pass queueing deletions
from the database, then a flush and the a second pass updating the
location log. But that would use more memory, and need to look up
exportKey twice per removed file, so I've avoided such optimisation yet.

This commit was supported by the NSF-funded DataLad project.
2017-09-04 14:39:32 -04:00
Joey Hess
28e2cad849
implement exporttree=yes configuration
* Only export to remotes that were initialized to support it.
* Prevent storing key/value on export remotes.
* Prevent enabling exporttree=yes and encryption in the same remote.

SetupStage Enable was changed to take the old RemoteConfig.
This allowed only setting exporttree when initially setting up a
remote, and not configuring it later after stuff might already be stored
in the remote.

Went with =yes rather than =true for consistency with other parts of
git-annex. Changed docs accordingly.

This commit was supported by the NSF-funded DataLad project.
2017-09-04 13:09:38 -04:00
vgp
28635f0190 Added a comment 2017-09-01 21:40:11 +00:00
Joey Hess
a4328b49d2
refactor ExportActions
This will allow disabling exports for remotes that are not configured to
allow them. Also, exportSupported will be useful for the external
special remote to probe.

This commit was supported by the NSF-funded DataLad project
2017-09-01 13:05:09 -04:00
Joey Hess
f19a45973a
devblog 2017-08-31 18:14:04 -04:00
Joey Hess
5483ea90ec
graft exported tree into git-annex branch
So it will be available later and elsewhere, even after GC.

I first though to use git update-index to do this, but feeding it a line
with a tree object seems to always cause it to generate a git subtree
merge. So, fell back to using the Git.Tree interface to maniupulate the
trees, and not involving the git-annex branch index file at all.

This commit was sponsored by Andreas Karlsson.
2017-08-31 18:06:49 -04:00
Joey Hess
978885247e
implement export.log and resolve export conflicts
Incremental export updates work now too.

This commit was sponsored by Anthony DeRobertis on Patreon.
2017-08-31 15:47:23 -04:00
Joey Hess
bb08b1abd2
make storeExport atomic
This avoids needing to deal with the complexity of partially transferred
files in the export. We'd not be able to resume uploading to such a file
anyway, so just avoid them.

The implementation in Remote.Directory is not completely ideal, because
it could leave the temp file hanging around in the export directory.
This only happens if it's killed with -9, or there's a power failure;
normally viaTmp cleans up after itself, even when interrupted. I could
not see a better way to do it though, since the export directory might
be the root of a filesystem.

Also some design thoughts on resuming, which depend on storeExport being
atomic.

This commit was sponsored by Fernando Jimenez on Partreon.
2017-08-31 14:24:32 -04:00
Joey Hess
7c7af82578
resuming exports
Make a pass over the whole exported tree, and upload anything that has
not yet reached the export. Update location log when exporting.

Note that the synthesized keys for non-annexed files are stored in the
location log too.

Some cases involving files in the tree with the same content are not
handled correctly yet.

This commit was sponsored by Boyd Stephen Smith Jr. on Patreon.
2017-08-31 13:33:50 -04:00
Joey Hess
943de657b8
Merge branch 'master' into export 2017-08-31 12:16:22 -04:00
Joey Hess
bdec46ac13
a few tweaks to the design 2017-08-30 13:14:05 -04:00
yarikoptic
b14c4776d6 initial bug report 2017-08-30 14:15:45 +00:00
vgp
71682954f8 Added a comment 2017-08-30 12:42:23 +00:00
Joey Hess
474dd3ae6d
Merge branch 'master' of ssh://git-annex.branchable.com 2017-08-29 17:27:37 -04:00
Joey Hess
74aa4c503b
devblog 2017-08-29 17:26:42 -04:00
Joey Hess
9f3630f4e0
initial export command
Very basic operation works, but of course this is only the beginning.

This commit was sponsored by Nick Daly on Patreon.
2017-08-29 15:10:01 -04:00
Joey Hess
8f35c6584d
documentation for export
This commit was sponsored by Ole-Morten Duesund on Patreon.
2017-08-29 13:25:48 -04:00
supernaught
15601f2b66 Added a comment 2017-08-28 22:01:23 +00:00
Joey Hess
6ae9d8fe49
simplify
Key is needed to use in reply
2017-08-28 15:37:34 -04:00
Joey Hess
ed5d8ee9ea
update proposed external special remote protocol 2017-08-28 15:34:26 -04:00
Joey Hess
792e582a60
fix link 2017-08-28 15:07:23 -04:00
Joey Hess
92ec2d13b5
formatting 2017-08-28 15:07:19 -04:00
Joey Hess
8cad03d7ca
typo 2017-08-28 15:04:25 -04:00
Joey Hess
5c99131b7b
comment 2017-08-28 13:49:16 -04:00
Joey Hess
4e5b3062d9
response 2017-08-28 13:41:19 -04:00
Joey Hess
bad02c4360
response 2017-08-28 13:38:26 -04:00
Joey Hess
f27efbe3c6
respond and close 2017-08-28 13:36:08 -04:00
Joey Hess
2011716202
close bug filed about git-annex from 2014 2017-08-28 13:29:36 -04:00
Joey Hess
f313fcc2a3
response 2017-08-28 13:26:30 -04:00
Joey Hess
db2a06b66f
init: Display an additional message when it detects a filesystem that allows writing to files whose write bit is not set. 2017-08-28 13:21:18 -04:00
Joey Hess
291d5bb471
response 2017-08-28 13:21:04 -04:00
Joey Hess
755c4a97b5
comment 2017-08-28 13:16:50 -04:00
Joey Hess
dbe031b6b9
remove links to trees of files, as they confuse users and prevent them reading the instructions before downloading 2017-08-28 13:05:03 -04:00
Joey Hess
eae54bc4f5
comment 2017-08-28 13:03:57 -04:00
Joey Hess
ddc29f5bcd
close 2017-08-28 13:01:56 -04:00
Joey Hess
bfaa78ee35
response 2017-08-28 13:01:05 -04:00
Joey Hess
ee2f096e3b
Support building with feed-1.0, while still supporting older versions.
This commit was sponsored by Jeff Goeke-Smith on Patreon.
2017-08-28 12:29:28 -04:00
marek@33e8ba4fbc201af14a2badcc0656024401f5c916
86ea64d70e 2017-08-28 10:09:42 +00:00
Alan
9428df794f Added a comment: For stretch on armhf, install from unstable 2017-08-28 09:25:22 +00:00
Alan
078c458ff1 Added a comment: No package for armhf on stretch 2017-08-28 09:00:15 +00:00
hugo
1ae6d0aa6b 2017-08-27 12:52:12 +00:00
hugo
650cabe345 2017-08-27 12:51:36 +00:00
hugo
69530ea4fe 2017-08-27 12:50:35 +00:00
aditya.mmy@be7b2fbd14a6ce2b6b8588f6719672725a11ed35
4dfb045549 Added a comment: Nevermind - I got it working 2017-08-27 10:18:03 +00:00
aditya.mmy@be7b2fbd14a6ce2b6b8588f6719672725a11ed35
1d6617e300 fix 2017-08-27 07:18:28 +00:00
aditya.mmy@be7b2fbd14a6ce2b6b8588f6719672725a11ed35
b22e6c1352 fix formatting 2017-08-27 07:17:23 +00:00
aditya.mmy@be7b2fbd14a6ce2b6b8588f6719672725a11ed35
a2166d67bd Reporting a bug. 2017-08-27 07:14:54 +00:00
michalrus
a95bbe6eb5 Added a comment 2017-08-26 12:20:58 +00:00
michalrus
1c55387f8c 2017-08-26 12:20:23 +00:00
michalrus
5f73868c39 Added a comment 2017-08-26 12:19:17 +00:00
michalrus
5058b94118 Added a comment 2017-08-26 12:18:54 +00:00
michalrus
88a55baf45 Added a comment 2017-08-26 12:18:11 +00:00
michalrus
ba5a6c428a removed 2017-08-26 12:15:14 +00:00
michalrus
49b1494b26 Added a comment 2017-08-26 12:14:06 +00:00
Alan
47573f64c2 Added a comment: No package for debian stretch, armh? 2017-08-25 11:58:39 +00:00
Joey Hess
1226936edc
formatting 2017-08-24 16:38:15 -04:00
Joey Hess
8d5ea49d57
Merge branch 'master' of ssh://git-annex.branchable.com 2017-08-24 16:36:26 -04:00
Joey Hess
a7ae7b029a
bug from email 2017-08-24 16:36:02 -04:00
vgp
5bd7d07a63 2017-08-24 03:41:52 +00:00
loredai
d34631cbbd 2017-08-23 16:07:33 +00:00
loredai
f3b7fe82db 2017-08-23 16:04:23 +00:00
loredai
ee291f6489 2017-08-23 16:00:57 +00:00
loredai
b48d032d3e removed 2017-08-23 15:43:34 +00:00
loredai
1b44b7a36a Added a comment: Upgrade path can produce confusing output 2017-08-23 15:42:24 +00:00
olaf
8ee915fa90 Added a comment: It's the old remote... 2017-08-23 06:03:45 +00:00
olaf
8fffaeb0ad Added a comment: Similar(ish) bug reports 2017-08-23 05:55:51 +00:00
olaf
3730f9ae85 2017-08-23 05:47:39 +00:00
olaf
2c892d2fc2 2017-08-23 05:46:13 +00:00
olaf
00b6fa4d61 2017-08-23 04:55:45 +00:00
kanak@3c4f6e7d832d88751c617b25bdbac896417eb93b
e91180ac4a Added a comment: get appears to be doing less work? (Part 2) 2017-08-22 12:20:56 +00:00
kanak@3c4f6e7d832d88751c617b25bdbac896417eb93b
3a58818f55 Added a comment: get appears to be doing less work? 2017-08-22 11:55:41 +00:00
metst13@1d16544ec52801db7efb2895d3dc7a4458b8eb45
38caa5bec0 Added a comment: links on page 2017-08-22 05:10:11 +00:00
Rémi
9354e1be83 Added a comment 2017-08-21 14:17:14 +00:00
Rémi
be6873a563 2017-08-21 09:10:49 +00:00
hugo
019638141a Added a comment: Comment 2017-08-21 06:21:33 +00:00
hugo
cb22913ae7 2017-08-21 06:20:22 +00:00
Joey Hess
3577f874a3
Merge branch 'master' of ssh://git-annex.branchable.com 2017-08-20 16:51:06 -04:00
Joey Hess
c76ba5a15e
CVE-2017-12976 2017-08-20 16:50:53 -04:00
michalrus
7c6f16ad1c Added a comment 2017-08-20 16:45:09 +00:00
michalrus
014c4be6c2 Added a comment 2017-08-20 15:47:03 +00:00
michalrus
608eb67e54 Added a comment 2017-08-20 15:27:31 +00:00
michalrus
abdd6aa736 2017-08-20 15:26:34 +00:00
michalrus
9368ae0dad 2017-08-20 15:21:42 +00:00
michalrus
f330af61ac 2017-08-20 14:16:55 +00:00
doogie
d6d76c10ea 2017-08-18 20:27:52 +00:00
doogie
ed4e3bcff9 2017-08-18 20:25:29 +00:00
ilovezfs
9a68b93253 Added a comment: Exception: getCurrentDirectory:getWorkingDirectory: resource exhausted (Too many open files) 2017-08-18 18:28:01 +00:00
Joey Hess
e0d88e2d25
typo 2017-08-18 11:46:48 -04:00
Joey Hess
c24d0f0e89
add bug for security hole, with exploit details 2017-08-18 11:36:34 -04:00
Joey Hess
ef8b1d86bf
cleanup 2017-08-18 11:21:34 -04:00
Joey Hess
0fce5ac3ad
add note about security fix 2017-08-18 11:21:11 -04:00
Joey Hess
33153ca919
add news item for git-annex 6.20170818 2017-08-18 11:19:53 -04:00
Joey Hess
55495c5a98
git-annex.cabal: Deal with breaking changes in Cabal 2.0
https://github.com/haskell/cabal/issues/4655

This means that when a module is conditionally imported via ifdef
depending on the OS or build flags, the cabal file has to mirror the
same logic there to only list the module then.

Since there are lots of OS's and lots of combinations of build flags
here, it's rather difficult to know if the cabal file has been completelty
correctly updated to match the source code.

So I am very unhappy with needing to update things in two places. I've
only tested this on linux with most build flags enables; this will
probably need significant time and testing to catch every cabal file
tweak that this change to Cabal requires. And it will be a continual
source of compile failures going forward when the code is modified and
the cabal file not also updated.

DRY DRY DRY, I repeat myself, but: DRY! Sigh..

(Also, had to remove all Build.* that are standalone programs from the
Other-Modules list, because since cabal passes those modules to ghc when
building git-annex, it complains that they use module Main. Those
modules are only used when building with the Makefile anyway, so this
change shouldn't break anything.)

This commit was sponsored by Thomas Hochstein on Patreon.
2017-08-18 11:08:58 -04:00
olaf
1b1c970b99 Added a comment 2017-08-18 04:37:57 +00:00
olaf
f9e30d6292 Added a comment 2017-08-18 04:18:14 +00:00
Joey Hess
25e55e7c2f
typo 2017-08-17 19:51:39 -04:00
Joey Hess
749d69f12d
devblog 2017-08-17 17:13:12 -04:00
Joey Hess
fdbfe88168
fix external script for filenames with spaces from protocol
Fix the external special remotes git-annex-remote-ipfs,
git-annex-remote-torrent and the example.sh template to correctly support
filenames with spaces.

This commit was sponsored by John Peloquin on Patreon.
2017-08-17 16:20:09 -04:00
Joey Hess
dafafad115
external: nice error message for keys with spaces in their name
External special remotes will refuse to operate on keys with spaces in
their names. That has never worked correctly due to the design of the
external special remote protocol. Display an error message suggesting
migration.

Not super happy with this, but it's a pragmatic solution. Better than
complicating the external special remote interface and all external special
remotes.

Note that I only made it use SafeKey in Request, not Response. git-annex
does not construct a Response, so that would not add any safety. And
presumably, if git-annex avoids feeding any such keys to an external
special remote, it will never have a reason to make a Response using such a
key. If it did, it would result in a protocol error anyway.

There's still a Serializeable instance for Key; it's used by P2P.Protocol.
There, the Key is always in the final position, so it's ok if it contains
spaces.

Note that the protocol documentation has been fixed to say that the File
may contain spaces. One way that can happen, even though the Key can't,
is when using direct mode, and the work tree filename contains spaces.
When sending such a file to the external special remote the worktree
filename is used.

This commit was sponsored by Thom May on Patreon.
2017-08-17 16:18:34 -04:00
Joey Hess
5421e8f695
comment 2017-08-17 15:15:40 -04:00
https://launchpad.net/~felixonmars
b985eb2d75 Added a comment 2017-08-17 19:10:24 +00:00
Joey Hess
8cff67841c
plan 2017-08-17 14:41:21 -04:00
Joey Hess
68a0f99ba6
Merge branch 'master' of ssh://git-annex.branchable.com 2017-08-17 13:58:14 -04:00
Joey Hess
d39c120afa
add annex-ignore-command and annex-sync-command configs
Added remote configuration settings annex-ignore-command and
annex-sync-command, which are dynamic equivilants of the annex-ignore
and annex-sync configurations.

For this I needed a new DynamicConfig infrastructure. Its implementation
should be as fast as before when there is no dynamic config, and it caches
so shell commands are only run once.

Note that annex-ignore-command exits nonzero when the remote should be ignored.
While that may seem backwards, it allows using the same command for it as
for annex-sync-command when you want to disable both.

This commit was sponsored by Trenton Cronholm on Patreon.
2017-08-17 13:54:14 -04:00
michalrus
60f6445532 Added a comment 2017-08-17 17:53:24 +00:00
pitsa@5f5d24a1fb7ba0d050ae7cf95b4c3032002e8e38
14fc9318d5 Added a comment: Thanks 2017-08-17 16:35:33 +00:00
Joey Hess
86428f6261
comment 2017-08-17 12:17:47 -04:00
Joey Hess
05ef86fcf3
comment 2017-08-17 12:05:30 -04:00
Joey Hess
801c636caf
comment 2017-08-17 11:58:41 -04:00
Joey Hess
537dff4958
response 2017-08-17 11:55:56 -04:00
Joey Hess
04de2ede83
close 2017-08-17 11:49:42 -04:00
CandyAngel
22df6eaa74 Added a comment 2017-08-17 10:22:54 +00:00
olaf
df59575cdc Added a comment: manual mode? 2017-08-17 07:35:41 +00:00
https://openid.stackexchange.com/user/8a69a637-97cb-41e6-8f45-00f08ba54d6e
332ec5669c Added a comment 2017-08-16 18:18:27 +00:00
https://openid.stackexchange.com/user/8a69a637-97cb-41e6-8f45-00f08ba54d6e
e15f5f9dae Added a comment 2017-08-16 17:16:14 +00:00
https://openid.stackexchange.com/user/8a69a637-97cb-41e6-8f45-00f08ba54d6e
64bbd451f5 Added a comment 2017-08-16 17:10:58 +00:00
https://openid.stackexchange.com/user/8a69a637-97cb-41e6-8f45-00f08ba54d6e
a6a0fa9323 2017-08-16 16:49:46 +00:00
woffs
f6550dc7e7 Added a comment 2017-08-16 13:02:56 +00:00
michalrus
eaf2137ee7 Added a comment 2017-08-16 12:58:25 +00:00
michalrus
ee72ef5c3a Added a comment 2017-08-16 12:47:48 +00:00
michalrus
9acc5f6a8e Added a comment 2017-08-16 11:03:03 +00:00
michalrus
f1fa56f388 2017-08-16 10:59:01 +00:00
olaf
7b2c6d45c6 Added a comment 2017-08-16 01:01:02 +00:00
olaf
d35f0a1e98 2017-08-15 23:42:07 +00:00
olaf
debbd6cad8 Added a comment 2017-08-15 23:28:58 +00:00
Joey Hess
7713c3e0ec
idea 2017-08-15 15:45:31 -04:00
Joey Hess
48a89f0f92
hmm 2017-08-15 15:31:01 -04:00
Joey Hess
73d04d5565
responses, bug I noticed 2017-08-15 14:42:22 -04:00
Joey Hess
19a784df03
comment 2017-08-15 14:07:12 -04:00