summaryrefslogtreecommitdiff
path: root/Annex
Commit message (Collapse)AuthorAge
* clean up cruft in assistant fast rename code pathGravatar Joey Hess2015-12-22
|
* 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
* wip v6 support for assistantGravatar Joey Hess2015-12-21
| | | | Files are not yet added to v6 repos in unlocked mode.
* fix reversion in v5 git-annex add of unlocked fileGravatar Joey Hess2015-12-16
| | | | | | | | | In v5, lookupFile is supposed to only look at symlinks on disk (except when in direct mode). Note that v6 also has a bug when a locked file's symlink is deleted and is replaced with a new file. It sees that a link is staged and gets that key.
* temporarily remove cached keys database connectionGravatar Joey Hess2015-12-16
| | | | | | | | | | | | | | | | | | | | | | The problem is that shutdown is not always called, particularly in the test suite. So, a database connection would be opened, possibly some changes queued, and then not shut down. One way this can happen is when using Annex.eval or Annex.run with a new state. A better fix might be to make both of them call Keys.shutdown (and be sure to do it even if the annex action threw an error). Complication: Sometimes they're run reusing an existing state, so shutting down a database connection could cause problems for other users of that same state. I think this would need a MVar holding the database handle, so it could be emptied once shut down, and another user of the database connection could then start up a new one if it got shut down. But, what if 2 threads were concurrently using the same database handle and one shut it down while the other was writing to it? Urgh. Might have to go that route eventually to get the database access to run fast enough. For now, a quick fix to get the test suite happier, at the expense of speed.
* Use git-annex init --version=6 to get v6 for nowGravatar Joey Hess2015-12-15
| | | | | Not ready to make it default because of the direct mode upgrade needing to all happen at once.
* implemented upgrade of direct mode repo to v6Gravatar Joey Hess2015-12-15
|
* reorgGravatar Joey Hess2015-12-15
|
* update inode cache to cover file even when nothing needs to be done to linkAnnexGravatar Joey Hess2015-12-15
| | | | | | This covers the case where multiple files have the same content and are added with git add. Previously only the one that was linked to the annex got its inode cached; now both are.
* checked getKeysPresent; it's ok for v6 unlocked filesGravatar Joey Hess2015-12-11
| | | | | | When a v6 unlocked files is removed from the work tree, unused doesn't show it. When it gets removed from the index, unused does show it. This is the same as a locked file.
* finish v6 git-annex lockGravatar Joey Hess2015-12-11
| | | | This was a doozy!
* only make 1 hardlink max between pointer file and annex objectGravatar Joey Hess2015-12-11
| | | | | | | If multiple files point to the same annex object, the user may want to modify them independently, so don't use a hard link. Also, check diskreserve when copying.
* Merge branch 'master' into smudgeGravatar Joey Hess2015-12-11
|\
| * fsck: Failed to honor annex.diskreserve when checking a remote.Gravatar Joey Hess2015-12-11
| |
* | wipGravatar Joey Hess2015-12-11
| |
* | add generalized linkAnnex'Gravatar Joey Hess2015-12-10
| |
* | always format pointer file with a trailing newlineGravatar Joey Hess2015-12-10
| | | | | | | | | | | | | | Before the smudge filter added a trailing newline, but other things that wrote formatPointer to a file did not. also some new pointer staging code to use later
* | check InodeCache in inAnnex et alGravatar Joey Hess2015-12-10
| | | | | | | | | | | | This avoids querying the database when the content file doen't exist (or otherwise fails the provided check). However, it does add overhead of querying the database, and will certianly impact performance.
* | check inode cache in prepSendAnnexGravatar Joey Hess2015-12-10
| | | | | | | | | | This does mean one query of the database every time an object is sent. May impact performance.
* | moveGravatar Joey Hess2015-12-10
| |
* | make clear when code is using deprecated direct mode filesGravatar Joey Hess2015-12-09
| |
* | reorderGravatar Joey Hess2015-12-09
| |
* | use InodeCache when dropping a key to see if a pointer file can be safely resetGravatar Joey Hess2015-12-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Keys database can hold multiple inode caches for a given key. One for the annex object, and one for each pointer file, which may not be hard linked to it. Inode caches for a key are recorded when its content is added to the annex, but only if it has known pointer files. This is to avoid the overhead of maintaining the database when not needed. When the smudge filter outputs a file's content, the inode cache is not updated, because git's smudge interface doesn't let us write the file. So, dropping will fall back to doing an expensive verification then. Ideally, git's interface would be improved, and then the inode cache could be updated then too.
* | add inode cache to the dbGravatar Joey Hess2015-12-09
| | | | | | | | | | | | | | | | | | Renamed the db to keys, since it is various info about a Keys. Dropping a key will update its pointer files, as long as their content can be verified to be unmodified. This falls back to checksum verification, but I want it to use an InodeCache of the key, for speed. But, I have not made anything populate that cache yet.
* | move InodeSentinal from direct mode code to its own moduleGravatar Joey Hess2015-12-09
| | | | | | | | | | Will be used outside of direct mode for v6 unlocked files, and is already used outside of direct mode when adding files to annex.
* | link/copy pointer files to object content when it's addedGravatar Joey Hess2015-12-09
| |
* | avoid pre-commit hook messing up new-style unlocked files in v6 repoGravatar Joey Hess2015-12-09
| |
* | refactor and improve pointer file handling codeGravatar Joey Hess2015-12-09
| |
* | require "annex/objects/" before key in pointer filesGravatar Joey Hess2015-12-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This removes ambiguity, because while someone might have "WORM--foo" in a file that's not intended to be a git-annex pointer file, "annex/objects/WORM--foo" is less likely. Also, ee0c34c8f2f94775b39ef10ed580cab47d2f929c had a caveat about symlink targets being parsed as pointer files, and now the same parser is used for both. I did not include any hash directories before the key in the pointer file, as they're not needed. However, if they were included, the parser would still work ok.
* | support pointer filesGravatar Joey Hess2015-12-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Backend.lookupFile is changed to always fall back to catKey when operating on a file that's not a symlink. catKey is changed to understand pointer files, as well as annex symlinks. Before, catKey needed a file mode witness, to be sure it was looking at a symlink. That was complicated stuff. Now, it doesn't actually care if a file in git is a symlink or not; in either case asking git for the content of the file will get the pointer to the key. This does mean that git-annex will treat a link foo -> WORM--bar as a git-annex file, and also treats a regular file containing annex/objects/WORM--bar as a git-annex file. Calling catKey could make git-annex commands need to do more work than before. This would especially be the case if a repo contained many regular files, and only a few annexed files, as now git-annex will need to ask git about the contents of the regular files.
* | Merge branch 'master' into smudgeGravatar Joey Hess2015-12-07
|\|
| * fix temp filenameGravatar Joey Hess2015-12-06
| | | | | | | | | | | | | | Was not putting it inside the temp dir, but next to it! This was just wrong, and it led to a longer filename that desired being used, leading to some bug reports.
| * avoid too long temp dir templateGravatar Joey Hess2015-12-06
| | | | | | | | | | The filename might be at or close to the filename length limit, so using it as the template for the temp dir would then fail.
* | don't let git-annex direct be run in a v6 repoGravatar Joey Hess2015-12-04
| |
* | add v6; keep v5 working for now and manual upgradeGravatar Joey Hess2015-12-04
| | | | | | | | | | | | | | | | | | | | | | | | Since all places where a repo is used in direct mode need to have git-annex upgraded before the repo can safely be converted to v6, the upgrade needs to be manual for now. I suppose that at some point I'll want to drop all the direct mode support code. At that point, will stop supporting v5, and will need to auto-upgrade any remaining v5 repos. If possible, I'd like to carry the direct mode support for say, a year or so, to give people plenty of time to upgrade and avoid disruption.
* | auto-configure filter.annex.smudge and clean on initGravatar Joey Hess2015-12-04
| |
* | 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.
* | clean filter should update location log when adding new content to annexGravatar Joey Hess2015-12-04
| |
* | basic clean filter workingGravatar Joey Hess2015-12-04
|/
* annex object file mode for core.sharedRepositoryGravatar Joey Hess2015-11-18
| | | | | | When core.sharedRepository is set, annex object files are not made mode 444, since that prevents a user other than the file owner from locking them. Instead, a mode such as 664 is used in this case.
* avoid spawning file size polling thread when not in -J modeGravatar Joey Hess2015-11-16
|
* Display progress meter in -J mode when downloading from the web.Gravatar Joey Hess2015-11-16
| | | | | Including in addurl, and get --from web, but also in S3 and External special remotes when a web url is known for content in those remotes.
* add missing checkSaneLock wrapper for pidlocksGravatar Joey Hess2015-11-16
|
* init: Automatically enable annex.pidlock when necessary.Gravatar Joey Hess2015-11-13
|
* 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)