Commit graph

26333 commits

Author SHA1 Message Date
Joey Hess
4808800f2d
fix build on windows 2015-12-28 12:57:42 -04:00
Joey Hess
cdad377ef1
Debian: Adjust build dependencies for webapp, DAV.
Now available on mips, mipsel, but temporarily removed armel since build is
failing there.

If armel would just get caught up, I could remove the per-arch specs
entirely.

Maybe time to turn maint of this over to richih?
2015-12-28 12:57:15 -04:00
Joey Hess
645833774d
fix windows build 2015-12-28 12:44:04 -04:00
Joey Hess
b61575516b
fix build with pre-AMP GHC 2015-12-28 12:41:47 -04:00
Joey Hess
11ceee93b4
fix build warning 2015-12-28 12:41:36 -04:00
david.wargert@3142e930e120f177dff9fd083ebc900263143dad
049a0bb9f5 removed 2015-12-27 22:50:45 +00:00
Joey Hess
7eed80b316
cleanup 2015-12-27 17:27:52 -04:00
Joey Hess
342259aa9d
devblog 2015-12-27 17:18:18 -04:00
Joey Hess
ad742c522c
Merge branch 'master' of ssh://git-annex.branchable.com 2015-12-27 17:12:14 -04:00
Joey Hess
1499b9b79d
fix file perms after breaking hard link 2015-12-27 16:12:48 -04:00
Joey Hess
a46158240b
doc improvements 2015-12-27 16:06:11 -04:00
Joey Hess
121f5d5b0c
annex.thin
Decided it's too scary to make v6 unlocked files have 1 copy by default,
but that should be available to those who need it. This is consistent with
git-annex not dropping unused content without --force, etc.

* Added annex.thin setting, which makes unlocked files in v6 repositories
  be hard linked to their content, instead of a copy. This saves disk
  space but means any modification of an unlocked file will lose the local
  (and possibly only) copy of the old version.
* Enable annex.thin by default on upgrade from direct mode to v6, since
  direct mode made the same tradeoff.
* fix: Adjusts unlocked files as configured by annex.thin.
2015-12-27 15:59:59 -04:00
a@b34f238966e58f7c2ea550cc4cab3005c0e33150
15de76b362 2015-12-27 09:15:43 +00:00
Joey Hess
bb6719678e
update walkthrough and add tip about using v6 unlocked files
The walkthrough should make sense now both for v5 and v6 repo users.
2015-12-26 16:47:23 -04:00
Joey Hess
51b69ef551
add copy of note.mdwn, since Makefile's ikiwiki invocation omits the basewiki 2015-12-26 16:40:11 -04:00
Joey Hess
025f284ac1
reorg 2015-12-26 15:15:02 -04:00
Joey Hess
fcb013044b
update 2015-12-26 15:13:05 -04:00
Joey Hess
d0da52f1b1
typo 2015-12-26 15:11:32 -04:00
Joey Hess
54f87ef95f
get associated files from Keys database 2015-12-26 15:09:53 -04:00
Joey Hess
7593917147
cleanup 2015-12-26 15:09:47 -04:00
Joey Hess
289a3592c3
support v6 unlocked files
This optimisation was not necessary, and didn't work for v6 unlocked files.
Typically only a small number of files will be changed by a commit, so just
catKey them all.
2015-12-26 15:04:26 -04:00
Joey Hess
0fe43d7f8e
update for v6 unlocked files 2015-12-26 14:59:06 -04:00
Joey Hess
60c36ef6ba
make views work with v6 unlocked files
Have to only use the view index in one place; lookupFile was failing for
unlocked files because it was run using the view index, which was empty.
2015-12-26 14:52:58 -04:00
Joey Hess
49fca49991
remove dead code 2015-12-26 14:45:07 -04:00
Joey Hess
1b55af4c3c
deal with unlocked files when calling rsyncParamsRemote
In copyFromRemote, it used to check isDirect, but that was not needed;
the remote is sending the file, so it doesn't matter if the local,
receiving repository is in direct mode or not. And, since the content is not
present, yet, it's certianly not unlocked. Note that, the remote may indeed
be sending an unlocked file, but sendkey uses sendAnnex, which will detect
if the file is modified before or during transfer, and will exit nonzero,
aborting the upload. So, the receiver doesn't need any checks.

In copyToRemote, it forces recvkey to verify content whenever it's being
sent from a v6 repository. recvkey is almost always going to verify content
anyway, unless annex.verify is not set. So, this doesn't make it any more
expensive, except for in that unusual configuration. The alternative would
be to change the recvkey interface, so that the sender checks afterwards if
what it was sending changed, and the receiver then throws out the bad
transfer. That would be less expensive for the reciever, as it would not
need to do a checksum verification. But, it would mean another network
round trip, and since rsync closes the connection, it would need to open
another ssh connection to do this. Even with connction caching, that would
add latency to uploads. It would also complicate the interface, especially
because an older git-annex-shell would not have the new interface
available. For these reasons, I prefer punting on that at this time, and
instead someone might set annex.verify=false and be unhappy that it still
verifies..

