This is where announcements of new releases, features, and other news is posted. git-annex users are recommended to subscribe to this page's RSS feed.
git-annex 6.20170321 released with these changes
- Bugfix: Passing a command a filename that does not exist sometimes did not display an error, when a path to a directory was also passed.
- status: Propigate nonzero exit code from git status.
- Linux standalone builds put the bundled ssh last in PATH, so any system ssh will be preferred over it.
- assistant: Add 1/200th second delay between checking each file in the full transfer scan, to avoid using too much CPU.
- get -J: Improve distribution of jobs amoung remotes when there are more jobs than remotes.
- fsck -q: When a file has bad content, include the name of the file in the warning message.
- Windows: Improve handling of shebang in external special remote program, searching for the program in the PATH.
- Drop support for building with old versions of dns, http-conduit, directory, feed, and http-types.
- Windows: Fix bug in shell script shebang lookup code that caused a "delayed read on closed handle" error.
- git-annex-shell: Fix bug when used with a recently cloned repository, where "merging" messages were included in the output of configlist (and perhaps other commands) and caused a "Failed to get annex.uuid configuration" error.
- Support GIT_SSH and GIT_SSH_COMMAND, which are handled close the same as they are by git. However, unlike git, git-annex sometimes needs to pass the -n parameter when using these.
- sync --content-of=path (-C path) added for when you want to sync only some files' contents, not the whole working tree.
git-annex 6.20170301.1 released with these changes
- Fix reversion in yesterday's release that made SHA1E and MD5E backends not work.
git-annex 6.20170301 released with these changes
- No changes from 6.20170228; a new version number was needed due to a problem with Hackage.
News for git-annex 6.20170228:
This version of git-annex has mitigations for SHA1 hash collision problems. A new annex.securehashesonly configuration, when used in combination with signed git commits, avoids potential hash collision problems in git-annex repositories. For details, see this web page: <https://git-annex.branchable.com/tips/using_signed_git_commits/>
git-annex 6.20170228 released with these changes
- Cryptographically secure hashes can be forced to be used in a repository, by setting annex.securehashesonly. This does not prevent the git repository from containing links to insecure hashes, but it does prevent the content of such files from being added to .git/annex/objects by any method.
- Tighten key parser to prevent SHA1 collision attacks generating two keys that have the same SHA1. (Only done for keys that contain a hash). This ensures that signed git commits of annexed files will remain secure, as long as git-annex is using a secure hashing backend.
- fsck: Warn about any files whose content is present, that don't use secure hashes, when annex.securehashesonly is set.
- init: When annex.securehashesonly has been set with git-annex config, copy that value to the annex.securehashesonly git config.
- Added --securehash option to match files using a secure hash function, and corresponding securehash preferred content expression.
- sync, merge: Fail when the current branch has no commits yet, instead of not merging in anything from remotes and appearing to succeed.
- Run ssh with -n whenever input is not being piped into it, to avoid it consuming stdin that it shouldn't. This fixes git-annex-checkpresentkey --batch remote, which didn't output results for all keys passed into it. Other git-annex commands that communicate with a remote over ssh may also have been consuming stdin that they shouldn't have, which could have impacted using them in eg, shell scripts.
- sync: Improve integration with receive.denyCurrentBranch=updateInstead, displaying error messages from the remote then it fails to update its checked out branch.
- Added post-recieve hook, which makes updateInstead work with direct mode and adjusted branches.
- init: Set up the post-receive hook.
- sync: When syncing with a local repository located on a crippled filesystem, run the post-receive hook there, since it wouldn't get run otherwise. This makes pushing to repos on FAT-formatted removable drives update them when receive.denyCurrentBranch=updateInstead.
- config group groupwanted numcopies schedule wanted required: Avoid displaying extraneous messages about repository auto-init, git-annex branch merging, etc, when being used to get information.
- adjust: Fix behavior when used in a repository that contains submodules.
- Run wget with -nv instead of -q, so it will display HTTP errors.
- Run curl with -S, so HTTP errors are displayed, even when it's otherwise silent.
- When downloading in --json or --quiet mode, use curl in preference to wget, since curl is able to display only errors to stderr, unlike wget.
- status: Pass --ignore-submodules=when option on to git status.
- config --set: As well as setting value in git-annex branch, set local gitconfig. This is needed especially for annex.securehashesonly, which is read only from local gitconfig and not the git-annex branch.
- Removed support for building with the old cryptohash library. Building with that library made git-annex not support SHA3; it's time for that to always be supported in case SHA2 dominoes.
- git-annex.cabal: Make crypto-api a dependency even when built w/o webapp and test suite.
git-annex 6.20170214 released with these changes
- Increase default cost for p2p remotes from 200 to 1000. This makes git-annex prefer transferring data from special remotes when possible.
- Remove -j short option for --json-progress; that option was already taken for --json.
- vicfg: Include the numcopies configuation.
- config: New command for storing configuration in the git-annex branch.
- annex.autocommit can be configured via git-annex config, to control the default behavior in all clones of a repository.
- New annex.synccontent config setting, which can be set to true to make git annex sync default to --content. This may become the default at some point in the future. As well as being configuable by git config, it can be configured by git-annex config to control the default behavior in all clones of a repository.
- stack.yaml: Update to lts-7.18.
- Some optimisations to string splitting code.
- unused: When large files are checked right into git, avoid buffering their contents in memory.
- unused: Improved memory use significantly when there are a lot of differences between branches.
- Wormhole pairing will start to provide an appid to wormhole on 2021-12-31. An appid can't be provided now because Debian stable is going to ship a older version of git-annex that does not provide an appid. Assumption is that by 2021-12-31, this version of git-annex will be shipped in a Debian stable release. If that turns out to not be the case, this change will need to be cherry-picked into the git-annex in Debian stable, or its wormhole pairing will break.
- Fix build with aws 0.16. Thanks, aristidb.
- assistant: Make --autostart --foreground wait for the children it starts. Before, the --foreground was ignored when autostarting.
- initremote: When a uuid= parameter is passed, use the specified UUID for the new special remote, instead of generating a UUID. This can be useful in some situations, eg when the same data can be accessed via two different special remote backends.
- import: Changed how --deduplicate, --skip-duplicates, and --clean-duplicates determine if a file is a duplicate. Before, only content known to be present somewhere was considered a duplicate. Now, any content that has been annexed before will be considered a duplicate, even if all annexed copies of the data have been lost. Note that --clean-duplicates and --deduplicate still check numcopies, so won't delete duplicate files unless there's an annexed copy.
- import: --deduplicate and --skip-duplicates were implemented inneficiently; they unncessarily hashed each file twice. They have been improved to only hash once.
- import: Added --reinject-duplicates.
- Added git template directory to Linux standalone tarball and OSX app bundle.
- Improve pid locking code to work on filesystems that don't support hard links.
- S3: Fix check of uuid file stored in bucket, which was not working.
- Work around sqlite's incorrect handling of umask when creating databases.
Similar to the yearly git user survey, there is a 2015 git-annex user survey.
If you use git-annex, please take a few minutes to answer the questions!
Similar to the yearly git user survey, I am doing a 2013 git-annex user survey.
If you use git-annex, please take a few minutes to answer my questions!
Thanks to my recent successful git-annex crowdfunding campaign, $1000 has been set aside to award others for their contributions to git-annex by the end of 2013. This is not a lot of money, but I hope that the reward and recognition will encourage some more people to work on git-annex.
You don't need to know Haskell! You could contribute some interesting and useful special remote hooks, or write better documentation.
On the other hand, if you have learned Haskell, this might be your first chance to make some money with it! Some ideas for things to work on that would be particularly award-worthy:
- Port git-annex to IOS, using ghc-ios. I don't plan to ever do this myself, but you could make it happen.
- Get the git-annex assistant working in Windows, building on the existing port to Windows. Otherwise, this is on my roadmap for February.
- Solve existing bugs or todo items. There are more than I can keep up with.
The amount of the awards will vary depending on the size of the contribution. Since this is getting started later than is ideal, I reserve the right to extend it past the end of the year if I don't get enough participants.
git-annex will be briefly presented at FOSDEM, on Sunday February 4th at 15:40. Details.
Thanks to Richard Hartmann for making this presentation.
Christophe-Marie Duquesne has just announced Sharebox, a FUSE filesystem relying on git-annex:
What are your goals? Seamless synchronization "à la dropbox". Ability to use with big binary files such as mp3/movies. Entirely decentralized. Don't use unnecessary space Keep it simple: avoid special VCS commands and keep a filesystem interface as much as possible.
While still alpha, this is promising. --Joey