summaryrefslogtreecommitdiff
path: root/Locations.hs
Commit message (Collapse)AuthorAge
* untested transition detection on merging, and transition running codeGravatar Joey Hess2013-08-28
|
* importfeed: Ignores transient problems with feeds. Only exits nonzero when a ↵Gravatar Joey Hess2013-08-03
| | | | feed has repeatedly had a problems for at least 1 day.
* fuzz testerGravatar Joey Hess2013-05-23
|
* fix the day's windows permissions damageGravatar Joey Hess2013-05-12
|
* fix path separatorGravatar Joey Hess2013-05-12
|
* Use lower case hash directories for storing files on crippled filesystems, ↵Gravatar Joey Hess2013-04-04
| | | | | | | | | | | | | | | same as is already done for bare repositories. * since this is a crippled filesystem anyway, git-annex doesn't use symlinks on it * so there's no reason to use the mixed case hash directories that we're stuck using to avoid breaking everyone's symlinks to the content * so we can do what is already done for all bare repos, and make non-bare repos on crippled filesystems use the all-lower case hash directories * which are, happily, all 3 letters long, so they cannot conflict with mixed case hash directories * so I was able to 100% fix this and even resuming `git annex add` in the test case will recover and it will all just work.
* Update working tree files fully atomicallyGravatar Joey Hess2013-04-02
| | | | | | | | | | | This avoids commit churn by the assistant when eg, replacing a file with a symlink. But, just as importantly, it prevents the working tree being left with a deleted file if git-annex, or perhaps the whole system, crashes at the wrong time. (It also probably avoids confusing displays in file managers.)
* Additional GIT_DIR support bugfixes. May actually work now.Gravatar Joey Hess2013-02-23
| | | | | | | | | | | | | | | | | | | Two fixes. First, and most importantly, relax the isLinkToAnnex check to only look for /annex/objects/, not [^|/].git/annex/objects. If GIT_DIR is used with a detached work tree, the git directory is not necessarily named .git. There are important caveats with doing that at all, since git-annex will make symlinks that point at GIT_DIR, which means that the relative path between GIT_DIR and GIT_WORK_TREE needs to remain stable across all clones of the repository. ---- The other fix is just fixing crazy and wrong code that, when GIT_DIR is set, expects to still find a git repository in the path below the work tree, and uses some of its configuration, and some of GIT_DIR. What was I thinking, and why can't I seem to get this code right?
* Direct mode: Support filesystems like FAT which can change their inodes each ↵Gravatar Joey Hess2013-02-19
| | | | time they are mounted.
* split out Utility.InodeCacheGravatar Joey Hess2013-02-14
|
* Fix transferring files to special remotes in direct mode.Gravatar Joey Hess2013-01-06
|
* direct mode merging works!Gravatar Joey Hess2012-12-18
| | | | | Automatic merge resoltion code needs to be fixed to preserve objects from direct mode files.
* support for checking presence of objects in direct modeGravatar Joey Hess2012-12-07
| | | | | | | | | | | | | | | | | | | | | Also for dropping objects in direct mode. Checking presence reliably needs a cache of mtime, size, and inode. This way, if a file is modified, keys that point to it are no longer present. Also, the code for restoring the symlink when removing objects is unnecessarily messy. calcGitLink was generating links starting with "../../remote/.git/", when running "git annex move --from remote". I put in a workaround, but calcGitLink should probably be fixed. There is not yet support for getting objects from repositories in direct mode; it still looks for content in .git/annex/objects, and there's no once place I can change to fix that. Also, getting objects from direct mode repositories is problematic since the can be changed while the object is being transferred. It probably needs to quarantine it first.
* support for storing files in direct modeGravatar Joey Hess2012-12-07
|
* remove annex/ from key locations used for webdavGravatar Joey Hess2012-11-18
|
* drop webdav compatability with the directory special remote etcGravatar Joey Hess2012-11-16
| | | | | | | | | | The benefit of using a compatable directory structure does not outweigh the cost in complexity of handling the multiple locations content can be stored in directory special remotes. And this also allows doing away with the parent directories, which can't be made unwritable in DAV, so have no benefit there. This will save 2 http calls per file store. But, kept the directory hashing, just in case.
* indentation foo, and a new coding style page. no code changesGravatar Joey Hess2012-10-28
|
* vicfg: New command, allows editing (or simply viewing) most of the ↵Gravatar Joey Hess2012-10-03
| | | | | | | | | | | repository configuration settings stored in the git-annex branch. Incomplete; I need to finish parsing and saving. This will also be used for editing transfer control expresssions. Removed the group display from the status output, I didn't really like that format, and vicfg can be used to see as well as edit rempository group membership.
* store S3 creds in a 600 mode file inside the local git repoGravatar Joey Hess2012-09-26
|
* add recordStartTime and getStartTimeGravatar Joey Hess2012-09-25
|
* make other repositories list list all autostarted reposGravatar Joey Hess2012-09-18
| | | | And add a form to add another, unrelated repository
* bugfix: avoid staging but not committing changes to git-annex branchGravatar Joey Hess2012-09-15
| | | | | | | | | | | | | | | | | | | | | | Branch.get is not able to see changes that have been staged to the index but not committed. This is a limitation of git cat-file --batch; when reading from the index, as opposed to from a branch, it does not notice changes made after the first time it reads the index. So, had to revert the changes made in 1f73db3469e29448bcb1520893de11b23da6fb1f to make annex.alwayscommit=false stage changes. Also, ensure that Branch.change and Branch.get always see changes at all points during a commit, by not deleting journal files when staging to the index. Delete them only after committing the branch. Before, there was a race during commits where a different git-annex could see out-of-date info from the branch while a commit was in progress. That's also done when updating the branch to merge in remote branches. In the case where the local git-annex branch has had changes pushed into it that are not yet reflected in the index, and there are journalled changes as well, a merge commit has to be done.
* add decodeW8Gravatar Joey Hess2012-09-13
|
* UI for adding a ssh or rsync remoteGravatar Joey Hess2012-08-31
|
* add transfer scanned flag filesGravatar Joey Hess2012-08-23
|
* add routes to pause/start/cancel transfersGravatar Joey Hess2012-08-08
| | | | | | | | | | | | | | | | This commit includes a paydown on technical debt incurred two years ago, when I didn't know that it was bad to make custom Read and Show instances for types. As the routes need Read and Show for Transfer, which includes a Key, and deriving my own Read instance of key was not practical, I had to finally clean that up. So the compact Key read and show functions are now file2key and key2file, and Read and Show are now derived instances. Changed all code that used the old instances, compiler checked. (There were a few places, particularly in Command.Unused, and the test suite where the Show instance continue to be used for legitimate comparisons; ie show key_x == show key_y (though really in a bloom filter))
* git annex webapp now opens a browser to the webappGravatar Joey Hess2012-07-25
| | | | Also, starts the assistant if it wasn't already running.
* add transfer information filesGravatar Joey Hess2012-07-01
|
* implement daemon status serialization to a fileGravatar Joey Hess2012-06-13
| | | | | Also afterLastDaemonRun, with 10 minute slop to handle majority of clock skew issues.
* hlintGravatar Joey Hess2012-06-12
|
* add a pid fileGravatar Joey Hess2012-06-11
| | | | | Writes pid to a file. Is supposed to take an exclusive lock, but that's not working, and it's too late for me to understand why.
* daemonize git annex watchGravatar Joey Hess2012-06-11
|
* Fix display of warning message when encountering a file that uses an ↵Gravatar Joey Hess2012-05-31
| | | | unsupported backend.
* Clean up handling of git directory and git worktree.Gravatar Joey Hess2012-05-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Baked into the code was an assumption that a repository's git directory could be determined by adding ".git" to its work tree (or nothing for bare repos). That fails when core.worktree, or GIT_DIR and GIT_WORK_TREE are used to separate the two. This was attacked at the type level, by storing the gitdir and worktree separately, so Nothing for the worktree means a bare repo. A complication arose because we don't learn where a repository is bare until its configuration is read. So another Location type handles repositories that have not had their config read yet. I am not entirely happy with this being a Location type, rather than representing them entirely separate from the Git type. The new code is not worse than the old, but better types could enforce more safety. Added support for core.worktree. Overriding it with -c isn't supported because it's not really clear what to do if a git repo's config is read, is not bare, and is then overridden to bare. What is the right git directory in this case? I will worry about this if/when someone has a use case for overriding core.worktree with -c. (See Git.Config.updateLocation) Also removed and renamed some functions like gitDir and workTree that misused git's terminology. One minor regression is known: git annex add in a bare repository does not print a nice error message, but runs git ls-files in a way that fails earlier with a less nice error message. This is because before --work-tree was always passed to git commands, even in a bare repo, while now it's not.
* cabal file now autodetects whether S3 support is available.Gravatar Joey Hess2012-04-14
|
* perhaps more clear typeGravatar Joey Hess2012-03-10
|
* fix key directory hash calculation codeGravatar Joey Hess2012-03-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix Key directory hash calculation code to behave as it did before version 3.20120227 when a key contains non-ascii. The hash directories for a given Key are based on its md5sum. Prior to ghc 7.4, Keys contained raw, undecoded bytes, so the md5sum was taken of each byte in turn. With the ghc 7.4 filename encoding change, keys contains decoded unicode characters (possibly with surrigates for undecodable bytes). This changes the result of the md5sum, since the md5sum used is pure haskell and supports unicode. And that won't do, as git-annex will start looking in a different hash directory for the content of a key. The surrigates are particularly bad, since that's essentially a ghc implementation detail, so could change again at any time. Also, changing the locale changes how the bytes are decoded, which can also change the md5sum. Symptoms would include things like: * git annex fsck would complain that no copies existed of a file, despite its symlink pointing to the content that was locally present * git annex fix would change the symlink to use the wrong hash directory. Only WORM backend is likely to have been affected, since only it tends to include much filename data (SHA1E could in theory also be affected). I have not tried to support the hash directories used by git-annex versions 3.20120227 to 3.20120308, so things added with those versions with WORM will require manual fixups. Sorry for the inconvenience!
* add remote start and stop hooksGravatar Joey Hess2012-03-04
| | | | | | Locking is used, so that, if there are multiple git-annex processes using a remote concurrently, the stop hook is only run by the last process that uses it.
* improve alwayscommit=false modeGravatar Joey Hess2012-02-25
| | | | | | | | | | | | | | Now changes are staged into the branch's index, but not committed, which avoids growing a large journal. And sync and merge always explicitly commit, ensuring that even when they do nothing else, they commit the staged changes. Added a flag file to indicate that the branch's journal contains uncommitted changes. (Could use git ls-files, but don't want to run that every time.) In the future, this ability to have uncommitted changes staged in the journal might be used on remotes after a series of oneshot commands.
* ssh connection cachingGravatar Joey Hess2012-01-20
| | | | | | | | | | | Ssh connection caching is now enabled automatically by git-annex. Only one ssh connection is made to each host per git-annex run, which can speed some things up a lot, as well as avoiding repeated password prompts. Concurrent git-annex processes also share ssh connections. Cached ssh connections are shut down when git-annex exits. Note: The rsync special remote does not yet participate in the ssh connection caching.
* avoid partial functionGravatar Joey Hess2011-12-15
|
* optimize index updatingGravatar Joey Hess2011-12-11
| | | | | | | | | | | The last branch ref that the index was updated to is stored in .git/annex/index.lck, and the index only updated when the current branch ref differs. (The .lck file should later be used for locking too.) Some more optimization is still needed, since there is some redundancy in calls to git show-ref.
* move a file location to Locations.hsGravatar Joey Hess2011-12-11
|
* better syntaxGravatar Joey Hess2011-12-10
|
* Fix bug in last version in getting contents from bare repositories.Gravatar Joey Hess2011-12-10
|
* refactorGravatar Joey Hess2011-12-03
|
* convert rsync special backend to using both hash directory typesGravatar Joey Hess2011-12-02
|
* use lowercase hash by default; non-bare repos are a special caseGravatar Joey Hess2011-12-02
| | | | | | | | Directory special remotes will now always store keys in the lowercase name, which avoids the complication of catching failures to create the mixed case name. Git remotes using http will now try the lowercase name first.
* refactorGravatar Joey Hess2011-12-02
|
* refactorGravatar Joey Hess2011-11-28
|