![Joey Hess](/assets/img/avatar_default.png)
* unannex, uninit: Avoid committing after every file is unannexed, for massive speedup. * --notify-finish switch will cause desktop notifications after each file upload/download/drop completes (using the dbus Desktop Notifications Specification) * --notify-start switch will show desktop notifications when each file upload/download starts. * webapp: Automatically install Nautilus integration scripts to get and drop files. * tahoe: Pass -d parameter before subcommand; putting it after the subcommand no longer works with tahoe-lafs version 1.10. (Thanks, Alberto Berti) * forget --drop-dead: Avoid removing the dead remote from the trust.log, so that if git remotes for it still exist anywhere, git annex info will still know it's dead and not show it. * git-annex-shell: Make configlist automatically initialize a remote git repository, as long as a git-annex branch has been pushed to it, to simplify setup of remote git repositories, including via gitolite. * add --include-dotfiles: New option, perhaps useful for backups. * Version 5.20140227 broke creation of glacier repositories, not including the datacenter and vault in their configuration. This bug is fixed, but glacier repositories set up with the broken version of git-annex need to have the datacenter and vault set in order to be usable. This can be done using git annex enableremote to add the missing settings. For details, see http://git-annex.branchable.com/bugs/problems_with_glacier/ * Added required content configuration. * assistant: Improve ssh authorized keys line generated in local pairing or for a remote ssh server to set environment variables in an alternative way that works with the non-POSIX fish shell, as well as POSIX shells. # imported from the archive
53 lines
2.6 KiB
Markdown
53 lines
2.6 KiB
Markdown
Yesterday I cut another release. However, getting an OSX build took until
|
|
12:12 pm today because of a confusion about the location of lsof on OSX. The
|
|
OSX build is now available, and I'm looking forward to hearing if it's working!
|
|
|
|
----
|
|
|
|
Today I've been working on making `git annex sync` commit in direct mode.
|
|
|
|
For this I needed to find all new, modified, and deleted files, and I also
|
|
need the git SHA from the index for all non-new files. There's not really
|
|
an ideal git command to use to query this. For now I'm using
|
|
`git ls-files --others --stage`, which works but lists more files than I
|
|
really need to look at. It might be worth using one of the Haskell libraries
|
|
that can directly read git's index.. but for now I'll stick with `ls-files`.
|
|
|
|
It has to check all direct mode files whose content is present, which means
|
|
one stat per file (on top of the stat that git already does), as well as one
|
|
retrieval of the key per file (using the single `git cat-file` process that
|
|
git-annex talks to).
|
|
|
|
This is about as efficient as I can make it, except that unmodified
|
|
annexed files whose content is not present are listed due to --stage,
|
|
and so it has to stat those too, and currently also feeds them into `git add`.
|
|
|
|
The assistant will be able to avoid all this work, except once at startup.
|
|
|
|
Anyway, direct mode committing is working!
|
|
|
|
For now, `git annex sync` in direct mode also adds new files. This because
|
|
`git annex add` doesn't work yet in direct mode.
|
|
|
|
It's possible for a direct mode file to be changed during a commit,
|
|
which would be a problem since committing involves things like calculating
|
|
the key and caching the mtime/etc, that would be screwed up. I took
|
|
care to handle that case; it checks the mtime/etc cache before and after
|
|
generating a key for the file, and if it detects the file has changed,
|
|
avoids committing anything. It could retry, but if the file is a VM disk
|
|
image or something else that's constantly modified, commit retrying forever
|
|
would not be good.
|
|
|
|
----
|
|
|
|
For `git annex sync` to be usable in direct mode, it still needs
|
|
to handle merging. It looks like I may be able to just enhance the automatic
|
|
conflict resolution code to know about typechanged direct mode files.
|
|
|
|
The other missing piece before this can really be used is that currently
|
|
the key to file mapping is only maintained for files added locally, or
|
|
that come in via `git annex sync`. Something needs to set up that mapping
|
|
for files present when the repo is initally cloned. Maybe the thing
|
|
to do is to have a `git annex directmode` command that enables/disables
|
|
direct mode and can setup the the mapping, as well as any necessary unlocks
|
|
and setting the trust level to untrusted.
|