summaryrefslogtreecommitdiff
path: root/Annex
Commit message (Collapse)AuthorAge
* refactorGravatar Joey Hess2014-06-16
|
* work around a bug in gitGravatar Joey Hess2014-06-12
| | | | | | | | | | | http://marc.info/?l=git&m=140262402204212&w=2 This git bug manifested on FAT and Windows as the test suite failing in 3 places. All involved merge conflict resolution. It turned out that the associated file mappings were getting messed up, and that happened because this git bug lost track of what files were supposed to be symlinks. This commit was sponsored by Eric Kidd.
* finish fixing windows timezone madnessGravatar Joey Hess2014-06-12
| | | | | | | | | | | | | | | | | | | | | Rather than calculating the TSDelta once, and caching it, this now reads the inode sential file's InodeCache file once, and then each time a new InodeCache is generated, looks at the sentinal file to get the current delta. This way, if the time zone changes while git-annex is running, it will adapt. This adds some inneffiency, but only on Windows, and only 1 stat per new file added. The worst innefficiency is that `git annex status` and `git annex sync` will now (on Windows) stat the inode sentinal file once per file in the repo. It would be more efficient to use getCurrentTimeZone, rather than needing to stat the sentinal file. This should be easy to do, once the time package gets my bugfix patch. This commit was sponsored by Jürgen Lüters.
* fix for Windows file timestamp timezone madnessGravatar Joey Hess2014-06-12
| | | | | | | | | | | | | | | | | | | | | | On Windows, changing the time zone causes the apparent mtime of files to change. This confuses git-annex, which natually thinks this means the files have actually been modified (since THAT'S WHAT A MTIME IS FOR, BILL <sheesh>). Work around this stupidity, by using the inode sentinal file to detect if the timezone has changed, and calculate a TSDelta, which will be applied when generating InodeCaches. This should add no overhead at all on unix. Indeed, I sped up a few things slightly in the refactoring. Seems to basically work! But it has a big known problem: If the timezone changes while the assistant (or a long-running command) runs, it won't notice, since it only checks the inode cache once, and so will use the old delta for all new inode caches it generates for new files it's added. Which will result in them seeming changed the next time it runs. This commit was sponsored by Vincent Demeester.
* export CreateProcess fields from Utility.ProcessGravatar Joey Hess2014-06-10
| | | | update code to avoid cwd and env redefinition warnings
* simplifyGravatar Joey Hess2014-06-09
|
* avoid fast-forwarding when a merge conflict was auto-resolvedGravatar Joey Hess2014-06-09
|
* avoid bad commits after interrupted direct mode sync (or merge)Gravatar Joey Hess2014-06-09
| | | | | | | | | | | | | | | It was possible for a interrupted sync or merge in direct mode to leave the work tree out of sync with the last recorded commit. This would result in the next commit seeing files missing from the work tree, and committing their removal. Now, a direct mode merge happens not only in a throwaway work tree, but using a temporary index file, and without any commits or index changes being made until the real work tree has been updated. If the merge is interrupted, the work tree may have some updated files, but worst case a commit will redundantly commit changes that come from the merge. This commit was sponsored by Tony Cantor.
* fixed getting files from bare repos on windowsGravatar Joey Hess2014-06-05
|
* wipGravatar Joey Hess2014-06-05
|
* Windows: Fix bug introduced in last release that caused files in the ↵Gravatar Joey Hess2014-06-05
| | | | git-annex branch to have lines teminated with \r.
* webapp: When adding a new local repository, fix bug that caused its group ↵Gravatar Joey Hess2014-05-29
| | | | | | | | | and preferred content to be set in the current repository, even when not combining. There was a tricky bit here, when it does combine, the edit form is shown, and so the info needs to be committed to the new repository, but then pulled into the current one. And caches need to be invalidated for it to be visible in the edit form.
* Use exceptions in place of deprecated MonadCatchIO-transformersGravatar Ben Gamari2014-05-28
|
* Fix encoding of data written to git-annex branch. Avoid truncating unicode ↵Gravatar Joey Hess2014-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | characters to 8 bits. Allow any encoding to be used, as with filenames (but utf8 is the sane choice). Affects metadata and repository descriptions, and preferred content expressions. The question of what's the right encoding for the git-annex branch is a vexing one. utf-8 would be a nice choice, but this leaves the possibility of bad data getting into a git-annex branch somehow, and this resulting in git-annex crashing with encoding errors, which is a failure mode I want to avoid. (Also, preferred content expressions can refer to filenames, and filenames can have any encoding, so limiting to utf-8 would not be ideal.) The union merge code already took care to not assume any encoding for a file. Except it assumes that any \n is a literal newline, and not part of some encoding of a character that happens to contain a newline. (At least utf-8 avoids using newline for anything except liternal newlines.) Adapted the git-annex branch code to use this same approach. Note that there is a potential interop problem with Windows, since FileSystemEncoding doesn't work there, and instead things are always decoded as utf-8. If someone uses non-utf8 encoding for data on the git-annex branch, this can lead to an encoding error on windows. However, this commit doesn't actually make that any worse, because the union merge code would similarly fail with an encoding error on windows in that situation. This commit was sponsored by Kyle Meyer.
* support being run by ssh as ssh-askpass replacementGravatar Joey Hess2014-04-29
| | | | | | | | | To use, set GIT_ANNEX_SSHASKPASS to point to a fifo or regular file (FIFO is better, avoids touching disk or multiple readers) that contains the password. Then set SSH_ASKPASS=git-annex, and when ssh runs it, it will tell ssh the password. This is not yet used..
* use a subdir of GIT_ANNEX_TMP for ssh connection caching socketsGravatar Joey Hess2014-04-20
| | | | | To prevent any possible collisions with other, non-socket files, like the xmppgit directory.
* When init detects that git is not configured to commit, and sets user.email ↵Gravatar Joey Hess2014-04-20
| | | | | | | to work around the problem, also make it set user.name. I was able to reproduce git failing to commit despite user.email being set, in a test account on my laptop. The account had no GECOS information.
* replace (Key, Backend) with KeyGravatar Joey Hess2014-04-17
| | | | | | | | | | Only fsck and reinject and the test suite used the Backend, and they can look it up as needed from the Key. This simplifies the code and also speeds it up. There is a small behavior change here. Before, all commands would warn when acting on an annexed file with an unknown backend. Now, only fsck and reinject show that warning.
* reinit: New command that can initialize a new reposotory using the ↵Gravatar Joey Hess2014-04-15
| | | | configuration of a previously known repository. Useful if a repository got deleted and you want to clone it back the way it was.
* Merge branch 'master' into remotecontrolGravatar Joey Hess2014-04-14
|\ | | | | | | | | Conflicts: doc/devblog/day_152__more_ssh_connection_caching.mdwn
| * add missing Network.URI Ord instance for Debian stableGravatar Joey Hess2014-04-14
| |
* | don't try to use ssh connection caching for non-ssh urlsGravatar Joey Hess2014-04-13
| |
* | remotedaemon: When network connection is lost, close all cached ssh connections.Gravatar Joey Hess2014-04-12
| | | | | | | | This commit was sponsored by Cedric Staub.
* | sync, assistant, remotedaemon: Use ssh connection caching for git pushes and ↵Gravatar Joey Hess2014-04-12
|/ | | | | | | | | | | | | | | | | pulls. For sync, saves 1 ssh connection per remote. For remotedaemon, the same ssh connection that is already open to run git-annex-shell notifychanges is reused to pull from the remote. Only potential problem is that this also enables connection caching when the assistant syncs with a ssh remote. Including the sync it does when a network connection has just come up. In that case, cached ssh connections are likely to be stale, and so using them would hang. Until I'm sure such problems have been dealt with, this commit needs to stay on the remotecontrol branch, and not be merged to master. This commit was sponsored by Alexandre Dupas.
* Notification: Add action/status-dependent icon and urgencyGravatar Johan Kiviniemi2014-04-05
|
* Notification: summary is not optionalGravatar Johan Kiviniemi2014-04-05
| | | | Use the summary field instead of body.
* fix warning on !dbusGravatar Joey Hess2014-04-02
|
* reorg matcher types; no non-type code changesGravatar Joey Hess2014-03-29
|
* forget --drop-dead: Avoid removing the dead remote from the trust.log, so ↵Gravatar Joey Hess2014-03-26
| | | | that if git remotes for it still exist anywhere, git annex info will still know it's dead and not show it.
* fix build w/o DesktopNotificationGravatar Joey Hess2014-03-23
|
* notifications on dropGravatar Joey Hess2014-03-22
|
* fix failure notificationGravatar Joey Hess2014-03-22
|
* add desktop notificationsGravatar Joey Hess2014-03-22
| | | | | | | Motivation: Hook scripts for nautilus or other file managers need to provide the user with feedback that a file is being downloaded. This commit was sponsored by THM Schoemaker.
* toplevel lastchanged fieldGravatar Joey Hess2014-03-19
|
* Windows: Fix some filename encoding bugs.Gravatar Joey Hess2014-03-19
| | | | | | http://git-annex.branchable.com/bugs/Unicode_file_names_ignored_on_Windows/ Not a complete fix yet.
* Each for each metadata field, there's now an automatically maintained ↵Gravatar Joey Hess2014-03-18
| | | | | | | | | | "$field-lastchanged" that gives the timestamp of the last change to that field. Note that this is a nearly entirely free feature. The data was already stored in the metadata log in an easily accessible way, and already was parsed to a time when parsing the log. The generation of the metadata fields may even be done lazily, although probably not entirely (the map has to be evaulated to when queried).
* finish wiring up groupwantedGravatar Joey Hess2014-03-15
|
* "standard" can now be used as a first-class keyword in preferred content ↵Gravatar Joey Hess2014-03-14
| | | | | | | | | | | expressions. For example "standard or (include=otherdir/*)" or even "not standard" Note that the implementation avoids any potential for loops (if a standard preferred content expression itself mentioned standard). This commit was sponsored by Jochen Bartl.
* Fix ssh connection caching stop method to work with openssh 6.5p1, which ↵Gravatar Joey Hess2014-03-13
| | | | | | | | | | | | | | | | | broke the old method. Old ssh did not check the hostname passed to -O stop, so I had used "any". But now ssh does check it! I think this happened as part of the client-side hostname canonicalization changes in 6.5p1, but have not verified that introduced the problem. The symptom was that it would try to dns lookup "any", which often caused a bit of a delay at shutdown. And the old ssh connection kept running, so it would do it over and over again. Fixed by using localhost, which hopefully reliably resolves to some address that ssh will accept.. Also nukeFile the socket after ssh has been asked to shutdown, just in case.
* only run sshCleanup when the command actually used ssh connection cachingGravatar Joey Hess2014-03-13
| | | | | Optimises query commands that do not. More importantly, avoids any ssh connection cleanup delay causing problems at the end of such commands.
* Fix direct mode getKeysPresent false positive & also sped up direct mode ↵Gravatar Joey Hess2014-03-07
| | | | | | | | | unused and unannex unused: In direct mode, files that are deleted from the work tree are no longer incorrectly detected as unused. Direct mode `git annex info` slows down a bit due to more stringent checking, but not by a lot.
* styleGravatar Joey Hess2014-03-04
|
* sync: Automatically resolve merge conflict between and annexed file and a ↵Gravatar Joey Hess2014-03-04
| | | | | | | | | | | | | | | | | | | regular git file. This is a new feature, it was not handled before, since it's a bit of an edge case. However, it can be handled exactly the same as a file/dir conflict, just leave the non-annexed item alone. While implementing this, the core resolveMerge' function got a lot simpler and clearer. Note especially that where before there was an asymetric call to stagefromdirectmergedir, now graftin is called symmetrically in both cases. And, in order to add that `graftin us`, the current branch needed to be known (if there is no current branch, there cannot be a merge conflict). This led to some cleanups of how autoMergeFrom behaved when there is no current branch. This commit was sponsored by Philippe Gauthier.
* factor out Annex.AutoMerge from Command.SyncGravatar Joey Hess2014-03-04
|
* finish fixing direct mode merge bug involving unstaged local filesGravatar Joey Hess2014-03-04
| | | | | | | | | | Added test cases for both ways this can happen, with a conflict involving a file, or a directory. Cleaned up resolveMerge to not touch the work tree in direct mode, which turned out to be the only way to handle things.. And makes it much nicer. Still need to run test suite on windows.
* fix a9067868a8594577ead2ecbe55f9563bef12f26d to handle annexed files in ↵Gravatar Joey Hess2014-03-03
| | | | | | | | | | | | | | | conflicted merge In the case of a conflicted merge where the remote adds a directory, and we have a file (which is checked in), resolveMerge' will create the link, and so the fix for a9067868a8594577ead2ecbe55f9563bef12f26d looked at that, thought it was an unannexed file (it's not in the oldref), and preserved it. This is a hacky fix. It would be better for resolveMerge' to not update the work tree, at least in direct mode, and only stage the changes, which mergeDirectCleanUp could then move into tree. I want to make that change, but this is not the time to do it.
* sync: Fix bug in direct mode that caused a file not checked into git to be ↵Gravatar Joey Hess2014-03-03
| | | | deleted when merging with a remote that added a file by the same name. (Thanks, jkt)
* fix handling of nonexistant hookGravatar Joey Hess2014-03-03
|
* pre-commit-annex hook script to automatically extract metadata from lots of ↵Gravatar Joey Hess2014-03-02
| | | | | | | | | | | | | | | | | | types of files Using the extract(1) program to do the heavy lifting. Decided to make git-annex run pre-commit-annex when committing. Since git-annex pre-commit also runs it, it'll be run when git commit is run too, via the pre-commit hook. This basically gives back the pre-commit hook that git-annex took away. The implementation avoids repeatedly looking for the hook script when the assistant is running and committing repeatedly; only checks if the hook is available once. To make the script simpler, made git-annex metadata -s field?=value only set a field when it's not already got a value. This commit was sponsored by bak.
* fix combining of FIlterValuesGravatar Joey Hess2014-03-02
|