summaryrefslogtreecommitdiff
path: root/Annex
Commit message (Collapse)AuthorAge
* Fix reversion in init when ran as root, introduced in version 5.20150731.Gravatar Joey Hess2015-08-19
|
* importfeed --relaxed: Avoid hitting the urls of items in the feed.Gravatar Joey Hess2015-08-19
|
* Fix setting/setting/viewing metadata that contains unicode or other special ↵Gravatar Joey Hess2015-08-11
| | | | | | | | | | | | | | | | | characters, when in a non-unicode locale. Oh boy, not again. So, another place that the filesystem encoding needs to be applied. Yay. In passing, I changed decodeBS so if a NUL is embedded in the input, the resulting FilePath doesn't get truncated at that NUL. This was needed to make prop_b64_roundtrips pass, and on reviewing the callers of decodeBS, I didn't see any where this wouldn't make sense. When a FilePath is used to operate on the filesystem, it'll get truncated at a NUL anyway, whereas if a String is being used for something else, it might conceivably have a NUL in it, and we wouldn't want it to get truncated when going through decodeBS. (NB: There may be a speed impact from this change.)
* cleanGravatar Joey Hess2015-08-04
|
* sshopts is never going to be null; the concat of it may beGravatar Joey Hess2015-08-04
|
* typoGravatar Joey Hess2015-08-04
|
* Windows: Fix bug that caused git-annex sync to fail due to missing ↵Gravatar Joey Hess2015-08-04
| | | | | | | | | | | | | environment variable. I think that the problem was caused by windows not having a concept of an env var that is set, but to the empty string. So, GIT_ANNEX_SSHOPTION got set to "" and was not seen as set at all. Easy fix, which also makes git-annex sync a little faster is to not set GIT_SSH, when GIT_ANNEX_SSHOPTION has no options. Might as well let git use ssh per usual in this case, no need to run git-annex as the proxy ssh command..
* proxy: Fix proxy git commit of non-annexed files in direct mode.Gravatar Joey Hess2015-08-04
| | | | | | | * proxy: Fix proxy git commit of non-annexed files in direct mode. * proxy: If a non-proxied git command, such as git revert would normally fail because of unstaged files in the work tree, make the proxied command fail the same way.
* windows build warning fixesGravatar Joey Hess2015-08-03
|
* Improve shutdown due to --time-limit, especially for fsckGravatar Joey Hess2015-07-31
| | | | | | | | | | | | | | | * Perform a clean shutdown when --time-limit is reached. This includes running queued git commands, and cleanup actions normally run when a command is finished. * fsck: Commit incremental fsck database when --time-limit is reached. Previously, some of the last files fscked did not make it into the database when using --time-limit. Note that this changes Annex.addCleanup hooks, to run after --time-limit expires. Fsck was using such a hook to clean up after a --incremental-schedule, and that shouldn't run when --time-limit exipires it. So, instead, moved that cleanup code to be run by cleanupIncremental. Resulted in some data type juggling.
* init: Detect when the filesystem is crippled such that it ignores attempts ↵Gravatar Joey Hess2015-07-30
| | | | to remove the write bit from a file, and enable direct mode. Seen with eg, NTFS fuse on linux.
* avoid calling copy when file DNEGravatar Joey Hess2015-07-30
| | | | | This avoids an ugly warning when running git annex fsck --from a rsync remote in a repo in direct mode.
* Only look at reflogs for relevant branches, not for git-annex branchesGravatar Joey Hess2015-07-07
| | | | This speeds it up quite a bit.. May still be too slow in large repos.
* 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.
* refactor ls-tree paramsGravatar Joey Hess2015-07-06
| | | | All in one place to avoid bugs like 2ea34c47dd9819111f3cbaa2ce848581d286c05c
* bugfix: Pass --full-tree when using git ls-files to get a list of files on ↵Gravatar Joey Hess2015-07-06
| | | | the git-annex branch, so it works when run in a subdirectory. This bug affected git-annex unused, and potentially also transitions running code and other things.
* 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
|
* Increased the default annex.bloomaccuracy from 1000 to 10000000Gravatar Joey Hess2015-06-16
| | | | | | | | | | | | | | | | | | | This makes git annex unused use around 48 mb more memory than it did before, but the massive increase in accuracy makes this worthwhile for all but the smallest systems. Also, I want to use the bloom filter for sync --all --content, to avoid dropping files that the preferred content doesn't want, and 1/1000 false positives would be far too many in that use case, even if it were acceptable for unused. Actual memory use numbers: 1000: 21.06user 3.42system 0:26.40elapsed 92%CPU (0avgtext+0avgdata 501552maxresident)k 1000000: 21.41user 3.55system 0:26.84elapsed 93%CPU (0avgtext+0avgdata 549496maxresident)k 10000000: 21.84user 3.52system 0:27.89elapsed 90%CPU (0avgtext+0avgdata 549920maxresident)k Based on these numbers, 10 million seemed a better pick than 1 million.
* Added new "anything" preferred content expression, which matches all ↵Gravatar Joey Hess2015-06-16
| | | | versions of all files.
* Fix bug that prevented enumerating locally present objects in repos tuned ↵Gravatar Joey Hess2015-06-11
| | | | | | | | with annex.tune.objecthash1=true Need to walk 1 level of subdirs less in this case. The git-annex branch traversal code didn't have a similar bug.
* import --clean-duplicates: Fix bug that didn't count local or trusted repo's ↵Gravatar Joey Hess2015-06-03
| | | | copy of a file as one of the necessary copies to allow removing it from the import location.
* get --incomplete: New option to resume any interrupted downloads.Gravatar Joey Hess2015-06-02
|
* remove Params constructor from Utility.SafeCommandGravatar Joey Hess2015-06-01
| | | | | | | | | | | | | | | | | | This removes a bit of complexity, and should make things faster (avoids tokenizing Params string), and probably involve less garbage collection. In a few places, it was useful to use Params to avoid needing a list, but that is easily avoided. Problems noticed while doing this conversion: * Some uses of Params "oneword" which was entirely unnecessary overhead. * A few places that built up a list of parameters with ++ and then used Params to split it! Test suite passes.
* sync, remotedaemon: Pass configured ssh-options even when annex.sshcaching ↵Gravatar Joey Hess2015-05-30
| | | | is disabled.
* fix windows buildGravatar Joey Hess2015-05-22
|
* 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.
* honor core.sharedRepository settings in lockContentGravatar Joey Hess2015-05-19
| | | | | | | | The content file may not be owned by the user running git-annex, in which case, setting the owner write bit was not enough to let lockContent act on the file. However, with some core.sharedRepository configs, the file should be writable by the user's group. So, the thing to do is to call thawContent on it.
* fix inAnnexSafe result for direct file that is being droppedGravatar Joey Hess2015-05-19
| | | | | | | | | | | It was returning Just False in this situation, which differed from indirect mode behavior. I don't think this led to any actual problems; things that checked if the file being dropped was present just failed to fail, and instead reported it wasn't present, possibly incorrectly. Hmm, it's possible that this could have made git annex fsck --from remote update the location log wrongly, if a remote was in direct mode, and was in the middle of trying to drop a key, and the drop later failed.
* convert lockContent to use new LockPoolsGravatar Joey Hess2015-05-19
| | | | | | | | | | | | Also cleaned up the code, avoiding creating a lock file if we're going to open it for create later anyway. And, if there's an exception while preparing to lock the file, but not at the point of actually taking the lock, throw an exception, instead of silently not locking and pretending to succeed. And, on Windows, always use lock file, even if the repo somehow got into indirect mode (maybe with cygwin git..)
* 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.
* 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!
* don't clean up transfer lock file when retrying transferGravatar Joey Hess2015-05-12
| | | | | This affected callers that used forwardRetry; if the 1st attempt failed it would clean up the transfer lock before retrying.
* Fix an unlikely race that could result in two transfers of the same key ↵Gravatar Joey Hess2015-05-12
| | | | | | running at once. As discussed in bug report.
* convert to using Utility.Lockfile for transfer lock filesGravatar Joey Hess2015-05-12
| | | | | | | | Should be no behavior changes, just simplified code. The only actual difference is it doesn't truncate the lock file. I think that was a holdover from when transfer info was written to the lock file.
* Avoid accumulating transfer failure log files unless the assistant is being ↵Gravatar Joey Hess2015-05-12
| | | | | | | | | | | | used. Only the assistant uses these, and only the assistant cleans them up, so make only git annex transferkeys write them, There is one behavior change from this. If glacier is being used, and a manual git annex get --from glacier fails because the file isn't available yet, the assistant will no longer later see that failed transfer file and retry the get. Hope no-one depended on that old behavior.
* Take space that will be used by running downloads into account when checking ↵Gravatar Joey Hess2015-05-12
| | | | annex.diskreserve.
* 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
| * rename traverse to walk since Data.Traversable is imported by default in ghc ↵Gravatar Joey Hess2015-05-10
| | | | | | | | 7.10
| * fix build warning with ghc 7.10Gravatar Joey Hess2015-05-10
| |
| * move nubbing into function whose algo needs a nubbed listGravatar Joey Hess2015-04-30
| |
| * refactorGravatar Joey Hess2015-04-30
| |
| * Make repo init more robust.Gravatar Joey Hess2015-04-20
| | | | | | | | | | | | | | | | The setDifferences that got added to initialize turns out to make a git commit, and before ensureCommit has been used. Thus, repo init can fail when the system has a broken hostname etc. Move the ensureCommit to the very first thing to avoid this kind of breakage.
| * When a key's size is unknown, still check the annex.diskreserve, and avoid ↵Gravatar Joey Hess2015-04-17
| | | | | | | | | | | | | | getting content if the disk is too full. We can't check if there's enough disk space to download the content, but we *can* check if there's certainly not enough!
* | Merge branch 'master' into concurrentprogressGravatar Joey Hess2015-04-14
|\| | | | | | | | | Conflicts: debian/changelog
| * a few hlintsGravatar Joey Hess2015-04-11
| |
* | refactorGravatar Joey Hess2015-04-10
| |
* | get, move, copy, mirror: Concurrent downloads and uploads are now supported!Gravatar Joey Hess2015-04-10
| | | | | | | | | | | | | | | | | | | | | | This works, and seems fairly robust. Clean get of 20 files at -J3. At -J10, there are some messages about ssh multiplexing, probably due to a race spinning up the ssh connection cacher. But, it manages to get all the files ok regardless. The progress bars are a scrambled mess though, due to bugs in ascii-progress, which I've already filed. Particularly this one: https://github.com/yamadapc/haskell-ascii-progress/issues/8
* | simplify and make more atomicGravatar Joey Hess2015-04-10
|/
* contentlocationn: New plumbing command.Gravatar Joey Hess2015-04-09
|