Skip to content
Snippets Groups Projects
CHANGELOG 404 KiB
Newer Older
git-annex (10.20230408) UNRELEASED; urgency=medium

Joey Hess's avatar
Joey Hess committed
  * Split out two new commands, git-annex pull and git-annex push.
    Those plus a git commit are equivilant to git-annex sync.
    (Note that the new commands default to syncing content, unless
    annex.synccontent is explicitly set to false.)
Joey Hess's avatar
Joey Hess committed
  * assist: New command, which is the same as git-annex sync but with
    new files added and content transferred by default.
  * 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.
  * 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.
Joey Hess's avatar
Joey Hess committed
  * configremote: New command, currently limited to changing autoenable=
    setting of a special remote.
  * assistant --autostop: Avoid crashing when ~/.config/git-annex/autostart
    lists a directory that it cannot chdir to.
  * 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.)
  * Support core.sharedRepository=0xxx at long last.
  * 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.
  * 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)
  * 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.
  * importfeed: Support -J
  * importfeed: Support --json-progress
  * 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.
  * 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.
  * Fix bug in -z handling of trailing NUL in input.

 -- Joey Hess <id@joeyh.name>  Sat, 08 Apr 2023 13:57:18 -0400

git-annex (10.20230407) upstream; urgency=medium
  * Fix laziness bug introduced in last release that breaks use
    of --unlock-present and --hide-missing adjusted branches.
  * Support user.useConfigOnly git config.
  * registerurl, unregisterurl: Added --remote option.
  * registerurl: When an url is claimed by a special remote other than the
    web, update location tracking for that special remote.
    (This was the behavior before version 6.20181011)
  * Sped up sqlite inserts 2x when built with persistent 2.14.5.0
  * git-annex.cabal: Prevent building with unix-compat 0.7 which
    removed System.PosixCompat.User.
 -- Joey Hess <id@joeyh.name>  Fri, 07 Apr 2023 13:36:23 -0400
git-annex (10.20230329) upstream; urgency=medium

  * sync: Fix parsing of gcrypt::rsync:// urls that use a relative path.
  * Avoid failure to update adjusted branch --unlock-present after git-annex
    drop when annex.adjustedbranchrefresh=1
  * Avoid leaving repo with a detached head when there is a failure
    checking out an updated adjusted branch.
  * view: Support annex.maxextensionlength when generating filenames for
    the view branch.
  * Windows: Support urls like "file:///c:/path"
  * addurl, importfeed: Fix failure when annex.securehashesonly is set.
  * Copy with a reflink when exporting a tree to a directory special remote.
  * Fix bug that caused broken protocol to be used with external remotes
    that use exporttree=yes. In some cases this could result in the wrong
    content being exported to, or retrieved from the remote.
  * Support VERSION 2 in the external special remote protocol, which is
    identical to VERSION 1, but avoids external remote programs neededing
    to work around the above bug. External remote program that support
    exporttree=yes are recommended to be updated to send VERSION 2.
 -- Joey Hess <id@joeyh.name>  Wed, 29 Mar 2023 13:29:07 -0400
git-annex (10.20230321) upstream; urgency=medium
  * Using git-annex view in an adjusted branch, or git-annex adjust in a
    view branch, will enter an adjusted view branch.
  * sync: Fix a reversion that prevented sending files to exporttree=yes
    remotes when annex-tracking-branch was configured to branch:subdir
    (Introduced in version 10.20230214)
  * status: This command is deprecated because it was only needed in direct
    mode; git status --short is very similar.
  * Windows: Support long filenames in more (possibly all) of the code.
Joey Hess's avatar
Joey Hess committed
  * Added arm64 build for ancient kernels, needed to support Android phones
    whose kernels are too old to support kernels used by the current arm64
    build.
  * importfeed: Display feed title.
  * init: Support being ran in a repository that has a newline in its path.
  * copy: When --from and --to are combined and the content is already
    present on the destination remote, update location tracking as
    necessary.
Joey Hess's avatar
Joey Hess committed
  * Fixed spelling of some messages and added a .codespellrc
    Thanks, Yaroslav Halchenko
 -- Joey Hess <id@joeyh.name>  Tue, 21 Mar 2023 16:13:46 -0400
git-annex (10.20230227) upstream; urgency=medium

  * Fix more breakage caused by git's fix for CVE-2022-24765, this time
    involving a remote that is a local bare repository not owned by the
    current user.
  * info: Fix reversion in last release involving handling of unsupported
    input by continuing to handle any other inputs, before exiting nonzero
    at the end.
  * git-annex.cabal: Move webapp build deps under the Assistant build flag
    so git-annex can be built again without yesod etc installed.
  * Improve error message when unable to read a sqlite database due to
    permissions problem.
 -- Joey Hess <id@joeyh.name>  Mon, 27 Feb 2023 12:23:12 -0400
git-annex (10.20230214) upstream; urgency=medium
Joey Hess's avatar
Joey Hess committed

  * sync: Fix a bug that caused files to be removed from an 
    importtree=yes exporttree=yes special remote when the remote's
    annex-tracking-branch was not the currently checked out branch.
Joey Hess's avatar
Joey Hess committed
  * S3: Support a region= configuration useful for some non-Amazon S3
    implementations. This feature needs git-annex to be built with aws-0.24.
  * view: New field?=glob and ?tag syntax that includes a directory "_"
    in the view for files that do not have the specified metadata set.
  * Added annex.viewunsetdirectory git config to change the name of the
    "_" directory in a view.
  * Changed the name of view branches to include the parent branch.
    Existing view branches checked out using an old name will still work.
  * sync: Avoid pushing view branches to remotes.
  * sync: When run in a view branch, refresh the view branch to reflect any
    changes that have been made to the parent branch or metadata.
  * sync: When run in a view branch, avoid updating synced/ branches,
    or trying to merge anything from remotes.
  * Support http urls that contain ":" that is not followed by a port
    number, the same as git does.
  * sync: Warn when the adjusted basis ref cannot be found, as happens eg when
    the user has renamed branches.
  * Sped up view branch construction by 50%.
  * info, enableremotemote, renameremote: Avoid a confusing message when more
    than one repository matches the user provided name.
  * info: Exit nonzero when the input is not supported.
