Newer
Older
git-annex (10.20220823) UNRELEASED; urgency=medium
* 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.
* Use curl for downloads from git remotes when annex.url-options
and other git configs are set.
-- Joey Hess <id@joeyh.name> Mon, 29 Aug 2022 15:03:04 -0400
* 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.
* 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.
Joey Hess
committed
* Allow find --branch to be used in a bare repository, the same as
the deprecated findref can be.
* import: Avoid following symbolic links inside directories being
imported.
* Work around bug in git 2.37 that causes a segfault
* 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.
* 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.
git-annex (10.20220724) upstream; urgency=medium
* 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.
Joey Hess
committed
* 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 <id@joeyh.name> Mon, 25 Jul 2022 12:55:38 -0400
git-annex (10.20220624) upstream; urgency=medium
* 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.
* 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)
* 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.
* 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
* 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
* 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.
Joey Hess
committed
* 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.
* 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.
* Fix build with aeson 2.0.
Thanks, sternenseemann for the patch.
* Avoid git-annex test being very slow when run from within the
standalone linux tarball or OSX app.
* 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.
-- 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
* 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.
* 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.
Joey Hess
committed
* 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
* Bugfix: When -J was enabled, getting files could leak an
ever-growing number of git cat-file processes.
Joey Hess
committed
* 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
* 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'
Joey Hess
committed
* 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.
* 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.
* 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)
* 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%.
Joey Hess
committed
* 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.
Joey Hess
committed
* 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).
Joey Hess
committed
* unused: Skip the refs/annex/last-index ref that git-annex recently
started creating.
* 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
* 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.
* 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 <id@joeyh.name> Tue, 03 Aug 2021 12:20:09 -0400
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
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.
* 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.
* 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.
* init: When annex.commitmessage is set, use that message for the commit
that creates the git-annex branch.
* Added annex.adviceNoSshCaching config.
* 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
* 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.
* Added --debugfilter (and annex.debugfilter)
* 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.
* 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".
* 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 <id@joeyh.name> Wed, 28 Apr 2021 12:13:24 -0400
git-annex (8.20210330) upstream; urgency=medium
* 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.
Joey Hess
committed
* unregisterurl: Fix a bug that caused an url to not be unregistered
when it is claimed by a special remote other than the web.
Joey Hess
committed
* 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
* 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.
* 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.
* 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
* annex.stalldetection can now be set to "true" to make git-annex
do automatic stall detection when it detects a remote is updating its
* When annex.stalldetection is not enabled and a likely stall is
detected, display a suggestion to enable it.
* 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.
Joey Hess
committed
* 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.
* 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
enforced even more strictly. While numcopies can be violated in
concurrent drop situations involving special remotes that do not
support locking, mincopies cannot be. The default value has always
* 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.
* Fix --time-limit, which got broken in several ways by some optimisations
in version 8.20201007.
* 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.
Joey Hess
committed
* 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
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
* 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.
* 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.
* 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.
* Fix bug that matched include= and exclude= in preferred/required content
expressions relative to the current directory, rather than the path
from the top of the repository.
(Reversion introduced in version 8.20201116.)
* Fix hang on shutdown of external special remote using ASYNC protocol
extension.
(Reversion introduced in version 8.20201007.)
* Guard against running in a repo where annex.uuid is set but
* Avoid autoinit when a repo does not have annex.version or annex.uuid
set, but has a git-annex objects directory, suggesting it was used
Joey Hess
committed
* importfeed: Avoid using youtube-dl when a feed does not contain an
enclosure, but only a link to an url which youtube-dl does not support.
* initremote: Prevent enabling encryption with exporttree=yes or
importtree=yes.
Joey Hess
committed
* Windows: include= and exclude= containing '/' will also match filenames
that are written using '\'. (And vice-versa, but it's better to use '/'
for portability.)
* Fix a bug that could prevent getting files from an importtree=yes
remote, because the imported tree was allowed to be garbage collected.
* stack.yaml: Updated to lts-16.27.
-- Joey Hess <id@joeyh.name> Tue, 29 Dec 2020 12:52:58 -0400
git-annex (8.20201127) upstream; urgency=medium
* adjust: New --unlock-present mode which locks files whose content is not
present (so the broken symlink is visible), while unlocking files whose
content is present.
* Added annex.adjustedbranchrefresh git config to update adjusted
branches set up by git-annex adjust --unlock-present/--hide-missing.
* Fix hang when an external special remote program exited but
the stderr pipe to it was left open, due to a daemon having inherited
the file descriptor.
* Fix a bug that could make resuming a download from the web fail
when the entire content of the file is actually already present
locally.
* examinekey: Added a "file" format variable for consistency with find,
and for easier scripting.
* init: When writing hook scripts, set all execute bits, not only
the user execute bit.
* upgrade: Support an edge case upgrading a v5 direct mode repo
where nothing had ever been committed to the head branch.
* Made the test suite significantly less noisy, only displaying command
output when something failed.
* Fix building without the torrent library.
Thanks, Kyle Meyer.
* Fix build on Windows.
* Prevent windows assistant from trying (and failing) to upgrade
itself, which has never been supported on windows.
-- Joey Hess <id@joeyh.name> Fri, 27 Nov 2020 12:54:11 -0400
git-annex (8.20201116) upstream; urgency=medium
Joey Hess
committed
* move: Fix a regression in the last release that made move --to not
honor numcopies settings.
* sync --content: Fix a bug where a file that was not preferred content
could be transferred to a remote. This happened when the file got deleted
after the sync started running.
* Warn when adding a annex symlink or pointer file that uses a key that
is not known to the repository, to prevent confusion if the user has
copied it from some other repository.
* examinekey: Added two new format variables: objectpath and objectpointer
* examinekey: Added --migrate-to-backend
-- Joey Hess <id@joeyh.name> Mon, 16 Nov 2020 09:36:35 -0400
git-annex (8.20201103) upstream; urgency=medium
Joey Hess
committed
* move: Improve resuming a move that was interrupted after the object
was transferred, in cases where numcopies checks prevented the resumed
move from dropping the object from the source repository.
* When a special remote has chunking enabled, but no chunk sizes are
recorded (or the recorded ones are not found), speculatively try
chunks using the configured chunk size.
* Fixed some problems that prevented this command from working:
git submodule foreach git annex init
* Improve shutdown process for external special remotes and external
backends. Make sure to relay any remaining stderr from the process,
and potentially avoid the process getting a SIGPIPE if it writes to
stderr too late.
* Fix a bug that prevented linux standalone bundle from working on a fresh
install.
Joey Hess
committed
* Windows build changed to one done by the datalad-extensions project
using Github actions.
* Windows build now includes libmagic, so mimetype and mimeencoding
will work.
Thanks to John Thorvald Wodder II and Yaroslav Halchenko for their work
on this.
* view: Avoid using ':' from metadata when generating a view, because
it's a special character on Windows ("c:")
* Fix a memory leak introduced in the last release.
* add, import: Fix a reversion in 7.20191009 that broke handling
of --largerthan and --smallerthan.
* view: Fix a reversion in 8.20200522 that broke entering or changing views.
* Fix build on Windows with network-3.
* testremote: Display exceptions when tests fail, to aid debugging.
-- Joey Hess <id@joeyh.name> Tue, 03 Nov 2020 11:40:56 -0400
git-annex (8.20201007) upstream; urgency=medium
Joey Hess
committed
* --json output now includes a new field "input" which is the input
value (filename, url, etc) that caused a json object to be output.
* --batch combined with -J now runs batch requests concurrently for many
commands. Before, the combination was accepted, but did not enable
concurrency. Since the output of batch requests can be in any order,
--json with the new "input" field is recommended to be used,
to determine which batch request each response corresponds to.
Joey Hess
committed
* aws-0.22 improved its support for setting etags, which improves
support for versioned S3 buckets.
* Serialize use of C magic library, which is not thread safe.
This fixes failures uploading to S3 when using -J.
* add, addurl, importfeed, import: Added --no-check-gitignore option
for finer grained control than using --force.
* import: Check gitignores when importing trees from special remotes.
* addunused: Don't check .gitignores when adding files.
* Improve the "Try making some of these repositories available"
message, with some hints for the user for what to do.
* Improve --debug output to show pid of processes that are started and
stopped.
* sync --all: Sped up seeking to around twice as fast, by avoiding a
pass over the worktree files when preferred content expressions of the
local repo and remotes don't use include=/exclude=.
* Sped up seeking for files to operate on, when using options like
--copies or --in, by around 20%
* import --no-content: Check annex.largefiles, and import small
files into git, the same as is done when importing with content.
If the largefiles expression needs the file content available
(due to mimetype or mimeencoding being used), the import will fail.
* sync: When run without --content, import without copying from
importtree=yes directory special remotes.
(Other special remotes may support this later as well.)
* addurl: Avoid a redundant git ignores check for speed.
* upgrade: Avoid an upgrade failure of a bare repo in unusual circumstances.
Joey Hess
committed
* httpalso: Support being used with special remotes that do not have
encryption= in their config.
* Parse youtube-dl progress output, which lets progress be displayed
when doing concurrent downloads.
* Enable building with git-annex benchmark by default, only turning it
off when the criterion library is not installed.
* runshell: Fix a edge case where rm errors were sent to stdout, which
could confuse things parsing git-annex output.
* runshell: Update files atomically when preparing to run git-annex.
Joey Hess
committed
-- Joey Hess <id@joeyh.name> Wed, 07 Oct 2020 12:19:05 -0400
Joey Hess
committed
git-annex (8.20200908) upstream; urgency=medium
* Added httpalso special remote, which is useful for accessing
content stored on other remotes that is published by http.
* The external special remote protocol got an ASYNC extension.
This can be used by an external special remote to let a single process
perform concurrent actions, rather than multiple processes being
started, when that is more efficient.
* Retry transfers to exporttree=yes remotes same as for other remotes.
* import: Retry downloads that fail, same as is done for downloads generally.
* Limit retrying of failed transfers when forward progress is being made
to 5, to avoid some unusual edge cases where too much retrying could
result in far more data transfer than makes sense.
* Exposed annex.forward-retry git config, to configure the forward retry
behavior that git-annex has had for a long time.
* sync, assistant, merge: When merge.directoryRenames is not set,
default it it to "false", which works better with automatic merge
conflict resolution than git's ususual default of "conflict".
(This is not done when automatic merge conflict resolution is disabled.)
* resolvemerge: Improve cleanup of cruft left in the working tree
by a conflicted merge.
* Support git remotes where .git is a file, not a directory,
eg when --separate-git-dir was used.
* Fixed several cases where files were created without file mode bits
that the umask would usually set. This included exports to the
directory special remote, torrent files used by the bittorrent special
remote, hooks written by git-annex init, and some log files in .git/annex/
* Fix reversion in 7.20190322 that made addurl --file not be honored
when youtube-dl was used to download media.
Joey Hess
committed
* Fix reversion in 8.20200617 that made annex.pidlock being enabled
result in some commands stalling, particularly those needing to
autoinit.
* Display warning when external special remote does not start up
properly, or is not usable.
Joey Hess
committed
* Display a message when git-annex has to wait for a pid lock file
held by another process.
* test: Stop gpg-agent daemons that are started for the test framework's
gpg key.
* Removed the S3 and WebDAV build flags so these special remotes are
always supported.
-- Joey Hess <id@joeyh.name> Tue, 08 Sep 2020 14:20:11 -0400
* Added support for external backend programs. So if you want a hash
that git-annex doesn't support, or something stranger, you can write a
small program to implement it.
* Fix a bug in find --branch in the previous version.
* importfeed: Fix reversion that caused some '.' in filenames to be
replaced with '_'
Joey Hess
committed
* Fix a lock file descriptor leak that could occur when running commands
like git-annex add with -J. Bug was introduced as part of a different FD
leak fix in version 6.20160318.
* Fix a hang when using git-annex with an old openssh 7.2p2, which had
some weird inheriting of ssh FDs by sshd. Bug was introduced in
git-annex version 7.20200202.7.
* move, copy --to: Sped up seeking files by 2x.
* drop: Sped up seeking files to drop by 2x, and also some performance
improvements to checking numcopies.
Joey Hess
committed
* Deal with unusual IFS settings in the shell scripts for linux
standalone and OSX app.
Thanks, Yaroslav Halchenko
* Avoid complaining that a file with "is beyond a symbolic link"
when the filepath is absolute and the symlink in question is not
actually inside the git repository.
* Slightly sped up the linux standalone bundle.
* Support building with dlist-1.0
git-annex (8.20200720.1) upstream; urgency=medium
* Fix a bug in find --batch in the previous version.
-- Joey Hess <id@joeyh.name> Mon, 20 Jul 2020 19:39:11 -0400
git-annex (8.20200720) upstream; urgency=medium
Joey Hess
committed
* import: Added --no-content option, which avoids downloading files
from a special remote. Currently only supported by the directory
special remote.
* Honor annex.largefiles when importing a tree from a special remote.
Joey Hess
committed
(Except for when --no-content is used.)
* Fix a deadlock that could occur after git-annex got an unlocked
file, causing the command to hang indefinitely. Known to happen on
vfat filesystems, possibly others.
* Build with the http-client-restricted and git-lfs libraries when
available, otherwise use the vendored copy as before.
* testremote: Fix over-allocation of resources and bad caching,
including starting up a large number of external special remote processes.
(Regression introduced in version 8.20200501)
* test: Fix some test cases that assumed git's default branch name.
* importfeed: Added some additional --template variables:
itempubyear, itempubmonth, itempubday, itempubhour,
itempubminute, itempubsecond.
* Made several special remotes support locking content on them,
which allows dropping from other special remotes in some situations
Joey Hess
committed
where it was not possible before. Supported special remotes:
* Fix reversion that broke passing annex.* and remote.*.annex-*
git configs with -c. (Since version 8.20200330.)
* Bring back git-annex branch read cache. This speeds up some operations,
eg git-annex sync --content --all gets 20% faster.
* Fix a recently introduced bug that could cause a "fork: resource exhausted"
after getting several thousand files.
* Sped up the --all option by 2x to 16x by using git cat-file --buffer.
Thanks to Lukey for finding this optimisation.
* Sped up seeking for annexed files to operate on by a factor of nearly 2x.
* Sped up sync --content by 2x and other commands like fsck --fast and
whereis by around 50%, by using git cat-file --buffer.
* importfeed: Made checking known urls step around 15% faster.
* fsck: Detect if WORM keys contain a carriage return, and recommend
upgrading the key. (git-annex could have maybe created such keys back
in 2013).
* When on an adjust --hide-missing branch, fix handling of files that
have been deleted but the deletion is not yet staged.
-- Joey Hess <id@joeyh.name> Mon, 20 Jul 2020 14:40:51 -0400
git-annex (8.20200617) upstream; urgency=medium
* Added annex.skipunknown git config, that can be set to false to change
the behavior of commands like `git annex get foo*`, to not skip
over files/dirs that are not checked into git and are explicitly listed in
the command line.
* annex.skipunknown is planned to change to default to false in a
git-annex release in early 2022. If you prefer the current behavior,
you can explicitly set it to true.
* Try to enable special remotes configured with autoenable=yes
when git-annex auto-initialization happens in a new clone of an
existing repo. Previously, git-annex init had to be explicitly run to
enable them. Special remotes cannot display anything when autoenabled
this way, to avoid interfering with the output of git-annex query
commands.
* export: Added options for json output.
Joey Hess
committed
* addurl: Make --preserve-filename also apply when eg a torrent contains
multiple files.
* Fix a crash or potentially not all files being exported when
sync -J --content is used with an export remote.
* export: Let concurrent transfers be done with -J or annex.jobs.
* move --to, copy --to, mirror --to: When concurrency is enabled, run
cleanup actions in separate job pool from uploads.
* init: If lock probing stalls for a long time (eg a broken NFS server),
display a message to let the user know what's taking so long.
* init: When annex.pidlock is set, skip lock probing.
* Fix file descriptor leak when importing from a directory special remote
that is configured with exporttree=yes.