summaryrefslogtreecommitdiff
path: root/Types
Commit message (Collapse)AuthorAge
* fix use of hifalutin terminologyGravatar Joey Hess2015-11-16
|
* convert from Utility.LockPool to Annex.LockPool everywhereGravatar Joey Hess2015-11-12
|
* pid locking configuration and abstraction layer for git-annexGravatar Joey Hess2015-11-12
| | | | (not actually used anywhere yet)
* fix build w/o concurrent-outputGravatar Joey Hess2015-11-06
|
* arrange for regional output manager to run when -J is enabledGravatar Joey Hess2015-11-04
| | | | | | | | | | Commands that want to use it have to run their seek action inside allowConcurrentOutput. Which seems reasonable; perhaps some future command will want to support the -J flag but not use regions. The region state moved from Annex to MessageState. This makes sense organizationally, and note that some uses of onLocal use a different Annex state, but pass the MessageState into it, which is what is needed.
* concurrent-output, first passGravatar Joey Hess2015-11-04
| | | | | | Output without -Jn should be unchanged from before. With -Jn, concurrent-output is used for messages, but regions are not used yet, so it's a mess.
* implement lockContent for ssh remotesGravatar Joey Hess2015-10-09
|
* fix local dropping to not require extra locking of copies, but only that the ↵Gravatar Joey Hess2015-10-09
| | | | local copy be locked for removal
* rename constructorGravatar Joey Hess2015-10-09
|
* display drop safety proofs in debug modeGravatar Joey Hess2015-10-09
|
* content locking during drop working for local git remotesGravatar Joey Hess2015-10-09
| | | | Only ssh remotes lack locking now
* finish and use lockContent interfaceGravatar Joey Hess2015-10-09
|
* improve drop proof codeGravatar Joey Hess2015-10-09
|
* refactorGravatar Joey Hess2015-10-09
|
* TrustedCopy is good enough to allow droppingGravatar Joey Hess2015-10-08
| | | | | | | By definition, a trusted repository is trusted to always have its location tracking log accurate. Thus, it should never be in a position where content is being dropped from it concurrently, as that would result in the location tracking log not being accurate.
* support invalidating existing VerifiedCopysGravatar Joey Hess2015-10-08
|
* add VerifiedCopy data typeGravatar Joey Hess2015-10-08
| | | | | | | | | There should be no behavior changes in this commit, it just adds a more expressive data type and adjusts code that had been passing around a [UUID] or sometimes a Maybe Remote to instead use [VerifiedCopy]. Although, since some functions were taking two different [UUID] lists, there's some potential for me to have gotten it horribly wrong.
* add removeKey action to RemoteGravatar Joey Hess2015-10-08
| | | | | Not implemented for any remotes yet; probably the git remote is the only one that will ever implement it.
* other 80% of avoding verification when hard linking to objects in shared repoGravatar Joey Hess2015-10-02
| | | | | | | | | | | | | | | | | | | | In c3b38fb2a075b4250e867ebd910324c65712c747, it actually only handled uploading objects to a shared repository. To avoid verification when downloading objects from a shared repository, was a lot harder. On the plus side, if the process of downloading a file from a remote is able to verify its content on the side, the remote can indicate this now, and avoid the extra post-download verification. As of yet, I don't have any remotes (except Git) using this ability. Some more work would be needed to support it in special remotes. It would make sense for tahoe to implicitly verify things downloaded from it; as long as you trust your tahoe server (which typically runs locally), there's cryptographic integrity. OTOH, despite bup being based on shas, a bup repo under an attacker's control could have the git ref used for an object changed, and so a bup repo shouldn't implicitly verify. Indeed, tahoe seems unique in being trustworthy enough to implicitly verify.
* Do verification of checksums of annex objects downloaded from remotes.Gravatar Joey Hess2015-10-01
| | | | | | | | | | | | | | | | * When annex objects are received into git repositories, their checksums are verified then too. * To get the old, faster, behavior of not verifying checksums, set annex.verify=false, or remote.<name>.annex-verify=false. * setkey, rekey: These commands also now verify that the provided file matches the key, unless annex.verify=false. * reinject: Already verified content; this can now be disabled by setting annex.verify=false. recvkey and reinject already did verification, so removed now duplicate code from them. fsck still does its own verification, which is ok since it does not use getViaTmp, so verification doesn't happen twice when using fsck --from.
* rename fsckKey to verifyKeyContentGravatar Joey Hess2015-10-01
| | | | No behavior changes.
* support gpg.programGravatar Joey Hess2015-09-09
| | | | | | When gpg.program is configured, it's used to get the command to run for gpg. Useful on systems that have only a gpg2 command or want to use it instead of the gpg command.
* fix test suite fail in LANG=CGravatar Joey Hess2015-08-12
| | | | | | | | | | | | This was caused by 88aeb849f620a13da47508045daae461a223c997 an Arbitrary String is not necessarily encoded using the filesystem encoding, and in a non-utf8 locale, encodeBS throws an exception on such a string. All I could think to do is limit test data to ascii. This shouldn't be a problem in practice, because the all Strings in git-annex that are not generated by Arbitrary should be loaded in a way that does apply the filesystem encoding.
* Simplify setup process for a ssh remote.Gravatar Joey Hess2015-08-05
| | | | | | | | | | | | | | | | | | | | | | Now it suffices to run git remote add, followed by git-annex sync. Now the remote is automatically initialized for use by git-annex, where before the git-annex branch had to manually be pushed before using git-annex sync. Note that this involved changes to git-annex-shell, so if the remote is using an old version, the manual push is still needed. Implementation required git-annex-shell be changed, so configlist can autoinit a repository even when no git-annex branch has been pushed yet. Unfortunate because we'll have to wait for it to get deployed to servers before being able to rely on this change in the documentation. Did consider making git-annex sync push the git-annex branch to repos that didn't have a uuid, but this seemed difficult to do without complicating it in messy ways. It would be cleaner to split a command out from configlist to handle the initialization. But this is difficult without sacrificing backwards compatability, for users of old git-annex versions which would not use the new command.
* wire tasty's option parser into the main program option parserGravatar Joey Hess2015-07-13
| | | | | This makes bash completion work for git-annex test, and is generally cleaner.
* convert version command, and make --raw work when not in a git repoGravatar Joey Hess2015-07-10
|
* finished converting all the main optionsGravatar Joey Hess2015-07-10
|
* improve global options display in --helpGravatar Joey Hess2015-07-10
| | | | | | Put them in the help of subcommands, not the main command. And, hide them from the synopsis, to avoid cluttering it.
* wired up global optionsGravatar Joey Hess2015-07-10
| | | | | | | Note that I ran into a problem where parsing the global options looped forever, eating memory. It was somehow caused by stacking combineGlobalSetters inside a combineGlobalSetters. Maybe due to both using "many"? Anyway, changed things to avoid that.
* convert global options (still not used)Gravatar Joey Hess2015-07-10
|
* wipGravatar Joey Hess2015-07-09
| | | | | | | Current status: * building again, but several commands are commented out * still need to implement global options, file matching options, etc
* refactorGravatar Joey Hess2015-07-09
|
* converted fsck's options to optparse-applicativeGravatar Joey Hess2015-07-08
| | | | Global options and seeking and key options are still to be done.
* support cmdnorepo actions, also using getopt-applicative thereGravatar Joey Hess2015-07-08
|
* started converting to use optparse-applicativeGravatar Joey Hess2015-07-08
| | | | | | | | | | | | This is a work in progress. It compiles and is able to do basic command dispatch, including git autocorrection, while using optparse-applicative for the core commandline parsing. * Many commands are temporarily disabled before conversion. * Options are not wired in yet. * cmdnorepo actions don't work yet. Also, removed the [Command] list, which was only used in one place.
* unused: --used-refspec can now be configured to look at refs in the reflog. ↵Gravatar Joey Hess2015-07-07
| | | | | | This provides a way to not consider old versions of files to be unused after they have reached a specified age, when the old refs in the reflog expire. May be slow.
* use bloom filter in second pass of sync --all --contentGravatar Joey Hess2015-06-16
| | | | | | | | This is needed because when preferred content matches on files, the second pass would otherwise want to drop all keys. Using a bloom filter avoids this, and in the case of a false positive, a key will be left undropped that preferred content would allow dropping. Chances of that happening are a mere 1 in 1 million.
* instance Hashable Key for bloomfilterGravatar Joey Hess2015-06-16
|
* adjust standard preferred content to work better with git annex sync --all ↵Gravatar Joey Hess2015-06-16
| | | | | | | | | | | | | | | | | | | | | | | --content backup: Use new "anything" terminal. This means that content that is not unused, but has no associated file will be wanted by backup repos. unwanted: "not anything" will result in any and all content moving off of these repos. incremental backup: Remove the "(include=* or unused)", so it matches content that has no associated files but is not unused. client: Add a include=* to the expression. This limits it to matching only files in the work tree. Without this change, sync --all --content would match a key against the expression, and since it matches exclude=archive/*, the client repo would have wanted the file content. The "and not unused" would have kept unused objects out, but not objects that were not known to be unused, or objects that another branch referred to. In practice, everything would have flooded into client repos without this change.
* Fix incremental backup standard preferred content expression to match its ↵Gravatar Joey Hess2015-06-16
| | | | | | documentation, which says it does not want files that have reached a backup repository. Checked history and these have been out of sync from the very beginning!
* 4 ns optimisation of repeated calls to hasDifference on the same DifferencesGravatar Joey Hess2015-06-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | I want this as fast as possible, so it can be added to code paths without slowing them down. Avoid the set lookup, and rely on laziness, drops runtime from 14.37 ns to 11.03 ns according to this criterion benchmark: import Criterion.Main import qualified Types.Difference as New import qualified Types.DifferenceOld as Old main :: IO () main = defaultMain [ bgroup "hasDifference" [ bench "new" $ whnf (New.hasDifference New.OneLevelObjectHash) new , bench "old" $ whnf (Old.hasDifference Old.OneLevelObjectHash) old ] ] where s = "fromList [ObjectHashLower, OneLevelObjectHash, OneLevelBranchHash]" new = New.readDifferences s old = Old.readDifferences s A little bit of added boilerplate, but I suppose it's worth it to not need to worry about set lookup overhead. Note that adding more differences would slow down the old implementation; the new implementation will run the same speed.
* fromkey, registerurl: Improve handling of urls that happen to also be ↵Gravatar Joey Hess2015-05-30
| | | | parsable as strange keys.
* better memoize core.sharedrepository handlingGravatar Joey Hess2015-05-19
| | | | | It was memoized, but that was not used consistently. Move it to Types.GitConfig so it will auto-memoize.
* use lock pools throughout git-annexGravatar Joey Hess2015-05-19
| | | | | | | | | | | | | The one exception is in Utility.Daemon. As long as a process only daemonizes once, which seems reasonable, and as long as it avoids calling checkDaemon once it's already running as a daemon, the fcntl locking gotchas won't be a problem there. Annex.LockFile has it's own separate lock pool layer, which has been renamed to LockCache. This is a persistent cache of locks that persist until closed. This is not quite done; lockContent stil needs to be converted.
* add annex.used-refspecGravatar Joey Hess2015-05-14
|
* unused: Add --used option, which can specify a set of refs to consider used, ↵Gravatar Joey Hess2015-05-14
| | | | rather than the default of considering all refs used.
* Merge branch 'master' into concurrentprogressGravatar Joey Hess2015-05-12
|\ | | | | | | | | | | | | | | | | | | | | | | Conflicts: Command/Fsck.hs Messages.hs Remote/Directory.hs Remote/Git.hs Remote/Helper/Special.hs Types/Remote.hs debian/changelog git-annex.cabal
| * rejigger imports for clean build with ghc 7.10's AMP changesGravatar Joey Hess2015-05-10
| | | | | | | | | | The explict import Prelude after import Control.Applicative is a trick to avoid a warning.
| * refactorGravatar Joey Hess2015-04-19
| |
| * switch to using cryptohash for MACGravatar Joey Hess2015-04-19
| |