Joey Hess's avatar
Joey Hess committed

 -- Joey Hess <id@joeyh.name>  Tue, 14 Feb 2023 14:07:11 -0400
Joey Hess's avatar
Joey Hess committed

git-annex (10.20230126) upstream; urgency=medium

  * Change --metadata comparisons < > <= and >= to fall back to
    lexicographical comparisons when one or both values being compared
    are not numbers.
  * Improve handling of some .git/annex/ subdirectories being on other
    filesystems, in the bittorrent special remote, and youtube-dl
    integration, and git-annex addurl.
Joey Hess's avatar
Joey Hess committed
  * Added --anything (and --nothing). Eg, git-annex find --anything
    will list all annexed files whether or not the content is present.
    This is slightly faster and clearer than --include=* or --exclude=*
  * Speed up git-annex upgrade (from v5) and init in a repository that has
    submodules.
  * Added libgcc_s.so.1 to the linux standalone build so pthread_cancel
    will work.
  * Speed up initial scanning for annexed files when built
    with persistent-2.14.4.1
  * Allow initremote of additional special remotes with type=web,
    in addition to the default web special remote. When --sameas=web is used,
    these provide additional names for the web special remote, and may
    also have their own additional configuration and cost.
  * web: Add urlinclude and urlexclude configuration settings.
  * Added an optional cost= configuration to all special remotes.
  * adb: Support the remote.name.cost and remote.name.cost-command configs.
Joey Hess's avatar
Joey Hess committed
  * findkeys: New command, very similar to git-annex find but operating on
    keys.
  * move, copy: Support combining --from and --to, which will send content
    from one remote across to another remote.
 -- Joey Hess <id@joeyh.name>  Thu, 26 Jan 2023 15:26:22 -0400
git-annex (10.20221212) upstream; urgency=medium
Joey Hess's avatar
Joey Hess committed

  * Fix a hang that occasionally occurred during commands such as move,
    when operating on unlocked files. (A bug introduced in 10.20220927)
  * When youtube-dl is not available in PATH, use yt-dlp instead.
  * Support parsing yt-dpl output to display download progress.
  * init: Avoid scanning for annexed files, which can be lengthy in a
    large repository. Instead that scan is done on demand.
  * Sped up the initial scan for annexed files by 21%.
  * test: Add --test-debug option.
  * Support quettabyte and yottabyte.
Joey Hess's avatar
Joey Hess committed

 -- Joey Hess <id@joeyh.name>  Mon, 12 Dec 2022 12:20:06 -0400
Joey Hess's avatar
Joey Hess committed

git-annex (10.20221104) upstream; urgency=medium
  * export: Fix a bug that left a file on a special remote when
    two files with the same content were both deleted in the exported tree.
  * S3: Support signature=anonymous to access a S3 bucket anonymously.
    This can be used, for example, with importtree=yes to import from
    a public bucket.
    This feature needs git-annex to be built with aws-0.23.
 -- Joey Hess <id@joeyh.name>  Thu, 03 Nov 2022 14:07:31 -0400
git-annex (10.20221103) upstream; urgency=medium
  * Doubled the speed of git-annex drop when operating on many files,
    and of git-annex get when operating on many tiny files.
  * trust, untrust, semitrust, dead: Fix behavior when provided with
    multiple repositories to operate on.
  * trust, untrust, semitrust, dead: When provided with no parameters,
    do not operate on a repository that has an empty name.
  * move: Fix openFile crash with -J
    (Fixes a reversion in 8.20201103)
  * S3: Speed up importing from a large bucket when fileprefix= is set,
    by only asking for files under the prefix.
  * When importing from versioned remotes, fix tracking of the content
    of deleted files.
  * More robust handling of ErrorBusy when writing to sqlite databases.
  * Avoid hanging when a suspended git-annex process is keeping a sqlite
    database locked.
  * Make --batch mode handle unstaged annexed files consistently
    whether the file is unlocked or not. Note that this changes the
    behavior of --batch when it is provided with locked files that are
    in the process of being added to the repository, but have not yet been
    staged in git.
  * Make git-annex enable-tor work when using the linux standalone build.
 -- Joey Hess <id@joeyh.name>  Thu, 03 Nov 2022 14:07:31 -0400
git-annex (10.20221003) upstream; urgency=medium

  * Avoid displaying warning about git-annex restage needing to be run
    in situations where it does not.
Joey Hess's avatar
Joey Hess committed
  * Fix the annex.adviceNoSshCaching config, which has never worked.
    Thanks, Reiko Asakura
 -- Joey Hess <id@joeyh.name>  Mon, 03 Oct 2022 12:38:48 -0400
git-annex (10.20220927) upstream; urgency=medium
  * Fix a bug in the last release that caused v8 repositories to upgrade
    immediately to v10, rather than taking the scheduled 1 year to do so.
  * annex.diskreserve default increased from 1 mb to 100 mb.
  * Include the assistant and webapp when building with cabal 3.4.1.0.
  * Merged the webapp build flag into the assistant build flag.
  * Optimise linker in linux standalone tarballs.
  * Fix crash importing from a directory special remote that contains
    a broken symlink.
  * When accessing a git remote over http needs a git credential
    prompt for a password, cache it for the lifetime of the git-annex
    process, rather than repeatedly prompting.
Joey Hess's avatar
Joey Hess committed
  * Use curl for downloads from git remotes when annex.url-options is set.
  * Fix a reversion that made dead keys not be skipped when operating on
    all keys via --all or in a bare repo.
    (Introduced in version 8.20200720)
  * vicfg: Include mincopies configuration.
  * Improve handling of directory special remotes with importtree=yes whose
    ignoreinode setting has been changed. When getting a file from such a
    remote, accept the content that would have been accepted with the
    previous ignoreinode setting.
