summaryrefslogtreecommitdiff
path: root/Command
Commit message (Collapse)AuthorAge
...
* 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.
* persistent-sqlite is now a hard build dependency, since v6 repository mode ↵Gravatar Joey Hess2015-12-26
| | | | needs it.
* lost some bookkeeping infoGravatar Joey Hess2015-12-24
| | | | I forgot to convert this to use Annex.Ingest, todo later.
* Merge branch 'master' into smudgeGravatar Joey Hess2015-12-22
|\
* | move cleanOldKey into ingestGravatar Joey Hess2015-12-22
| |
* | 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
| * addurl: Added --with-files option.Gravatar Joey Hess2015-12-22
| |
| * refactorGravatar Joey Hess2015-12-22
| |
* | remove (v6) associated file in unannexGravatar Joey Hess2015-12-21
| |
* | Merge branch 'master' into smudgeGravatar Joey Hess2015-12-21
|\|
| * addurl: Added --batch option.Gravatar Joey Hess2015-12-21
| |
| * status: On crippled filesystems, was displaying M for all annexed files that ↵Gravatar Joey Hess2015-12-19
| | | | | | | | were present. Probably caused by a change to what git status displays in this situation. Fixed by treating files git thinks are modified the same as typechanged files.
* | v6: fix locking modified file when the content is not presentGravatar Joey Hess2015-12-16
| |
* | fix add of file that was locked but has been replaced by a new, unlocked ↵Gravatar Joey Hess2015-12-16
| | | | | | | | file (v6)
* | 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.
* | in v6 mode, unannex does not interact badly with pre-commit hookGravatar Joey Hess2015-12-15
| | | | | | | | So can be used in a tree with staged changes, no problems. Much nicer.
* | recent fsck changes caused ugly message when object was not presentGravatar Joey Hess2015-12-15
| |
* | reorgGravatar Joey Hess2015-12-15
| |
* | changes for v6 broke fsck in direct modeGravatar Joey Hess2015-12-15
| |
* | add: In v6 mode, acts on modified files.Gravatar Joey Hess2015-12-15
| | | | | | | | | | Same as was done in direct mode, except in v6 mode add always adds files locked, so
* | avoid pre-commit check having to do with v5 unlocked files when in v6 modeGravatar Joey Hess2015-12-15
| |
* | rename stuff for v5 unlocked files to indicate it's oldGravatar Joey Hess2015-12-15
| |
* | add: no need to make pass for old unlocked files in v6Gravatar Joey Hess2015-12-15
| |
* | have clean filter check if the filename was already in use by an old keyGravatar Joey Hess2015-12-15
| | | | | | | | | | | | | | | | The annex object for it may have been modified due to hard link, and that should be cleaned up when the new version is added. If another associated file has the old key's content, that's linked into the annex object. Otherwise, update location log to reflect that content has been lost.
* | avoid smudge filter returning invalid contentGravatar Joey Hess2015-12-11
| | | | | | | | | | | | | | | | | | | | | | | | 1. git add file 2. git commit 3. modify file 4. git commit 5. git reset HEAD^ Before this fix, that resulted in git saying the file was modified. And indeed, it didn't have the content it should in the just checked out ref, because step 3 modified the object file for the old key.
* | fsck for v6 unlocked filesGravatar Joey Hess2015-12-11
| | | | | | | | | | | | | | | | This only adds 1 stat to each file fscked for locked files, so added overhead is minimal. For unlocked files it has to access the database to see if a file is modified.
* | 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
| |
* | v6 git-annex unlockGravatar Joey Hess2015-12-10
| | | | | | | | | | | | | | | | | | | | | | Note that the implementation uses replaceFile, so that the actual replacement of the work tree file is atomic. This seems a good property to have! It would be possible for unlock in v6 mode to be run on files that do not have their content present. However, that would be a behavior change from before, and I don't see any immediate need to support it, so I didn't implement it.
* | 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
* | 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.
* | avoid clean filter trying to annex a pointer fileGravatar Joey Hess2015-12-09
| |
* | avoid pre-commit hook messing up new-style unlocked files in v6 repoGravatar Joey Hess2015-12-09
| |
* | stash DbHandle in Annex stateGravatar 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.
* | update associated files database on smudge and cleanGravatar Joey Hess2015-12-07
| |
* | refactorGravatar Joey Hess2015-12-04
| |
* | commentsGravatar Joey Hess2015-12-04
| |
* | 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.
* | merge clean into smudge commandGravatar Joey Hess2015-12-04
| | | | | | | | | | | | The git filter config can be used to map the single git-annex command to the 2 actions, and this avoids "git annex clean" being used for this thing, it might have a better use for that name later.