summaryrefslogtreecommitdiff
path: root/Logs
Commit message (Collapse)AuthorAge
* Optimised git-annex branch log file timestamp parsing. 10% speedupGravatar Joey Hess2016-09-29
| | | | | | This sped up git annex find --not --in web from 6.64s to 5.69s. The optimised parser is probably more like 50% faster than the general one it replaced.
* move Arbitrary instance to new Types.Transfer moduleGravatar Joey Hess2016-09-05
| | | | Avoid orphan instance warning
* avoid warning about orphan Arbirary instanceGravatar Joey Hess2016-09-05
|
* get, move, copy, mirror: Added --failed switch which retries failed copies/movesGravatar Joey Hess2016-08-03
| | | | | | | | | Note that get --from foo --failed will get things that a previous get --from bar tried and failed to get, etc. I considered making --failed only retry transfers from the same remote, but it was easier, and seems more useful, to not have the same remote requirement. Noisy due to some refactoring into Types/
* log: Added --all option.Gravatar Joey Hess2016-07-17
|
* remove \r from Arbitrary for log testsGravatar Joey Hess2016-05-27
|
* Split lines in the git-annex branch on \r as well as \n, to deal with \r\n ↵Gravatar Joey Hess2016-05-27
| | | | | | | | | | | | | | | terminated lines written by some versions of git-annex on Windows. This fixes strange displays in some cases, including whereis showing many duplicate locations, and showing more total copies than actually exist. It's unknown if that lead to data loss when eg, dropping. At the moment, it seems unlikely it could, since the UUID with \r's appended is not the same as a UUID without, and so no remote matches it. It's also unknown if \r's can leak in on windows, perhaps when merging the git-annex branch.
* nub transitionList to avoid ugly message after repeated transitions, and ↵Gravatar Joey Hess2016-05-18
| | | | avoid redundant work for repeated ForgetDeadRemotes transitions
* reinject: Added new mode which can reinject known files into the annex.Gravatar Joey Hess2016-04-22
| | | | For example: git-annex reinject --known /mnt/backup/*
* Limit annex.largefiles parsing to the subset of preferred content ↵Gravatar Joey Hess2016-02-03
| | | | | | expressions that make sense in its context. So, not "standard" or "lackingcopies", etc.
* simplifyGravatar Joey Hess2016-02-03
|
* remove 163 lines of code without changing anything except importsGravatar Joey Hess2016-01-20
|
* refactorGravatar Joey Hess2016-01-19
|
* avoid unnecessary reading of git-annex branch data when matching on ↵Gravatar Joey Hess2015-12-04
| | | | | | | annex.largefiles This makes git annex clean not look at the git-annex branch at all, and so speeds it up by 50% or more.
* fix use of hifalutin terminologyGravatar Joey Hess2015-11-16
|
* convert from Utility.LockPool to Annex.LockPool everywhereGravatar Joey Hess2015-11-12
|
* Avoid unncessary write to the location log when a file is unlocked and then ↵Gravatar Joey Hess2015-10-12
| | | | | | | | | | | | | | | added back with unchanged content. Implemented with no additional overhead of compares etc. This is safe to do for presence logs because of their locality of change; a given repo's presence logs are only ever changed in that repo, or in a repo that has just been actively changing the content of that repo. So, we don't need to worry about a split-brain situation where there'd be disagreement about the location of a key in a repo. And so, it's ok to not update the timestamp when that's the only change that would be made due to logging presence info.
* oops, didn't mean to commit this debugGravatar Joey Hess2015-10-06
|
* analysisGravatar Joey Hess2015-10-06
|
* Fix bug in combination of preferred and required content settings. When one ↵Gravatar Joey Hess2015-09-15
| | | | | | | was set to the empty string and the other set to some expression, this bug caused all files to be wanted, instead of only files matching the expression. Avoid: MAny `MOr` otherexpression Which matches anything.
* add test case that all standard group preferred content expressions parseGravatar Joey Hess2015-06-17
|
* 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.
* dead --key: Can be used to mark a key as dead.Gravatar Joey Hess2015-06-09
|
* fsck: Ignore keys that are known to be dead when running in --all mode or a ↵Gravatar Joey Hess2015-06-09
| | | | in a bare repo. Otherwise, still reports files with lost contents, even if the content is dead.
* parse X in location log file as indicating a dead keyGravatar Joey Hess2015-06-09
| | | | | | | | | | | | | | A dead key is both not present at the location that thinks it has a copy, and also is assumed to probably not be present anywhere else. Although there may be lurking disconnected repos that somehow still have a copy. Suprisingly few changes needed for this! This is because the presence log code only really concerns itself with keys that are present, and dead keys are not present. Note that both the location and web log can be parsed as having a dead key. I don't see any value to having keys listed as dead in the web log, but since it doesn't change any behavior, there was no point in not parsing it.
* remove back-compat code for old version of containersGravatar Joey Hess2015-06-06
| | | | Already b-d on a newer version.
* ignore failure to clean up stale transfer lock fileGravatar Joey Hess2015-05-19
| | | | | Perhaps due to permissions problem, or perhaps a race with another process also cleaning up.
* fix crash in stale transfer lockfile cleanup codeGravatar Joey Hess2015-05-19
| | | | | Need to differentiate between the lockfile not being locked, and it not existing.
* 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.
* lock pools to work around non-concurrency/composition safety of POSIX fcntlGravatar Joey Hess2015-05-18
|
* Stale transfer lock and info files will be cleaned up automatically when ↵Gravatar Joey Hess2015-05-12
| | | | | | get/unused/info commands are run. Deleting lock files is tricky, tricky stuff. I think I got it right!
* an optimization that also fixes a reversionGravatar Joey Hess2015-05-12
| | | | | | | | | | | | | | | | | | | | This is a little optimisation; avoid loading the info file for the download of the current key when checking for other downloads. The reversion it fixes is sorta strange. b94eafec8c4a7868da753f9b22ca823552e9764c broke checking for transfers that were already in progress. Indeed, the transfer lock was not held after getTransfers was called. Why? I think it's magic in ghc's handling of getLock and setLock, although it's hard to tell since those functions are almost entirely undocumented as to their semantics. Something, either the RTS (or maybe it's linux?) notices that the same process has taken a lock and is now calling getLock on a FD attached to the same file. So, it drops the lock. So, this optimisation avoids that problematic behavior.
* Take space that will be used by running downloads into account when checking ↵Gravatar Joey Hess2015-05-12
| | | | annex.diskreserve.
* couple of AMP warnings I missed beforeGravatar Joey Hess2015-05-10
|
* 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.
* more time-1.5 fixesGravatar Joey Hess2015-05-10
|
* fix build warning with time 1.5Gravatar Joey Hess2015-05-10
|
* forgot to add new moduleGravatar Joey Hess2015-05-10
|
* support time-1.5.0Gravatar Joey Hess2015-05-10
| | | | | | | This no longer uses old-locale's defaultTimeLocale, but provides one of its own. Factored out a Logs.TimeStamp.
* Fix activity log parsing.Gravatar Joey Hess2015-04-09
| | | | | I had some cargo culting in there that used the wrong type, so it failed to parse old logs, and overwrote them with the new log.
* rethought distributed fsck; instead add activity.log and expire commandGravatar Joey Hess2015-04-05
| | | | This is much more space efficient!
* fsck: Added --distributed and --expire options, for distributed fsck.Gravatar Joey Hess2015-04-01
|
* importfeed: Avoid downloading a redundant item from a feed whose guid has ↵Gravatar Joey Hess2015-03-31
| | | | | | | been downloaded before, even when the url has changed. To support this, always store itemid in metadata; before this was only done when annex.genmetadata was set.
* Fix GETURLS in external special remote protocol to strip downloader prefix ↵Gravatar Joey Hess2015-03-27
| | | | | | | from logged url info before checking for the specified prefix. This doesn't change what GETURLS returns, but only whether it matches any prefix that the external special remote asked for.
* Added SETURIPRESENT and SETURIMISSING to external special remote protocolGravatar Joey Hess2015-03-05
| | | | | | | | | Useful for things like ipfs that don't use regular urls. An external special remote can add a regular url to a key, and then git-annex get will download it from the web. But for ipfs, we want to instead tell git-annex that the uri uses OtherDownloader. Before this change, the external special remote protocol lacked a way to do that.
* implement annex.tune.branchhash1Gravatar Joey Hess2015-01-28
| | | | | | | | I hope this doesn't impact speed much -- it does have to pull out a value from Annex state every time it accesses the branch now. The test case I dropped has never caught any problems that I can remember, and would have been rather difficult to convert.
* import Data.Default in CommonGravatar Joey Hess2015-01-28
|
* refactorGravatar Joey Hess2015-01-28
|
* rework Differences data typeGravatar Joey Hess2015-01-28
| | | | | | | | | | | | | | Eliminated complexity and future proofed. The most important change is that all functions over Difference are now total; any Difference that can be expressed should be handled. Avoids needs for sanity checking of inputs, and version skew with the future. Also, the difference.log now serializes a [Difference], not a Differences. This saves space and keeps it simpler. Note that [Difference] might contain conflicting differences (eg, [Version5, Version6]. In this case, one of them needs to consistently win over the others, probably based on Ord.
* Repository tuning parameters can now be passed when initializing a ↵Gravatar Joey Hess2015-01-27
| | | | | | | | | | repository for the first time. * init: Repository tuning parameters can now be passed when initializing a repository for the first time. For details, see http://git-annex.branchable.com/tuning/ * merge: Refuse to merge changes from a git-annex branch of a repo that has been tuned in incompatable ways.