summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* fix file perms after breaking hard linkGravatar Joey Hess2015-12-27
|
* doc improvementsGravatar Joey Hess2015-12-27
|
* annex.thinGravatar Joey Hess2015-12-27
| | | | | | | | | | | | | | 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.
* update walkthrough and add tip about using v6 unlocked filesGravatar Joey Hess2015-12-26
| | | | The walkthrough should make sense now both for v5 and v6 repo users.
* add copy of note.mdwn, since Makefile's ikiwiki invocation omits the basewikiGravatar Joey Hess2015-12-26
|
* reorgGravatar Joey Hess2015-12-26
|
* updateGravatar Joey Hess2015-12-26
|
* typoGravatar Joey Hess2015-12-26
|
* get associated files from Keys databaseGravatar Joey Hess2015-12-26
|
* cleanupGravatar Joey Hess2015-12-26
|
* support v6 unlocked filesGravatar Joey Hess2015-12-26
| | | | | | 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.
* update for v6 unlocked filesGravatar Joey Hess2015-12-26
|
* make views work with v6 unlocked filesGravatar Joey Hess2015-12-26
| | | | | 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.
* remove dead codeGravatar Joey Hess2015-12-26
|
* deal with unlocked files when calling rsyncParamsRemoteGravatar Joey Hess2015-12-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.)
* add unlocked flag for git-annex-shell recvkeyGravatar Joey Hess2015-12-26
| | | | | | 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.
* improve commentGravatar Joey Hess2015-12-26
|
* rewordGravatar Joey Hess2015-12-26
|
* persistent-sqlite is now a hard build dependency, since v6 repository mode ↵Gravatar Joey Hess2015-12-26
| | | | needs it.
* temporarily disable v6 repos tests (still 4 failures)Gravatar Joey Hess2015-12-24
|
* Merge branch 'smudge'Gravatar Joey Hess2015-12-24
|\
* | Added a commentGravatar divergentdave@5c17d06f6d67c6f157b76a4cc95ca764b7d2f8992015-12-24
| |
* | (no commit message)Gravatar divergentdave@5c17d06f6d67c6f157b76a4cc95ca764b7d2f8992015-12-24
| |
| * lost some bookkeeping infoGravatar Joey Hess2015-12-24
| | | | | | | | I forgot to convert this to use Annex.Ingest, todo later.
| * unused importGravatar Joey Hess2015-12-24
| |
| * typoGravatar Joey Hess2015-12-24
| |
* | Merge branch 'master' of ssh://git-annex.branchable.comGravatar Joey Hess2015-12-23
|\ \
* | | devblogGravatar Joey Hess2015-12-23
| | |
| | * flush keys db queue even on exceptionGravatar Joey Hess2015-12-23
| | | | | | | | | | | | | | | Also fixed a bug in makeRunner; run' leaves the mvar empty so have to refill it.
| | * optimise read and write for Keys database (untested)Gravatar Joey Hess2015-12-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| | * allow flushDbQueue to be run repeatedlyGravatar Joey Hess2015-12-23
| | |
| | * auto-close database connections when MVar is GCedGravatar Joey Hess2015-12-23
| | |
| | * split out Database.Queue from Database.HandleGravatar Joey Hess2015-12-23
| | | | | | | | | | | | | | | | | | 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.
| * | Added a comment: Centralized server with separate remoteGravatar mark@6b90344cdab3158eacb94a3944460d138afc9bef2015-12-23
| | |
| * | Added a commentGravatar CandyAngel2015-12-23
|/ /
* | devblogGravatar Joey Hess2015-12-22
| |
| * updateGravatar Joey Hess2015-12-22
| |
| * Merge branch 'master' into smudgeGravatar Joey Hess2015-12-22
| |\ | |/ |/|
| * updateGravatar Joey Hess2015-12-22
| |
| * clean up cruft in assistant fast rename code pathGravatar Joey Hess2015-12-22
| |
| * combine PendingAddChanges for the same file into oneGravatar Joey Hess2015-12-22
| | | | | | | | | | | | | | | | | | | | | | | | | | In v6 unlocked mode, this fixes a problem that was making eg, echo > file cause the assistant to copy the file to the annex object, instead of hard linking it. That because 2 change events were seen (one for opening the file and one for closing) and processed together the file was then locked down twice. Which meant it had mutiple hard links, and so prevented linkAnnex from hard linking it. There might be scenarios where multiple events come in, but staggered such that a file gets locked down repeatedly, and it would still be copied to the annex object in that case.
| * move cleanOldKey into ingestGravatar Joey Hess2015-12-22
| |
| * populate unlocked files with newly available content when ingestingGravatar Joey Hess2015-12-22
| | | | | | | | | | | | This can happen when ingesting a new file in either locked or unlocked mode, when some unlocked files in the repo use the same key, and the content was not locally available before.
| * finish v6 support for assistantGravatar Joey Hess2015-12-22
| | | | | | | | Seems to basically work now!
| * make linkAnnex detect when the file changes as it's being copied/linked inGravatar Joey Hess2015-12-22
| | | | | | | | | | | | | | | | | | This fixes a race where the modified file ended up in annex/objects, and the InodeCache stored in the database was for the modified version, so git-annex didn't know it had gotten modified. The race could occur when the smudge filter was running; now it gets the InodeCache before generating the Key, which avoids the race.
| * refactoringGravatar Joey Hess2015-12-22
| | | | | | | | no behavior changes
* | link to neurodebian standalone debGravatar Joey Hess2015-12-22
| |
* | remove obsolte note about sid package being out of dateGravatar Joey Hess2015-12-22
| |
* | Merge branch 'master' of ssh://git-annex.branchable.comGravatar Joey Hess2015-12-22
|\ \
* | | addurl: Added --with-files option.Gravatar Joey Hess2015-12-22
| | |