Joey Hess's avatar
Joey Hess committed
  * directory, adb: Fixed a bug with importtree=yes and multiple files
    in the special remote have the same content, that caused it to
    refuse to get a file from the special remote, incorrectly complaining
    that it had changed, due to only accepting the inode+mtime of one file
    (that was since modified or deleted) and not accepting the inode+mtime
    of other duplicate files.
  * Fix a reversion that prevented git-annex from working in a
    repository when --git-dir or GIT_DIR is specified to relocate the git
    directory to somewhere else.
    (Introduced in version 10.20220525)
  * Improved handling of --time-limit when combined with -J
  * Fix updating git index file after getting an unlocked file 
    when annex.stalldetection is set.
  * restage: New git-annex command, handles restaging unlocked files.
  * test: Added --test-with-git-config option.
Joey Hess's avatar
Joey Hess committed
  * Run annex.freezecontent-command and annex.thawcontent-command
    when on a crippled filesystem.
    Thanks, Reiko Asakura
  * enable-tor: Fix breakage caused by git's fix for CVE-2022-24765.
  * Let GIT_DIR and --git-dir override git's protection against operating
    in a repository owned by another user.
  * p2p: Pass wormhole the --appid option before the receive/send command,
    as it does not accept that option after the command
  * Support "inbackend" in preferred content expressions.
 -- Joey Hess <id@joeyh.name>  Tue, 27 Sep 2022 13:31:18 -0400
Joey Hess's avatar
Joey Hess committed
git-annex (10.20220822) upstream; urgency=medium
Joey Hess's avatar
Joey Hess committed
  * v8 repositories now automatically upgrade to v9, which will in turn
    automatically upgrade to v10 in a year's time.
    To avoid this upgrade, you can set annex.autoupgraderepository to false.
Joey Hess's avatar
Joey Hess committed
  * Now uses v10 by default for new repositories.
  * Fix a regression in 10.20220624 that caused git-annex add to crash
    when there was an unstaged deletion.
  * Added new matching options --want-get-by and --want-drop-by.
  * Allow find --branch to be used in a bare repository, the same as
    the deprecated findref can be.
Joey Hess's avatar
Joey Hess committed
  * add --dry-run: New option. 
Joey Hess's avatar
Joey Hess committed
  * import: Avoid following symbolic links inside directories being
    imported.
Joey Hess's avatar
Joey Hess committed
  * Work around bug in git 2.37 that causes a segfault
Joey Hess's avatar
Joey Hess committed
    when core.untrackedCache is set, which broke git-annex init.
Joey Hess's avatar
Joey Hess committed
  * Added annex.dbdir config which can be used to move sqlite databases
    to a different filesystem than the git-annex repo, when the repo is on
    a filesystem that sqlite does not work well in.
  * Use curl when annex.security.allowed-url-schemes includes an url
    scheme not supported by git-annex internally, as long as
    annex.security.allowed-ip-addresses is configured to allow using curl.
Joey Hess's avatar
Joey Hess committed
  * Improve output when storing to bup.
  * When bup split fails, display its stderr.
  * Avoid running multiple bup split processes concurrently, since
    bup is not concurrency safe.
  * Avoid starting an unnecessary number of git hash-object processes when 
    concurrency is enabled.
Joey Hess's avatar
Joey Hess committed
 -- Joey Hess <id@joeyh.name>  Mon, 22 Aug 2022 11:56:06 -0400
git-annex (10.20220724) upstream; urgency=medium
Joey Hess's avatar
Joey Hess committed

  * filter-process: Fix a bug involving handling of empty files,
    that caused git to kill git-annex filter-process.
  * add: Fix reversion when adding an annex link that has been moved to
    another directory. (Introduced in version 10.20220624)
  * Added annex.alwayscompact setting which can be unset to speed up
    writes to the git-annex branch in some cases. See its documentation
    for important notes on when it's appropariate to use.
  * adb: Added configuration setting oldandroid=true to avoid using
    find -printf, which was first supported in Android around 2019-2020.
    This may need to be enabled for old android devices that used to work
    without it being set, since version 10.20220222 started using 
    find -printf.
  * --backend is no longer a global option, and is only accepted by
    commands that actually need it.
  * Improve handling of parallelization with -J when copying content
    from/to a git remote that is a local path.
  * S3: Avoid writing or checking the uuid file in the S3 bucket when
    importtree=yes or exporttree=yes.
  * Fix a reversion that prevented --batch commands (and the assistant)
    from noticing data written to the journal by other commands.
  * Fix building with the Assistant build flag disabled but the Webapp
    build flag enabled.
Joey Hess's avatar
Joey Hess committed

 -- Joey Hess <id@joeyh.name>  Mon, 25 Jul 2022 12:55:38 -0400
Joey Hess's avatar
Joey Hess committed

git-annex (10.20220624) upstream; urgency=medium

  * init: Added --no-autoenable option.
  * info: Added --autoenable option.
  * initremote: Improve handling of type=git special remotes.
    The location value no longer needs to match the url of an existing
    git remote, and locations not using ssh:// will work now, including
    both paths and host:/path
  * Fix retrival of an empty file that is stored in a special remote with 
    chunking enabled.
    (Fixes a reversion in 8.20201103)
  * move: Improve resuming a move that succeeded in transferring the
    content, but where dropping failed due to eg a network problem, 
    in cases where numcopies checks prevented the resumed
    move from dropping the object from the source repository.
Joey Hess's avatar
Joey Hess committed
  * add, fix, lock, rekey: When several files were being processed, 
    replacing an annex symlink of a file that was already processed
    with a new large file could sometimes cause that large file to be
    added to git. These races have been fixed.
  * add: Also fix a similar race that could cause a large file be added
    to git when a small file was modified or overwritten while it was
    being added.
  * add --batch: Fix handling of a file that is skipped due to being
    gitignored.
 -- Joey Hess <id@joeyh.name>  Thu, 23 Jun 2022 13:31:22 -0400
git-annex (10.20220525) upstream; urgency=medium
  * Special remotes with importtree=yes or exporttree=yes are once again
    treated as untrusted, since files stored in them can be deleted or
    modified at any time.
    (Fixes a reversion in 8.20201129)
