CI to automate build of cargo lockfiles on different Alpine releases for git-annex aports https://gitlab.alpinelinux.org/alpine/aports/-/tree/master/community/git-annex
Find a file
Joey Hess 6d7ecd9e5d
merge git-annex branch in memory in read-only repository
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.

To avoid this making git-annex behave one way in a read-only repository,
and another way when it can write, it's important that Annex.Branch.get
return the same thing (modulo log file compaction) in both cases.

This manages that mostly. There are some exceptions:

- When there is a transition in one of the remote git-annex branches
  that has not yet been applied to the local or other git-annex branches.
  Transitions are not handled.
- `git-annex log` runs git log on the git-annex branch, and so
  it will not be able to show information coming from the other, not yet
  merged branches.
- Annex.Branch.files only looks at files in the git-annex branch and not
  unmerged branches. This affects git-annex info output.
- Annex.Branch.hs.overBranchFileContents ditto. Affects --all and
  also importfeed (but importfeed cannot work in a read-only repo
  anyway).
- CmdLine.Seek.seekFilteredKeys when precaching location logs.
  Note use of Annex.Branch.fullname
- Database.ContentIdentifier.needsUpdateFromLog and updateFromLog

These warts make this not suitable to be merged yet.

This readonly code path is more expensive, since it has to query several
branches. The value does get cached, but still large queries will be
slower in a read-only repository when there are unmerged git-annex
branches.

When annex.merge-annex-branches=false, updateTo skips doing anything,
and so the read-only repository code does not get triggered. So a user who
is bothered by the extra work can set that.

Other writes to the repository can still result in permissions errors.
This includes the initial creation of the git-annex branch, and of course
any writes to the git-annex branch.

Sponsored-by: Dartmouth College's Datalad project
2021-12-27 13:21:15 -04:00
Annex merge git-annex branch in memory in read-only repository 2021-12-27 13:21:15 -04:00
Assistant merge git-annex branch in memory in read-only repository 2021-12-27 13:21:15 -04:00
Backend convert Key to ShortByteString 2021-10-05 20:20:08 -04:00
Build test borg special remote 2021-09-03 13:18:07 -04:00
CmdLine add git-annex filter-process 2021-11-04 15:02:36 -04:00
Command improve sync message in export edge case 2021-12-23 14:45:01 -04:00
Config add filter.annex.process to bypassSmudgeConfig 2021-11-04 15:23:07 -04:00
Database avoid using a second db connection for writes 2021-10-20 12:32:46 -04:00
debian Enable building with git-annex benchmark by default 2020-10-02 13:57:10 -04:00
doc retitle 2021-12-26 12:33:34 -04:00
Git wording 2021-12-14 13:53:36 -04:00
Limit fix longstanding indeterminite preferred content for duplicated file problem 2021-05-24 14:07:05 -04:00
Logs fix test suite failure when run with LANG=C 2021-08-18 17:36:00 -04:00
Messages tighter --json parsing for metadata 2021-11-01 14:42:37 -04:00
P2P factor out IncrementalHasher from IncrementalVerifier 2021-11-09 12:33:22 -04:00
Remote Fix build with ghc 9.0.1 2021-12-08 15:08:02 -04:00
RemoteDaemon remove support code for ancient git-annex-shell version 2021-10-11 16:07:08 -04:00
standalone remove osx stack.yaml 2021-10-18 13:15:47 -04:00
static Revert "remove newlines from static js and css" 2014-06-13 02:20:39 -04:00
templates cache the serialization of a Key 2019-11-22 17:49:16 -04:00
Test add test case for readonly remote 2021-08-30 16:39:02 -04:00
Types merge git-annex branch in memory in read-only repository 2021-12-27 13:21:15 -04:00
Upgrade convert Key to ShortByteString 2021-10-05 20:20:08 -04:00
Utility fix build on windows 2021-12-09 13:39:16 -04:00
.ghci avoid ghci warning on tabs 2019-01-21 12:35:44 -04:00
.gitattributes update changelog location 2016-08-22 23:54:11 -04:00
.gitignore stack.yaml: Updated to lts-16.10 2020-08-24 14:11:37 -04:00
.mailmap alias for Yaroslav @ yahoo to mailmap 2015-09-09 12:38:59 -04:00
Annex.hs simplify and speed up Utility.FileSystemEncoding 2021-08-11 12:13:31 -04:00
Assistant.hs assistant: Fix a crash on startup by avoiding using forkProcess 2021-05-12 15:08:03 -04:00
Backend.hs remove unused imports 2021-10-05 21:27:06 -04:00
bash-completion.bash bash completion fix 2018-11-12 13:23:05 -04:00
Benchmark.hs --size-limit exit 101 2021-06-04 16:43:47 -04:00
BuildFlags.hs Removed the S3 and WebDAV build flags 2020-09-08 12:42:59 -04:00
BuildInfo.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
CHANGELOG merge git-annex branch in memory in read-only repository 2021-12-27 13:21:15 -04:00
CmdLine.hs --size-limit exit 101 2021-06-04 16:43:47 -04:00
Command.hs addon commands 2021-02-02 16:32:49 -04:00
Common.hs finish fixing removeLink on windows 2020-11-24 13:20:44 -04:00
Config.hs simplify and speed up Utility.FileSystemEncoding 2021-08-11 12:13:31 -04:00
COPYRIGHT update year 2021-01-04 12:45:19 -04:00
Creds.hs avoid getting creds from environment during autoenable 2021-03-17 09:41:12 -04:00
Crypto.hs convert Key to ShortByteString 2021-10-05 20:20:08 -04:00
git-annex.cabal releasing package git-annex version 8.20211123 2021-11-23 15:20:24 -04:00
git-annex.hs include git-annex-shell back in 2019-12-02 11:51:52 -04:00
git-union-merge.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Git.hs reinject: Fix crash when reinjecting a file from outside the repository 2021-10-01 14:06:34 -04:00
Key.hs convert Key to ShortByteString 2021-10-05 20:20:08 -04:00
Limit.hs New matching options --excludesamecontent and --includesamecontent 2021-05-25 13:08:18 -04:00
Logs.hs filter-branch working aside from some edge cases 2021-05-17 13:24:58 -04:00
Makefile remove TAGS target 2021-07-02 14:38:28 -04:00
Messages.hs simplify and speed up Utility.FileSystemEncoding 2021-08-11 12:13:31 -04:00
NEWS fix dist in latest NEWS entry 2020-09-14 12:05:12 -04:00
README use https 2014-11-06 14:20:10 -04:00
Remote.hs simplify and speed up Utility.FileSystemEncoding 2021-08-11 12:13:31 -04:00
Setup.hs Added git-remote-tor-annex, which allows git pull and push to the tor hidden service. 2016-11-21 17:27:38 -04:00
stack.yaml update git-lfs version to match git-annex.cabal 2021-11-16 12:54:29 -04:00
Test.hs fix test failure with git version 2.34.0 2021-11-22 13:30:03 -04:00
Types.hs plumb VerifyConfig into retrieveKeyFile 2021-08-17 12:43:13 -04:00
Upgrade.hs propagate git-annex -c on to transferrer child process 2020-12-15 11:36:25 -04:00

git-annex allows managing files with git, without checking the file
contents into git. While that may seem paradoxical, it is useful when
dealing with files larger than git can currently easily handle, whether due
to limitations in memory, checksumming time, or disk space.

For documentation, see doc/ or <https://git-annex.branchable.com/>