News for git-annex 7.20181031:

Repository version 7 is now available. v6 repositories will automatically upgrade to v7. v5 repositories are still supported and will not be automatically upgraded yet. Direct mode is deprecated, and upgrading direct mode repositories to v7 is encouraged, unless they need to remain usable by older versions of git-annex. Just run git annex upgrade. git-annex will no longer initialize new repositories on crippled filesystems using direct mode, instead it uses v7. The git-annex Android app is no longer being updated. Users of the app should remove it and install using the new Termux based installation method.

git-annex 7.20181031 released with these changes

  • Added v7 repository mode. v6 upgrades automatically to v7, but v5 is still the default for now. While v6 was always experimental to some degree, its successor v7 is ready for production use!
  • Direct mode repositories are deprecated; they have many problems that v7 fixes, so upgrading them now is recommended (but not yet required): git annex upgrade --version=7
  • init: When in a crippled filesystem, initialize a v7 repository using an adjusted unlocked branch, instead of a direct mode repository.
  • At long last there's a way to hide annexed files whose content is missing from the working tree: git-annex adjust --hide-missing See
  • When already in an adjusted branch, running git-annex adjust again will update the branch as needed. This is mostly useful with --hide-missing to hide/unhide files after their content has been dropped or received.
  • git-annex sync --content supports --hide-missing; it can be used to get the content of hidden files, and it updates the adjusted branch to hide/unhide files as necessary.
  • smudge: The smudge filter no longer provides git with annexed file content, to avoid a git memory leak, and because that did not honor annex.thin. Now git annex smudge --update has to be run after a checkout to update unlocked files in the working tree with annexed file contents.
  • v7 init, upgrade: Install git post-checkout and post-merge hooks that run git annex smudge --update.
  • precommit: Run git annex smudge --update, because the post-merge hook is not run when there is a merge conflict. So the work tree will be updated when a commit is made to resolve the merge conflict.
  • Note that git has no hooks run after git stash or git cherry-pick, so the user will have to manually run git annex smudge --update after such commands.
  • Removed the old Android app.
  • Removed support for building with very old ghc < 8.0.1, and with yesod < 1.4.3, and without concurrent-output, which were only being used for the Android cross build.
  • Webapp: Fix termux detection.
  • runshell: Use system locales when built with GIT_ANNEX_PACKAGE_INSTALL set. (For Neurodebian packages.)
  • Fix database inconsistency that could cause git-annex to get confused about whether a locked file's content was present.
  • Fix concurrency bug that occurred on the first download from an exporttree remote.
  • init --version=6 will still work, but the repository is auto-upgraded immediately to v7.
  • When annex.thin is set, allow hard links to be made between executable work tree files and annex objects.
  • addurl: Removed undocumented special case in handling of a CHECKURL-MULTI response with only a single file listed. Rather than ignoring the url that was in the response, use it.
  • webapp: Fixed a crash when adding a git remote. (Reversion introduced in version 6.20180112)
  • migrate: Fix failure to migrate from URL keys. (Reversion introduced in version 6.20180926)
  • Cache high-resolution mtimes for improved detection of modified files in v7 (and direct mode).