News for git-annex 10.20230626:

git-annex (10.20230626) upstream; urgency=medium
.
  Many commands now quote filenames that contain unusual characters the
  same way that git does, to avoid exposing control characters to the
  terminal. The core.quotePath config can be set to false to disable this
  quoting.


git-annex 10.20230626 released with [[!toggle text="these changes"]]
[[!toggleable text="""  * Split out two new commands, git-annex pull and git-annex push.
    Those plus a git commit are equivalent to git-annex sync.
    (Note that the new commands default to syncing content, unless
    annex.synccontent is explicitly set to false.)
  * assist: New command, which is the same as git-annex sync but with
    new files added and content transferred by default.
  * sync: Started a transition to --content being enabled by default.
    When used without --content or --no-content, warn about the upcoming
    transition, and suggest using one of the options, or setting
    annex.synccontent.
  * sync: Added -g as a short option for --no-content.
  * Many commands now quote filenames that contain unusual characters the
    same way that git does, to avoid exposing control characters to the
    terminal.
  * Support core.quotePath, which can be set to false to display utf8
    characters as-is in filenames.
  * Control characters in non-filename data coming from the repository or
    other possible untrusted sources are filtered out of the display of many
    commands. When the command output is intended for use in scripting,
    control characters are only filtered out when displaying to the
    terminal.
  * find, findkeys, examinekey: When outputting to a terminal and --format
    is not used, quote control characters. Output to a pipe is unchanged.
    (Similar to the behavior of GNU find.)
  * addurl --preserve-filename now rejects filenames that contain other
    control characters, besides the escape sequences it already rejected.
  * init: Avoid autoenabling special remotes that have control characters
    in their names.
  * Support core.sharedRepository=0xxx at long last.
  * Support --json and --json-error-messages in many more commands
    (addunused, configremote, dead, describe, dropunused, enableremote,
    expire, fix, importfeed, init, initremote, log, merge, migrate, reinit,
    reinject, rekey, renameremote, rmurl, semitrust, setpresentkey, trust,
    unannex, undo, uninit, untrust, unused, upgrade)
  * importfeed: Support -J
  * importfeed: Support --json-progress
  * httpalso: Support being used with special remotes that use chunking.
  * Several significant speedups to importing large trees from special
    remotes. Imports that took over an hour now take only a few minutes.
  * Cache negative lookups of global numcopies and mincopies.
    Speeds up eg git-annex sync --content by up to 50%.
  * Speed up sync in an adjusted branch by avoiding re-adjusting the branch
    unnecessarily, particularly when it is adjusted with --hide-missing
    or --unlock-present.
  * config: Added the --show-origin and --for-file options.
  * config: Support annex.numcopies and annex.mincopies.
  * whereused: Fix display of branch:file when run in a subdirectory.
  * enableremote: Support enableremote of a git remote (that was previously
    set up with initremote) when additional parameters such as autoenable=
    are passed.
  * configremote: New command, currently limited to changing autoenable=
    setting of a special remote.
  * Honor --force option when operating on a local git remote.
  * When a nonexistant file is passed to a command and
    --json-error-messages is enabled, output a JSON object indicating the
    problem. (But git ls-files --error-unmatch still displays errors about
    such files in some situations.)
  * Bug fix: Create .git/annex/, .git/annex/fsckdb,
    .git/annex/sentinal, .git/annex/sentinal.cache, and
    .git/annex/journal/* with permissions configured by core.sharedRepository.
  * Bug fix: Lock files were created with wrong modes for some combinations
    of core.sharedRepository and umask.
  * initremote: Avoid creating a remote that is not encrypted when gpg is
    broken.
  * log: When --raw-date is used, display only seconds from the epoch, as
    documented, omitting a trailing "s" that was included in the output
    before.
  * addunused: Displays the names of the files that it adds.
  * reinject: Fix support for operating on multiple pairs of files and keys.
  * sync: Fix buggy handling of --no-pull and --no-push when syncing
    --content. With --no-pull, avoid downloading content, and with
    --no-push avoid uploading content. This was done before, but
    inconsistently.
  * uninit: Avoid buffering the names of all annexed files in memory.
  * Fix bug in -z handling of trailing NUL in input.
  * version: Avoid error message when entire output is not read.
  * Fix excessive CPU usage when parsing yt-dlp (or youtube-dl) progress
    output fails.
  * Use --progress-template with yt-dlp to fix a failure to parse
    progress output when only an estimated total size is known.
  * When yt-dlp is available, default to using it in preference to
    youtube-dl. Using youtube-dl is now deprecated, and git-annex no longer
    tries to parse its output to display download progress
  * Improve resuming interrupted download when using yt-dlp or youtube-dl.
  * assistant: Add dotfiles to git by default, unless annex.dotfiles
    is configured, the same as git-annex add does.
  * assistant --autostop: Avoid crashing when ~/.config/git-annex/autostart
    lists a directory that it cannot chdir to.
  * Fix display when run with -J1.
  * assistant: Fix a crash when a small file is deleted immediately after
    being created.
  * repair: Fix handling of git ref names on Windows.
  * repair: Fix a crash when .git/annex/journal/ does not exist.
  * Support building with optparse-applicative 0.18.1
    (Thanks, Peter Simons)"""]]