Commit graph

1994 commits

Author SHA1 Message Date
Joey Hess
b03d77c211
add ExportTree table to export db
New table needed to look up what filenames are used in the currently
exported tree, for reasons explained in export.mdwn.

Also, added smart constructors for ExportLocation and ExportDirectory to
make sure they contain filepaths with the right direction slashes.

And some code refactoring.

This commit was sponsored by Francois Marier on Patreon.
2017-09-18 13:59:59 -04:00
Joey Hess
486902389d
lock to avoid more than one export to a remote at a time
This commit was sponsored by Jack Hill on Patreon.
2017-09-18 12:38:07 -04:00
Joey Hess
af0958dd70
move tracking exports to design 2017-09-18 12:06:01 -04:00
Joey Hess
4a45f34fe1
don't support removing content from export with removeKey
There does not seem to be a use case for supporting that, and it would
need a lot of complication to support it in a way that allows eventual
consistency when two repositories are updating the same export.

This commit was sponsored by Henrik Riomar on Patreon.
2017-09-17 17:56:33 -04:00
Joey Hess
494b4066db
clarification 2017-09-16 16:44:27 -04:00
Joey Hess
18ba1be26f
design for next steps on exports 2017-09-16 16:41:04 -04:00
Joey Hess
1223960294
empty directory removal working 2017-09-15 15:24:45 -04:00
Joey Hess
5fe803e14e
update 2017-09-15 12:22:11 -04:00
Joey Hess
268a0cc664
update 2017-09-13 15:52:19 -04:00
Joey Hess
bf48ba4ef7
work around box.com webdav rename bug
Apparently box.com renaming is just buggy. I tried a couple of fixes:

* In case the http Manager was opening multiple connections and reaching
  different backend servers, I tried limiting the number of connections
  to 1. Didn't help.
* To make sure it was not a http connection reuse problem, I tried
  rewriting how exportAction works, so that the same http connection
  is clearly open. Didn't help.

So, disable renaming of exports for box.com. It would be good to test it
with some other webdav server.

This commit was sponsored by John Peloquin on Patreon.
2017-09-13 15:26:56 -04:00
Joey Hess
f8fd66d3f8
fix compaction of export.log
It was not getting old lines removed, because the tree graft confused
the updater, so it union merged from the previous git-annex branch,
which still contained the old lines. Fixed by carefully using setIndexSha.

This commit was supported by the NSF-funded DataLad project.
2017-09-12 18:30:36 -04:00
Joey Hess
c8ed941a26
change export.log format to support multiple export remotes
This breaks backwards compatibility, but only with unreleased versions of
git-annex, which I think is acceptable.

This commit was supported by the NSF-funded DataLad project.
2017-09-12 17:45:52 -04:00
Joey Hess
63ba764923
bug 2017-09-12 17:00:15 -04:00
Joey Hess
9c3622882b
export: cache connections for S3 and webdav 2017-09-12 16:59:04 -04:00
Joey Hess
7ad8e8b889
more box.com strangeness 2017-09-12 15:45:43 -04:00
Joey Hess
7f8892f2d2
document box.com rename problem 2017-09-12 15:16:17 -04:00
Joey Hess
267f47c473
S3: Allow removing files from IA, but warn about derived versions potentially still existing there.
Removal works, only derives are a potential issue, so allow removing
with a warning. This way, unexporting a file works, and behavior is
consistent with IA remotes whether or not exporttree=yes.

Also tested exporting filenames containing unicode, spaces, underscores.
All worked, despite the IA's faq saying it doesn't.

This commit was sponsored by Trenton Cronholm on Patreon.
2017-09-12 12:35:58 -04:00
Joey Hess
650d0955a0
S3 export finalization
Fixed ACL issue, and updated some documentation.
2017-09-08 16:28:28 -04:00
Joey Hess
44cd5ae313
S3 export (untested)
It opens a http connection per file exported, but then so does git
annex copy --to s3.

Decided not to munge exported filenames for IA. Too large a chance of
the munging having confusing results. Instead, export of files not
supported by IA, eg with spaces in their name, will fail.

This commit was supported by the NSF-funded DataLad project.
2017-09-08 15:46:24 -04:00
Joey Hess
34ad1c15e8
mention git-annex export 2017-09-07 16:17:46 -04:00
Joey Hess
165725b9df
update 2017-09-07 16:07:28 -04:00
Joey Hess
a48b52c056
avoid renaming to temp files before deleting
Only rename when actually ncessary.