Joey Hess's avatar
Joey Hess committed
  * Added support for "megabit" and related bandwidth units
    in annex.stalldetection and everywhere else that git-annex parses
    data units. Note that the short form is "Mbit" not "Mb" because
    that differs from "MB" only in case, and git-annex parses units
    case-insensitively.
  * Special remotes using exporttree=yes and/or importtree=yes now
    checksum content while it is being retrieved, instead of in a separate
    pass at the end.
  * fsck: Fix situations where the annex object file is stored in a
    directory structure other than where annex symlinks point to.
  * Deal with git's recent changes to fix CVE-2022-24765, which prevent
    using git in a repository owned by someone else.
  * Improve an error message displayed in that situation.
  * Prevent git-annex init incorrectly reinitializing the repository in
    that situation.
Joey Hess's avatar
Joey Hess committed
  * test: When limiting tests to run with -p, work around tasty limitation
    by automatically including dependent tests.
 -- Joey Hess <id@joeyh.name>  Wed, 25 May 2022 13:44:46 -0400
Joey Hess's avatar
Joey Hess committed
git-annex (10.20220504) upstream; urgency=medium

  * Ignore annex.numcopies set to 0 in gitattributes or git config,
    or by git-annex numcopies or by --numcopies, since that
    configuration would make git-annex easily lose data. 
    Same for mincopies.
  * assistant: When annex.autocommit is set, notice commits that
    the user makes manually, and push them out to remotes promptly.
  * multicast: Support uftp 5.0 by switching from aes256-cbc to
    aes256-gcm.
  * Fix test failure on NFS when cleaning up gpg temp directory.
  * Fix a build failure with ghc 9.2.2.
    Thanks, gnezdo for the patch.
  * rsync 3.2.4 broke backwards-compatability by preventing exposing
    filenames to the shell. Made the rsync and gcrypt special remotes
    detect this and disable shellescape. Closes: #1010397
  * repair: Avoid treating refs/annex/last-index or other refs that
    are not commit objects as evidence of repository corruption.
 -- Joey Hess <id@joeyh.name>  Wed, 04 May 2022 11:45:27 -0400
git-annex (10.20220322) upstream; urgency=medium
Joey Hess's avatar
Joey Hess committed
  * Directory special remotes with importtree=yes have changed to once more 
    take inodes into account. This will cause extra work when importing
    from a directory on a FAT filesystem that changes inodes on every
    mount. To avoid that extra work, set ignoreinodes=yes when initializing
    a new directory special remote, or change the configuration of your
    existing remote:
      git-annex enableremote foo ignoreinodes=yes
  * add: Avoid unncessarily converting a newly unlocked file to be stored
    in git when it is not modified, even when annex.largefiles does not
    match it.
  * The above change to add fixes a reversion in version 10.20220222,
    where git-annex unlock followed by git-annex add, followed by git
    commit file could result in git thinking the file was modified
    after the commit.
  * Detect when an unlocked file whose content is not present has gotten
    some other content appended to it, and avoid treating it as a pointer
    file, so that appended content will not be checked into git, but will
    be annexed like any other file.
  * smudge: Warn when encountering a pointer file that has other content
    appended to it.
  * When annex.freezecontent-command is set, and the filesystem does not
    support removing write bits, avoid treating it as a crippled
    filesystem.
  * Run annex.thawcontent-command before deleting an object file,
    in case annex.freezecontent-command did something that would prevent
    deletion.
Joey Hess's avatar
Joey Hess committed
  * Fix propagation of nonzero exit status from git ls-files when a specified
    file does not exist, or a specified directory does not contain
    any files checked into git.
Joey Hess's avatar
Joey Hess committed
  * Fix build with aeson 2.0.
    Thanks, sternenseemann for the patch.
Joey Hess's avatar
Joey Hess committed
  * Avoid git-annex test being very slow when run from within the
    standalone linux tarball or OSX app.
Joey Hess's avatar
Joey Hess committed
  * test: Runs tests in parallel to speed up the test suite.
  * test: Added --jobs option.
  * Removed vendored copy of http-client-restricted, and removed the
    HttpClientRestricted build flag that avoided that dependency.
  * Removed the NetworkBSD build flag.
 -- Joey Hess <id@joeyh.name>  Tue, 22 Mar 2022 13:56:12 -0400
git-annex (10.20220222) upstream; urgency=medium
  * annex.skipunknown now defaults to false, so commands like
    `git annex get foo*` will not silently skip over files/dirs that are
    not checked into git.
  * info: Allow using matching options in more situations. File matching
    options like --include will be rejected in situations where there is
    no filename to match against.
  * adb: Avoid find failing with "Argument list too long"
  * Fix git-annex forget propagation between repositories.
    (reversion introduced in version 7.20190122)
  * registerurl, unregisterurl: Improved output when reading from stdin
    to be more like other batch commands.
  * registerurl, unregisterurl: Added --json and --json-error-messages options.
  * Avoid git status taking a long time after git-annex unlock of many files.
  * Pass --no-textconv when running git diff internally.
 -- Joey Hess <id@joeyh.name>  Tue, 22 Feb 2022 13:01:20 -0400
git-annex (10.20220127) upstream; urgency=medium
Joey Hess's avatar
Joey Hess committed
  * New v10 repository version (with v9 as a stepping-stone to it).
    v8 remains the default version for now.
  * In v10, object files are locked using separate lock files. This allows
    the object files to be kept non-writable even in repositories where
    core.sharedRepository is set.
  * The v10 upgrade will happen automatically, one year after the v9
    upgrade, in order to allow time for any old git-annex processes that
    are not aware of the locking change to finish. Or git-annex upgrade
    can be used to upgrade to v10 immediately.
