summaryrefslogtreecommitdiff
path: root/Annex
Commit message (Collapse)AuthorAge
* type based git config handling for remotesGravatar Joey Hess2013-01-01
| | | | | Still a couple of places that use git config ad-hoc, but this is most of it done.
* type based git config handlingGravatar Joey Hess2012-12-29
| | | | | | | | | | | Now there's a Config type, that's extracted from the git config at startup. Note that laziness means that individual config values are only looked up and parsed on demand, and so we get implicit memoization for all of them. So this is not only prettier and more type safe, it optimises several places that didn't have explicit memoization before. As well as getting rid of the ugly explicit memoization code. Not yet done for annex.<remote>.* configuration settings.
* fix logic error breaking direct mode assistant autocommit of modified filesGravatar Joey Hess2012-12-28
|
* assistant direct mode file add/change bookkeepingGravatar Joey Hess2012-12-25
| | | | | | | | | | | | | | When a file is changed in direct mode, the old content is probably lost (at least from the local repo), and bookeeping needs to be updated to reflect this. Also, synthetic add events are generated at assistant startup, so make it detect when the file has not really changed, and avoid re-adding it. This does add the overhead of querying the runing git cat-file for the key that's recorded in git for the file, each time a file is added or modified in direct mode.
* more quickcheck funGravatar Joey Hess2012-12-19
|
* commentGravatar Joey Hess2012-12-19
|
* normalise associated filesGravatar Joey Hess2012-12-19
| | | | | Sometimes ./file will be passed in, and sometimes file; need to treat these the same.
* partial and incomplete automatic merging in direct modeGravatar Joey Hess2012-12-18
| | | | Handles our file right, but not theirs.
* direct mode merging works!Gravatar Joey Hess2012-12-18
| | | | | Automatic merge resoltion code needs to be fixed to preserve objects from direct mode files.
* added direct and indirect commandsGravatar Joey Hess2012-12-13
|
* whitespace fixGravatar Joey Hess2012-12-13
|
* Merge branch 'master' into desymlinkGravatar Joey Hess2012-12-13
|\
| * whitespace fixesGravatar Joey Hess2012-12-13
| |
* | Merge branch 'master' into desymlinkGravatar Joey Hess2012-12-13
|\| | | | | | | | | | | | | | | Conflicts: Annex/CatFile.hs Annex/Content.hs Git/LsFiles.hs Git/LsTree.hs
| * finished where indentation changesGravatar Joey Hess2012-12-13
| |
* | direct mode committingGravatar Joey Hess2012-12-12
| |
* | fix associated files to not fall back to object locationGravatar Joey Hess2012-12-12
| |
* | make parent directoryGravatar Joey Hess2012-12-12
| |
* | updateGravatar Joey Hess2012-12-10
| |
* | direct mode mappings now updated by git annex syncGravatar Joey Hess2012-12-10
| | | | | | | | | | Still lots to do to make sync handle direct mode, but this is a good first step.
* | Got object sending working in direct mode.Gravatar Joey Hess2012-12-08
| | | | | | | | | | | | | | | | | | | | | | However, I don't yet have a reliable way to deal with files being modified while they're being transferred. I have code that detects it on the sending side, but the receiver is still free to move the wrong content into its annex, and record that it has the content. So that's not acceptable, and I'll need to work on it some more. However, at this point I can use a direct mode repository as a remote and transfer files from and to it.
* | update the cache automatically when moving objects in or outGravatar Joey Hess2012-12-08
| |
* | 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
|/
* --auto fixesGravatar Joey Hess2012-12-06
| | | | | | | * get/copy --auto: Transfer data even if it would exceed numcopies, when preferred content settings want it. * drop --auto: Fix dropping content when there are no preferred content settings.
* squelch warningGravatar Joey Hess2012-11-26
|
* finished XMPP pairing!Gravatar Joey Hess2012-11-05
| | | | | This includes keeping track of which buddies we're pairing with, to know which PairAck are legitimate.
* rsync special remote: Include annex-rsync-options when running rsync to test ↵Gravatar Joey Hess2012-10-28
| | | | | | | a key's presence. Also, use the new withQuietOutput function to avoid running the shell to /dev/null stderr in two other places.
* remove git-annex branch read cacheGravatar Joey Hess2012-10-19
| | | | | | | | | | | | | This cache prevented noticing changes made by another process. The case I just ran into involved the assistant dropping a file, which cached its presence info. Then the same file was downloaded again, but the assistant didn't know its presence info had changed. I don't see a way to keep this cache. Will instead rely on the OS level file cache, for files in the journal. May need to add more higher-level caching of info that it's ok to have a potentially stale copy of, although much of git-annex already does so.
* Preferred content path matching bugfix.Gravatar Joey Hess2012-10-17
| | | | | | | When in a subdir, both the normal filepath, and the filepath relative to the top of the git repo are needed for matching. The former for key lookup, and the latter for include/exclude to match against. Previously, key lookup didn't work in this situation.
* disable ssh connection caching for standalone buildsGravatar Joey Hess2012-10-15
| | | | | | | | | | | | The standalone build does not bundle its own ssh, so should be built to support as wide an array of ssh versions as possible, so turn off connection caching. Unfortunatly, as implemented this forces a full rebuild when building the standalone binary, and of course it makes it somewhat slower. This is not ideal, but neither is probing the ssh version every time it's run (slow), or once when initializing a repo (fragile).
* Avoid unsetting HOME when running certian git commands. Closes: #690193Gravatar Joey Hess2012-10-11
| | | | | | | | | | | | Setting GIT_INDEX_FILE clobbers the rest of the environment, making git not read ~/.gitconfig, and blow up if GECOS didn't have a name for the user. I'm not entirely happy with getEnvironment being run every time now, that's somewhat expensive. It may make sense to just set GIT_COMMITTER_* and GIT_AUTHOR_*, but I worry that clobbering the rest could break PATH, or GIT_PATH, or something else that might be used by a command run in here. And caching the environment is not a good idea either; it can change..
* add standard group selector to repo edit formGravatar Joey Hess2012-10-10
|
* webapp: configure new repos to use the standard preferred content settingsGravatar Joey Hess2012-10-10
|
* webapp: put new repos in standard groupsGravatar Joey Hess2012-10-10
| | | | | | | I'm using transfer for most things, both removable drives and cloud storage, because it's the safest choice. We'll see if it makes sense to prompt for the group when setting this up, or let the user pick something else after the fact.
* refactorGravatar Joey Hess2012-10-10
|
* assistant: Now honors preferred content settings when deciding what to transfer.Gravatar Joey Hess2012-10-09
| | | | | | | | | Both when queueing downloads, and uploads, consults the preferred content settings. I didn't make it check yet when requeing failed transfers or queuing deferred downloads; dealing with the preferred content settings (or indeed, other settings) changing while the assistant is running still needs work.
* generalized Annex.WantedGravatar Joey Hess2012-10-08
| | | | | this should make it easy to use from inside the assistant, where everything is an AssociatedFile.
* fix invered logic for shouldDropGravatar Joey Hess2012-10-08
|
* make copy --to check preferred content of the remoteGravatar Joey Hess2012-10-08
|
* uninit: Unset annex.version. Closes: #689852Gravatar Joey Hess2012-10-07
|
* fix last zombies in the assistantGravatar Joey Hess2012-10-04
| | | | | Made Git.LsFiles return cleanup actions, and everything waits on processes now, except of course for Seek.
* more zombie fightingGravatar Joey Hess2012-10-04
| | | | | | | | | | | | | | | | | | | | I'm down to 9 places in the code that can produce unwaited for zombies. Most of these are pretty innocuous, at least for now, are only used in short-running commands, or commands that run a set of actions and explicitly reap zombies after each one. The one from Annex.Branch.files could be trouble later, since both Command.Fsck and Command.Unused can trigger it, and the assistant will be doing those eventally. Ditto the one in Git.LsTree.lsTree, which Command.Unused uses. The only ones currently affecting the assistant though, are in Git.LsFiles. Several threads use several of those. (And yeah, using pipes or ResourceT would be a less ad-hoc approach, but I don't really feel like ripping my entire code base apart right now to change a foundation monad. Maybe one of these days..)
* Test that uuid -m works, falling back to plain uuid if not.Gravatar Joey Hess2012-09-25
|
* fixes for transfer resumeGravatar Joey Hess2012-09-24
| | | | | | | | | Fix resuming of downloads, which do not have a transfer info file to read. When checking upload progress, use the MVar, rather than re-reading the info file. Catch exceptions in the transfer action. Required a tryAnnex.
* flip catchDefaultIOGravatar Joey Hess2012-09-17
|
* more descriptive name for oneshotGravatar Joey Hess2012-09-15
|
* 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.
* eliminate some commits to the git-annex branchGravatar Joey Hess2012-09-15
| | | | | | | | | | | | | | Commits used to be made to the git-annex branch whenever there were journalled changes from a previous command, and the current command looked up the value of a file. This no longer happens. This means that transferkey, which is a oneshot command that stages changes, can be run multiple times by the assistant, without each of them committing the changes made by the command before. Which will be a lot faster and use less space by batching up the commits. Commits still happen if a remote git-annex branch has been changed and is merged in.
* Revert "add catFileIndex"Gravatar Joey Hess2012-09-15
| | | | | This interface is not a good idea, because a running git cat-file --batch does not notice when existing files in the index are changed.