git-annex 10.20231227 released with these changes

  • migrate: Support distributed migrations by recording each migration, and adding a --update option that updates the local repository incrementally, hard linking annex objects to their new keys.
  • pull, sync: When operating on content, automatically handle distributed migrations.
  • Added annex.syncmigrations config that can be set to false to prevent pull and sync from migrating object content.
  • migrate: Added --apply option that (re)applies all recorded distributed migrations to the objects in repository.
  • migrate: Support adding size to URL keys that were added with --relaxed, by running eg: git-annex migrate --backend=URL foo
  • When importing from a special remote, support preferred content expressions that use terms that match on keys (eg "present", "copies=1"). Such terms are ignored when importing, since the key is not known yet. Before, such expressions caused the import to fail.
  • Support git-annex copy/move --from-anywhere --to remote.
  • Make git-annex get/copy/move --from foo override configuration of remote.foo.annex-ignore, as documented.
  • Lower precision of timestamps in git-annex branch, which can reduce the size of the branch by up to 8%.
  • sync: Fix locking problems during merge when annex.pidlock is set.
  • Avoid a problem with temp file names ending in "." on certian filesystems that have problems with such filenames.
  • sync, push: Avoid trying to send individual files to special remotes configured with importtree=yes exporttree=no, which would always fail.
  • Fix a crash opening sqlite databases when run in a non-unicode locale. (Needs persistent-sqlite 2.13.3.)