The diff gets buffered in memory. Probably git has to buffer a diff in
memory when generating it as well, so this memory usage should not be a
problem, even when the diff is very large. I hope.

This commit was supported by the NSF-funded DataLad project.
2017-09-07 14:32:47 -04:00
Joey Hess
16eb2f976c
prevent exporttree=yes on remotes that don't support exports
Don't allow "exporttree=yes" to be set when the special remote
does not support exports. That would be confusing since the user would
set up a special remote for exports, but `git annex export` to it would
later fail.

This commit was supported by the NSF-funded DataLad project.
2017-09-07 13:48:44 -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
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
Edward Betts
c1b9f718bc
move line break to fix broken link 2017-09-06 11:25:06 -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
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
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
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
supernaught
15601f2b66 Added a comment 2017-08-28 22:01:23 +00:00
Joey Hess
5c99131b7b
comment 2017-08-28 13:49:16 -04:00
Joey Hess
35fc273218
comment 2017-08-15 13:26:23 -04:00
Joey Hess
2eb6309d3e
move, copy: Support --batch. 2017-08-15 12:39:10 -04:00
https://openid.stackexchange.com/user/26f3c692-0460-4cbc-8712-e9bfb5889fb2
4df21b511c Added a comment: "WSL adds inotify & filesystem change notification support" 2017-08-07 06:22:07 +00:00
yarikoptic
e7e665b1fa 2017-08-02 14:58:28 +00:00
https://launchpad.net/~stephane-gourichon-lpad
48c98fbe93 Added a comment: Experiment to run git-annex-repair as fast as possible. 2017-07-28 04:27:06 +00:00
https://launchpad.net/~stephane-gourichon-lpad
4eab06bf75 2017-07-28 03:39:56 +00:00
yarikoptic
6adbb5a727 initial whining 2017-07-21 16:37:03 +00:00
https://launchpad.net/~stephane-gourichon-lpad
830106de2a 2017-07-21 13:59:10 +00:00
supernaught
13e18b37a5 Feature request: invert remote selection. 2017-07-18 17:00:14 +00:00
Joey Hess
adbd0ff068
add design 2017-07-11 11:32:35 -04:00
Joey Hess
b3a53f7f04
note 2017-07-10 14:20:37 -04:00
Joey Hess
6dd3fbdb41
thoughts 2017-07-10 14:06:49 -04:00
glasserc
5b2dc78aa6 Added a comment 2017-07-02 02:56:20 +00:00
Joey Hess
e8464f106b
followup 2017-06-26 13:13:49 -04:00
glasserc
5991d5c1ab A wishlist item I would like 2017-06-14 21:26:39 +00:00
Joey Hess
99a1e6efe2
close as dup 2017-06-09 13:43:53 -04:00
Joey Hess
aff0ce86da
merge and followup window path length bugs 2017-06-06 15:57:35 -04:00
Joey Hess
3193d8258b
link to msdn article on enabling long paths 2017-06-06 15:24:37 -04:00
Joey Hess
fa50906a80
comment 2017-06-06 13:49:13 -04:00
Joey Hess
3cc30dd128
thoughts 2017-05-24 15:14:49 -04:00
Joey Hess
6dd806f1ad
stop using MissingH for MD5
Cryptonite is faster and allocates less, and I want to get rid of
MissingH use.

Note that the new dependency on memory is free; it's a dependency of
cryptonite.

This commit was supported by the NSF-funded DataLad project.
2017-05-15 21:36:03 -04:00
Joey Hess
9ddd75b99a
comment 2017-05-11 13:29:14 -04:00
Joey Hess
f5a3b14e49
comment 2017-05-09 13:47:09 -04:00
Joey Hess
6ad0b00849
comment 2017-05-09 13:38:45 -04:00
CandyAngel
aa60e9924d Added a comment 2017-05-09 14:25:50 +00:00
CandyAngel
6a6fe43da3 2017-05-09 14:20:21 +00:00
CandyAngel
2befd8acc9 Added a comment 2017-05-09 10:05:14 +00:00
Tafnzart
74e28f9b99 Added a comment: Maybe provide an option to force without name change 2017-05-07 14:05:04 +00:00
anarcat
bf47e518dd try to structure a guide 2017-04-24 14:18:21 +00:00
anarcat
804f06baa4 Added a comment: sounds like the dumb backend, except not dumb 2017-04-08 20:21:41 +00:00
Joey Hess
e3184e54c9
version: Added "dependency versions" line.
This commit was sponsored by Anthony DeRobertis on Patreon.
2017-04-07 18:16:11 -04:00
lee@7614f42c1a6cc84dbc813df25d2f75ed54948e17
2ad7a3e1ff add todo for lib versions 2017-04-07 21:35:48 +00:00
Joey Hess
6896ac06e8
git annex add -u now supported, analagous to git add -u
Unlike git add -u, git annex add -u does not update the index for files
removed from the working tree. But then, "git add ." stages removals,
and "git annex add ." does not, so that's an existing divergence.