Joey Hess's avatar
Joey Hess committed
  * In v9 upgrade, set filter.annex.process. This makes git add/checkout faster
    when there are a lot of unlocked annexed files or non-annexed files, but can
    also make git add of large files to the annex somewhat slower.
    If this tradeoff does not work for your use case, you can still unset
    filter.annex.process.
  * export: When a non-annexed symlink is in the tree to be exported, skip it.
  * import: When the previously exported tree contained a non-annexed symlink,
    preserve it in the imported tree so it does not get deleted.
  * enableremote, renameremote: Better handling of the unusual case where
    multiple special remotes have been initialized with the same name.
  * Recover from corrupted content being received from a git remote,
    by deleting the temporary file when it fails to verify. This prevents
    a retry from failing again. 
    (reversion introduced in version 8.20210903)
  * adb: Added ignorefinderror configuration parameter.
  * Avoid crashing when run in a bare git repo that somehow contains an
    index file.
  * Reject combinations of --batch (or --batch-keys) with options like
    --all or --key or with filenames.
 -- Joey Hess <id@joeyh.name>  Thu, 27 Jan 2022 13:25:19 -0400
git-annex (8.20211231) upstream; urgency=medium
  * Improved support for using git-annex in a read-only repository,
    git-annex branch information from remotes that cannot be merged into
    the git-annex branch will now not crash it, but will be merged in
    memory.
  * addurl, youtube-dl: When --check-raw prevents downloading an url,
    still continue with any downloads that come after it, rather than
    erroring out.
  * Fix locking problems when annex.pidlock is set and concurrency is
    enabled eg with -J.
  * Improve error message display when autoinit fails due to eg, a
    permissions problem.
  * export: Avoid unncessarily re-exporting non-annexed files that were
    already exported.
  * Improve git command queue flushing so that eg, addurl of several
    large files that take time to download will update the index for each
    file, rather than deferring the index updates to the end.
  * sync: Better error message when unable to export to a remote because
    remote.name.annex-tracking-branch is configured to a ref that does not
    exist.
  * Fix build with ghc 9.0.1
  * Fix build with old versions of feed library.
 -- Joey Hess <id@joeyh.name>  Fri, 31 Dec 2021 15:03:36 -0400
git-annex (8.20211123) upstream; urgency=medium
Joey Hess's avatar
Joey Hess committed
  * Bugfix: When -J was enabled, getting files could leak an
    ever-growing number of git cat-file processes.
  * Support git's new "ort" resolver, which became the default in git 2.34.0,
    and broke the test suite and automatic merge resolution of a conflict
    between an annexed file and a non-annexed file.
  * importfeed: Display url before starting youtube-dl download.
 -- Joey Hess <id@joeyh.name>  Tue, 23 Nov 2021 15:19:16 -0400
git-annex (8.20211117) upstream; urgency=medium
Joey Hess's avatar
Joey Hess committed
  * filter-process: New command that can make git add/checkout faster when
    there are a lot of unlocked annexed files or non-annexed files, but that
    also makes git add of large annexed files slower. Use it by running:
    git config filter.annex.process 'git-annex filter-process'
  * Fix a typo in the name of youtube-dl
    (reversion introduced in version 8.20210903)
  * git-lfs: Fix interoperability with gitlab's implementation of the
    git-lfs protocol, which requests Content-Encoding chunked.
  * importfeed: Fix a crash when used in a non-unicode locale.
  * migrate: New --remove-size option.
  * uninit: Avoid error message when no commits have been made to the
    repository yet.
  * uninit: Avoid error message when there is no git-annex branch.
  * metadata --batch: Avoid crashing when a non-annexed file is input,
    instead output a blank line like other batch commands do.
  * metadata --batch --json: Reject input whose "fields" does not consist
    of arrays of strings. Such invalid input used to be silently ignored.
 -- Joey Hess <id@joeyh.name>  Wed, 17 Nov 2021 12:18:49 -0400
git-annex (8.20211028) upstream; urgency=medium

  * Removed support for accessing git remotes that use versions of
    git-annex older than 6.20180312.
  * git-annex-shell: Removed several commands that were only needed to
    support git-annex versions older than 6.20180312.
  * Negotiate P2P protocol version with tor remotes, allowing
    use of protocol version 1. This negotiation is not supported
    by versions of git-annex older than 6.20180312.
  * Fix bug that caused stale git-annex branch information to read
    when annex.private or remote.name.annex-private is set.
  * git-annex get when run as the first git-annex command in a new repo
    did not populate all unlocked files.
    (Reversion in version 8.20210621)
  * Fix using lookupkey and info inside a subdirectory of the git repository.
    (Reversion in version 8.20211011)
  * Avoid some sqlite crashes on Windows SubSystem for Linux (WSL).
  * Call annex.freezecontent-command on the annex object file
    after it has been moved into place in annex/objects/. This allows
    the hook to freeze the file in ways that prevent moving it, such as
    removing the Windows delete permission.
    Thanks, Reiko Asakura.
Joey Hess's avatar
Joey Hess committed
  * addurl: Support adding the same url to multiple files at the same
    time when using -J with --batch --with-files.
  * When retrieval from a chunked remote fails, display the error that
    occurred when downloading the chunk, rather than the error that
    occurred when trying to download the unchunked content, which is less
    likely to actually be stored in the remote.
  * Avoid crashing tilde expansion on user who does not exist.
  * test: Put gpg temp home directory in system temp directory,
    not filesystem being tested.
 -- Joey Hess <id@joeyh.name>  Thu, 28 Oct 2021 11:58:29 -0400
git-annex (8.20211011) upstream; urgency=medium
  * Added annex.bwlimit and remote.name.annex-bwlimit config to limit
    the bandwidth of transfers. It works for git remotes and many
    but not all special remotes.
  * Bug fix: Git configs such as annex.verify were incorrectly overriding
    per-remote git configs such as remote.name.annex-verify.
    (Reversion in version 4.20130323)
Joey Hess's avatar
Joey Hess committed
  * borg: Significantly improved memory use when a borg repository
    contains many archives.
  * borg: Avoid trying to extract xattrs, ACLS, and bsdflags when
    retrieving from a borg repository.
  * Sped up git-annex smudge --clean by 25%.
  * Resume where it left off when copying a file to/from a local git remote
    was interrupted.
  * sync --content: Avoid a redundant checksum of a file that was
    incrementally verified, when used on NTFS and perhaps other filesystems.
  * reinject: Fix crash when reinjecting a file from outside the repository.
    (Reversion in version 8.20210621)
  * Avoid cursor jitter when updating progress display.
 -- Joey Hess <id@joeyh.name>  Mon, 11 Oct 2021 12:52:14 -0400