(One other gotcha not dealt with is that a v5 repo could be upgraded to v6
while an upload is in progress, and a file unlocked and modified.)

(Also, I double-checked Remote.GCrypt's calls to rsyncParamsRemote, and
they're fine. When a file is being uploaded to gcrypt, or any other special
repository, it is mediated by sendAnnex, so changes will be detected at
that level and the special remote implementation doesn't need to worry
about them.)
2015-12-26 14:16:27 -04:00
Joey Hess
f776ac0a11
add unlocked flag for git-annex-shell recvkey
The direct flag is also set when sending unlocked content, to support old
versions of git-annex-shell. At some point, the direct flag will be
removed, and only the unlocked flag will be used.
2015-12-26 13:59:27 -04:00
Joey Hess
f324ad24c1
improve comment 2015-12-26 13:47:36 -04:00
Joey Hess
41b2caa5f6
reword 2015-12-26 13:06:53 -04:00
Joey Hess
87f0708f88
persistent-sqlite is now a hard build dependency, since v6 repository mode needs it. 2015-12-26 13:00:52 -04:00
david.wargert@3142e930e120f177dff9fd083ebc900263143dad
a79c297d1b 2015-12-26 14:56:28 +00:00
wsha.code+ga@b38779424f41c5701bbe5937340be43ff1474b2d
52e5e958c1 Added a comment 2015-12-26 12:31:13 +00:00
setthemfree@b25cdbaf5e7d071aa15bea1877178fc926343d09
d4513b758f 2015-12-25 17:40:37 +00:00
Joey Hess
d8cb05c4af
temporarily disable v6 repos tests (still 4 failures) 2015-12-24 19:24:40 -04:00
Joey Hess
72e717e14c
Merge branch 'smudge' 2015-12-24 19:23:18 -04:00
divergentdave@5c17d06f6d67c6f157b76a4cc95ca764b7d2f899
9aaa072d26 Added a comment 2015-12-24 22:44:16 +00:00
divergentdave@5c17d06f6d67c6f157b76a4cc95ca764b7d2f899
b783c481ef 2015-12-24 22:32:23 +00:00
Joey Hess
7c02f070b1
lost some bookkeeping info
I forgot to convert this to use Annex.Ingest, todo later.
2015-12-24 13:15:26 -04:00
Joey Hess
9d3474ef1b
unused import 2015-12-24 13:07:42 -04:00
Joey Hess
c21567dfd3
typo 2015-12-24 13:06:03 -04:00
Joey Hess
f87aaa57b4
Merge branch 'master' of ssh://git-annex.branchable.com 2015-12-23 19:41:11 -04:00
Joey Hess
dcb0ec50fd
devblog 2015-12-23 19:40:39 -04:00
Joey Hess
f839d407e3
flush keys db queue even on exception
Also fixed a bug in makeRunner; run' leaves the mvar empty so have to
refill it.
2015-12-23 19:38:18 -04:00
Joey Hess
4224fae71f
optimise read and write for Keys database (untested)
Writes are optimised by queueing up multiple writes when possible.
The queue is flushed after the Annex monad action finishes. That makes it
happen on program termination, and also whenever a nested Annex monad action
finishes.

Reads are optimised by checking once (per AnnexState) if the database
exists. If the database doesn't exist yet, all reads return mempty.

Reads also cause queued writes to be flushed, so reads will always be
consistent with writes (as long as they're made inside the same Annex monad).
A future optimisation path would be to determine when that's not necessary,
which is probably most of the time, and avoid flushing unncessarily.

Design notes for this commit:

- separate reads from writes
- reuse a handle which is left open until program
  exit or until the MVar goes out of scope (and autoclosed then)
- writes are queued
  - queue is flushed periodically
  - immediate queue flush before any read
  - auto-flush queue when database handle is garbage collected
  - flush queue on exit from Annex monad
    (Note that this may happen repeatedly for a single database connection;
    or a connection may be reused for multiple Annex monad actions,
    possibly even concurrent ones.)
- if database does not exist (or is empty) the handle
  is not opened by reads; reads instead return empty results
- writes open the handle if it was not open previously
2015-12-23 19:18:52 -04:00
Joey Hess
959b060e26
allow flushDbQueue to be run repeatedly 2015-12-23 16:36:08 -04:00
Joey Hess
d43ac8056b
auto-close database connections when MVar is GCed 2015-12-23 16:11:36 -04:00
Joey Hess
6d38f54db4
split out Database.Queue from Database.Handle
Fsck can use the queue for efficiency since it is write-heavy, and only
reads a value before writing it. But, the queue is not suited to the Keys
database.
2015-12-23 14:59:58 -04:00
mark@6b90344cdab3158eacb94a3944460d138afc9bef
6b394a5b36 Added a comment: Centralized server with separate remote 2015-12-23 17:59:49 +00:00
CandyAngel
b0518fe3ce Added a comment 2015-12-23 12:46:37 +00:00
Joey Hess
1f6c0be2b2
devblog 2015-12-22 18:22:24 -04:00
Joey Hess
b3690c4499
update 2015-12-22 18:19:32 -04:00