Seems that --update --batch would need to run git ls-files once per line of
batch input, which would surely be too slow, so just throw an error for
that.

This commit was supported by the NSF-funded DataLad project.
2017-04-07 15:55:45 -04:00
Joey Hess
c3970f6c1a
multicast: New command, uses uftp to multicast annexed files, for eg a classroom setting.
This commit was supported by the NSF-funded DataLad project.
2017-03-30 19:35:30 -04:00
Joey Hess
39e8433d46
fix format 2017-03-30 14:16:13 -04:00
Joey Hess
43d7862b44
design 2017-03-30 14:15:12 -04:00
yarikoptic
3a03665b4f 2017-03-30 16:08:07 +00:00
yarikoptic
f6d34d228e initial idea 2017-03-30 16:07:43 +00:00
Joey Hess
d6afd70e20 WSL can now run git-annex 2017-03-27 21:40:45 -04:00
Joey Hess
a2017e944f expand 2017-03-27 18:12:46 -04:00
Joey Hess
9fcd3987f2 idea 2017-03-27 18:10:36 -04:00
Cyberthal
9713258e9b 2017-03-24 15:10:10 +00:00
yarikoptic
a6430481c4 initial report 2017-03-23 04:09:44 +00:00
konubinix
f3dee9d658 removed 2017-03-21 15:42:50 +00:00
konubinix
04fb8e7896 removed 2017-03-21 15:40:16 +00:00
konubinix
9ec8466302 removed 2017-03-21 15:37:54 +00:00
konubinix
9b53859c67 removed 2017-03-21 15:37:28 +00:00
konubinix
5f7f61febb removed 2017-03-21 15:36:46 +00:00
konubinix
14b96acb60 Added a comment: Nice job! 2017-03-21 15:36:18 +00:00
konubinix
88bbb04f29 Added a comment: Nice job! 2017-03-21 15:36:07 +00:00
konubinix
2bdcdd6186 Added a comment: Nice job! 2017-03-21 15:35:56 +00:00
konubinix
2c069ee2a5 Added a comment: Nice job! 2017-03-21 15:35:45 +00:00
konubinix
9dae7e0bdd Added a comment: Nice job! 2017-03-21 15:35:37 +00:00
konubinix
b78408377e Added a comment: Nice job! 2017-03-21 15:35:27 +00:00
Joey Hess
64f924dc93
sync --content-of=path
For when you want to sync only some files' contents, not the whole working
tree.

This commit was sponsored by Anthony DeRobertis on Patreon.
2017-03-20 16:00:48 -04:00
Joey Hess
631608d55b
todo 2017-03-18 15:44:52 -04:00
jason.dixon.email@aa0e536a2ec2877d6f666108dbbc6e39bbe87ac0
83defc762f Added a comment: Oh and to be slightly helpful 2017-03-08 08:57:08 +00:00
jason.dixon.email@aa0e536a2ec2877d6f666108dbbc6e39bbe87ac0
98647f5959 Added a comment: Same issue with rclone on windows. 2017-03-08 08:55:49 +00:00
jason.dixon.email@aa0e536a2ec2877d6f666108dbbc6e39bbe87ac0
24ade8a25b Added a comment: Still seems useful 2017-03-07 10:19:41 +00:00
jason.dixon.email@aa0e536a2ec2877d6f666108dbbc6e39bbe87ac0
41b85ad1f4 Added a comment: I hope the option to show missing files remains. 2017-03-07 06:30:37 +00:00
jason.dixon.email@aa0e536a2ec2877d6f666108dbbc6e39bbe87ac0
86508537c5 Added a comment: Does this not work counter to locking / unlocking files? 2017-03-03 13:40:06 +00:00
Joey Hess
1cd5fc302c
fix format 2017-03-02 13:49:13 -04:00
git-annex@31849d241f10c295b30a9707352ae5c7d743adb7
2468e69354 Added a comment 2017-03-02 16:16:05 +00:00