git-annex (8.20210903) upstream; urgency=medium
  * Deal with clock skew, both forwards and backwards, when logging
    information to the git-annex branch.
  * GIT_ANNEX_VECTOR_CLOCK can now be set to a fixed value (eg 1)
    rather than needing to be advanced each time a new change is made.
  * Misuse of GIT_ANNEX_VECTOR_CLOCK will no longer confuse git-annex.
  * add: When adding a dotfile, avoid treating its name as an extension.
  * rsync special remote: Stop displaying rsync progress, and use
    git-annex's own progress display.
  * Many special remotes now checksum content while it is being retrieved,
    instead of in a separate pass at the end. This is supported for all
    special remotes on Linux (except for bittorrent), and for many
    on other OS's (except for adb, external, gcrypt, hook, and rsync).
  * unused: Skip the refs/annex/last-index ref that git-annex recently
    started creating.
  * Fix test suite failure on Windows.
Joey Hess's avatar
Joey Hess committed
  * New --batch-keys option added to these commands: 
    get, drop, move, copy, whereis
  * Added annex.youtube-dl-command config. This can be used to run some
    forks of youtube-dl.
  * Run cp -a with --no-preserve=xattr, to avoid problems with copied
    xattrs, including them breaking permissions setting on some NFS
    servers.
  * add, import: Detect when xattrs or perhaps ACLs prevent removing
    write permissions from an annexed file, and fail with an informative
    message.
  * Fix support for readonly git remotes.
    (Reversion in version 8.20210621)
  * When downloading urls fail, explain which urls failed for which
    reasons.
  * web: Avoid displaying a warning when downloading one url failed
    but another url later succeeded.
 -- Joey Hess <id@joeyh.name>  Fri, 03 Sep 2021 12:00:46 -0400
git-annex (8.20210803) upstream; urgency=medium
Joey Hess's avatar
Joey Hess committed

  * whereused: New command, finds what files use a key, or where a key
    was used historically.
  * Fix a bug that prevented getting content from a repository that
    started out as a bare repository, or had annex.crippledfilesystem
    set, and was converted to a non-bare repository.
  * Fix retrieval of content from borg repos accessed over ssh.
Joey Hess's avatar
Joey Hess committed
  * sync: When --quiet is used, run git commit, push, and pull without
    their ususual output.
  * merge: When --quiet is used, run git merge without its usual output.
  * sync, merge, post-receive: Avoid merging unrelated histories,
    which used to be allowed only to support direct mode repositories.
    (However, sync does still merge unrelated histories when importing
    trees from special remotes, and the assistant still merges unrelated
    histories.)
  * sync, merge: Added --allow-unrelated-histories option, which
    is the same as the git merge option.
  * Fix bug that caused some transfers to incorrectly fail with
    "content changed while it was being sent", when the content was not
    changed.
  * Fix bug that could prevent pointer files from being populated,
    in a repository that was upgraded from v7.
  * fsck: Detect and correct stale or missing inode caches.
  * Fix a rounding bug in display of data sizes.
  * git-annex get when run as the first git-annex command in a new repo
    did not populate unlocked files.
    (Reversion in version 8.20210621)
Joey Hess's avatar
Joey Hess committed

 -- Joey Hess <id@joeyh.name>  Tue, 03 Aug 2021 12:20:09 -0400
Joey Hess's avatar
Joey Hess committed

git-annex (8.20210714) upstream; urgency=medium
  * assistant: Avoid unnecessary git repository repair in a situation where
    git fsck gets confused about a commit that is made while it's running.
  * addurl: Avoid crashing when used on beegfs.
  * --debug output goes to stderr again, not stdout.
    (Reversion in version 8.20210428)
  * init: Fix misbehavior when core.sharedRepository = group that
Joey Hess's avatar
Joey Hess committed
    caused it to enter an adjusted branch and set annex.crippledfilesystem
    (Reversion in version 8.20210630)
  * assistant: When adding non-large files to git, honor annex.delayadd
    configuration. Also, don't add non-large files to git when they
    are still being written to.
 -- Joey Hess <id@joeyh.name>  Wed, 14 Jul 2021 12:22:55 -0400
git-annex (8.20210630) upstream; urgency=medium
  * Fixed bug that interrupting git-annex repair (or assistant) while
    it was fixing repository corruption would lose objects that were
    contained in pack files. Also the assistant might sometimes have
    crashed with the same result.
  * repair: Fix reversion in version 8.20200522 that prevented fetching
    missing objects from remotes.
  * sync: Partly work around github behavior that first branch to be pushed
    to a new repository is assumed to be the head branch, by not pushing
    synced/git-annex first.
  * Added annex.freezecontent-command and annex.thawcontent-command
    configs.
  * Improve display of errors when transfers fail.
  * Dropping an unused object with drop --unused or dropunused will
    mark it as dead, preventing fsck --all from complaining about it
    after it's been dropped from all repositories.
  * addurl, importfeed: Added --no-raw option that forces download
    with youtube-dl or a special remote. In particular this can avoid
    falling back to raw download when youtube-dl is blocked for some
    reason.
 -- Joey Hess <id@joeyh.name>  Wed, 30 Jun 2021 11:48:16 -0400
git-annex (8.20210621) upstream; urgency=medium
  * New matching options --excludesamecontent and --includesamecontent
  * When two files have the same content, and a required content expression
    matches one but not the other, dropping the latter file will fail as it
    would also remove the content of the required file.
  * drop, move, mirror: When two files have the same content, and
    different numcopies or requiredcopies values, use the higher value.
Joey Hess's avatar
Joey Hess committed
  * drop --auto: When two files have the same content, and a preferred content
    expression matches one but not the other, do not drop the content.
Joey Hess's avatar
Joey Hess committed
  * sync --content, assistant: When two unlocked files have the same
    content, and a preferred content expression matches one but not the
    other, do not drop the content. (This was already the case for locked
    files.)
  * sync --content, assistant: Fix an edge case where a file that is not
    preferred content did not get dropped.
  * filter-branch: New command, useful to produce a filtered version of the
    git-annex branch, eg when splitting a repository.
  * fromkey: Create an unlocked file when used in an adjusted branch
    where the file should be unlocked, or when configured by annex.addunlocked.
  * Fix behavior of several commands, including reinject, addurl, and rmurl
    when given an absolute path to an unlocked file, or a relative path
    that leaves and re-enters the repository.
  * smudge: Fix a case where an unlocked annexed file that annex.largefiles
    does not match could get its unchanged content checked into git,
    due to git running the smudge filter unecessarily.
  * reinject: Error out when run on a file that is not annexed, rather
    than silently skipping it.
  * assistant: Fix a crash on startup by avoiding using forkProcess.
Joey Hess's avatar
Joey Hess committed
  * init: When annex.commitmessage is set, use that message for the commit
    that creates the git-annex branch.
  * Added annex.adviceNoSshCaching config.
Joey Hess's avatar
Joey Hess committed
  * Added --size-limit option.
  * Future proof activity log parsing.
  * Fix an exponential slowdown when large numbers of duplicate files are
    being added in unlocked form.
 -- Joey Hess <id@joeyh.name>  Mon, 21 Jun 2021 12:17:24 -0400
git-annex (8.20210428) upstream; urgency=medium
Joey Hess's avatar
Joey Hess committed
  * New annex.private and remote.name.annex-private configs that can
    prevent storing information about a repository and remotes in the
    git-annex branch.
  * initremote: Added --private option to set up a private special remote.
Joey Hess's avatar
Joey Hess committed
  * importfeed: Made "checking known urls" phase run 12 times faster.
  * Added --debugfilter (and annex.debugfilter)
  * diffdriver: Support unlocked files.
  * forget: Preserve currently exported trees, avoiding problems with
    exporttree remotes in some unusual circumstances.
  * fsck: When downloading content from a remote, if the content is able
    to be verified during the transfer, skip checksumming it a second time.
Joey Hess's avatar
Joey Hess committed
  * directory: When cp supports reflinks, use it.
Joey Hess's avatar
Joey Hess committed
  * Avoid excess commits to the git-annex branch when stall detection is
    enabled.
  * git-annex-config: Allow setting annex.securehashesonly, which has
    otherwise been supported since 2019, but was missing from the list of
    allowed repo-global configs.
  * init: Fix a crash when the repo's was cloned from a repo that had an
    adjusted branch checked out, and the origin remote is not named "origin".    
Joey Hess's avatar
Joey Hess committed
  * Fix some bugs that made git-annex not see recently recorded status
    information when configured with annex.alwayscommit=false.
  * When mincopies is set to a larger value than numcopies, make sure that
    mincopies is satisfied. Before, it assumed a sane configuration would
    have numcopies larger or equal to mincopies. It's still a good idea
    not to configure git-annex this way.
  * Avoid more than 1 gpg password prompt at the same time, which
    could happen occasionally before when concurrency is enabled.
Joey Hess's avatar
Joey Hess committed
  * Fix build with persistent-2.12.0.1
 -- Joey Hess <id@joeyh.name>  Wed, 28 Apr 2021 12:13:24 -0400
git-annex (8.20210330) upstream; urgency=medium
Joey Hess's avatar
Joey Hess committed
  * Behavior change: When autoenabling special remotes of type S3, weddav,
    or glacier, do not take login credentials from environment variables,
    as the user may not be expecting the autoenable to happen, or may
    have those set for other purposes and not intend git-annex to use them.
  * New annex.supportunlocked config that can be set to false to avoid
    some expensive things needed to support unlocked files, if you do not
    use them.
  * Fix bug importing from a special remote into a subdirectory more than
    one level deep, which generated unusual git trees that could confuse
    git merge.
  * borg: Fix a bug that prevented importing keys of type URL and WORM.
  * borg: Support importing files that are hard linked in the borg backup.
  * export: When a submodule is in the tree to be exported, skip it.
  * import: When the previously exported tree contained a submodule,
    preserve it in the imported tree so it does not get deleted.
  * export --json: Fill in the file field.
  * rmurl: When youtube-dl was used for an url, it no longer needs to be
    prefixed with "yt:" in order to be removed.
  * rmurl: If an url is both used by the web and also claimed by another
    special remote, fix a bug that caused the url to to not be removed.
  * unregisterurl: Fix a bug that caused an url to not be unregistered
    when it is claimed by a special remote other than the web.
  * whereis: Don't include yt: prefix when showing url to content
    retrieved with youtube-dl.
  * webdav: Work around some buggy webdav server behavior involving
    renaming files.
  * Make --debug also enable debugging in child git-annex processes.
  * fsck: When --from is used in combination with --all or similar options,
    do not verify required content, which can't be checked properly when
    operating on keys.
  * Sped up git-annex init in a clone of an existing repository.
  * Improved display of errors when accessing a git http remote fails.
  * Fix build with attoparsec-0.14.
 -- Joey Hess <id@joeyh.name>  Tue, 30 Mar 2021 13:01:17 -0400
git-annex (8.20210310) upstream; urgency=medium
Joey Hess's avatar
Joey Hess committed
  * When non-annexed files in a tree are exported to a special remote,
    importing from the special remote keeps the files non-annexed,
    as long as their content has not changed, rather than converting
    them to annexed files. 
    (Such a conversion will still happen when importing from a remote
    an old git-annex exported such a tree to before; export the tree
    with the new git-annex before importing to avoid that.)
  * Added support for git-remote-gcrypt's rsync URIs, which access a remote
    using rsync over ssh, and which git pushes to much more efficiently
    than ssh urls.
Joey Hess's avatar
Joey Hess committed
  * unregisterurl: New command.
  * registerurl: Allow it to be used in a bare repository.
  * Prevent combinations of options such as --all with --include.
  * Fixed handling of --mimetype or --mimeencoding combined with
    options like --all or --unused.
  * Fix handling of --branch combined with --unlocked or --locked.
  * Fix support for local gcrypt repositories with a space in their URI.
Joey Hess's avatar
Joey Hess committed
  * uninit: Fix a small bug that left a lock file in .git/annex
  * Windows: Correct the path to the html help file for 64 bit build.
  * OSX dmg: Updated bundled git to 2.30.2 which fixes CVE-2021-21300.
 -- Joey Hess <id@joeyh.name>  Wed, 10 Mar 2021 13:58:15 -0400
git-annex (8.20210223) upstream; urgency=medium
Joey Hess's avatar
Joey Hess committed
  * annex.stalldetection can now be set to "true" to make git-annex
    do automatic stall detection when it detects a remote is updating its
Joey Hess's avatar
Joey Hess committed
    transfer progress consistently enough for stall detection to work.
Joey Hess's avatar
Joey Hess committed
  * When annex.stalldetection is not enabled and a likely stall is
    detected, display a suggestion to enable it.
Joey Hess's avatar
Joey Hess committed
  * Commands can be added to git-annex, by installing a program in PATH
    with a name starting with "git-annex-"
  * Fix a reversion that made import of a tree from a special remote
    result in a merge that deleted files that were not preferred content
    of that special remote.
  * Bugfix: fsck --from a ssh remote did not actually check that the
    content on the remote is not corrupted.
  * unannex, uninit: When an annexed file is modified, don't overwrite
    the modified version with an older version from the annex.
  * When adding files to an adjusted branch set up by --unlock-present,
    add them unlocked, not locked.
  * Fix an oddity in matching options and preferred content expressions
    such as "foo (bar or baz)", which was incorrectly handled as if
    it were "(foo or bar) and baz)" rather than the intended
    "foo and (bar or baz)"
  * Checksum as content is received from a remote git-annex repository,
    rather than doing it in a second pass.
  * Tahoe: Avoid verifying hash after download, since tahoe does sufficient
    verification itself.
  * unannex, uninit: Don't run git rm once per annexed file, 
    for a large speedup.
Joey Hess's avatar
Joey Hess committed
  * When a git remote is configured with an absolute path, use that
    path, rather than making it relative.
  * get: Improve output when failing to get a file fails.
  * Fix build on openbsd.
    Thanks, James Cook for the patch.
  * Include libkqueue.h file needed to build the assistant on BSDs.
 -- Joey Hess <id@joeyh.name>  Tue, 23 Feb 2021 14:40:14 -0400
git-annex (8.20210127) upstream; urgency=medium
Joey Hess's avatar
Joey Hess committed
  * Added mincopies configuration. This is like numcopies, but is
Joey Hess's avatar
Joey Hess committed
    enforced even more strictly. While numcopies can be violated in
    concurrent drop situations involving special remotes that do not
Joey Hess's avatar
Joey Hess committed
    support locking, mincopies cannot be. The default value has always
Joey Hess's avatar
Joey Hess committed
    been 1, but now it can be set to higher values if desired.
Joey Hess's avatar
Joey Hess committed
  * Behavior change: When numcopies is set to 0, git-annex used to drop
    content without requiring any copies. Now to get that (highly unsafe)
    behavior, mincopies also needs to be set to 0.
  * Behavior change: git-annex trust now needs --force, since unconsidered
    use of trusted repositories can lead to data loss.
  * Behavior change: --trust and --trust-glacier options no longer overrides
    trust, since that can lead to data loss, which should never be enabled
    by an option other than --force.
  * add: Significantly speed up adding lots of non-large files to git,
    by disabling the annex smudge filter when running git add.
  * add --force-small: Run git add rather than updating the index itself,
    so any other smudge filters than the annex one that may be enabled will
    be used.
Joey Hess's avatar
Joey Hess committed
  * Fix --time-limit, which got broken in several ways by some optimisations
    in version 8.20201007.
Joey Hess's avatar
Joey Hess committed
  * When syncing changes back from an adjusted branch to the basis branch,
    include deletions of submodules.
    Thanks, Kyle Meyer for the patch.
  * Bug fix: export with -J could fail when two files had the same content.
  * Bug fix: Fix tilde expansion in ssh urls when the tilde is the last
    character in the url.
    Thanks, Grond for the patch.
  * Avoid crashing when there are remotes using unparseable urls.
    Including the non-standard URI form that git-remote-gcrypt uses for rsync.
  * Directory special remotes with importtree=yes now avoid unnecessary
Joey Hess's avatar
Joey Hess committed
    hashing when inodes of files have changed, as happens whenever a FAT
    filesystem gets remounted.
  * Fix a bug that prevented git-annex init from working in a submodule.
  * Fix a bug in view filename generation when a metadata value ended with
    "/" (or ":" or "\" on Windows)
  * adjust: Fix some bad behavior when unlocked files use URL keys.
  * smudge: Fix some bad behavior when git add is run on an unlocked
    file that used an URL key.
  * Added GETGITREMOTENAME to external special remote protocol.
  * Windows: Work around win32 length limits when dealing with lock files.
 -- Joey Hess <id@joeyh.name>  Wed, 27 Jan 2021 11:09:25 -0400
git-annex (8.20201129) upstream; urgency=medium
Joey Hess's avatar
Joey Hess committed
  * New borg special remote. This is a new kind of remote, that examines
    borg backups of git-annex repositories, learns what files have been
    backed up, and can restore files from the backup and so on. As well
    as backups, it can be useful for archival storage, since borg can
    efficiently store many related versions of files.
Joey Hess's avatar
Joey Hess committed
  * New config annex.stalldetection, remote.name.annex-stalldetection,
    which can be used to deal with remotes that stall during transfers,
    or are sometimes too slow to want to use.
Joey Hess's avatar
Joey Hess committed
  * Support special remotes that are configured with importtree=yes but
    without exporttree=yes.
  * Fix bug that made the next download after an empty file from a ssh
    or tor remote fail.
  * Avoid spurious "verification of content failed" message when downloading
    content from a ssh or tor remote fails due to the remote no longer
    having a copy of the content.
Joey Hess's avatar
Joey Hess committed
  * Fix bug that matched include= and exclude= in preferred/required content