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 f6aa097a39
avoid import writing to cidsdb initially
Speed up importing trees from special remotes somewhat by avoiding
redundant writes to sqlite database.

Before, import would write to both the git-annex branch and also to the
sqlite database. But then the next time it was run, needsUpdateFromLog
would see the branch had changed, so run updateFromLog, which would make
the same writes to the sqlite database a second time.

Now import writes only to the git-annex branch. The next time it's run,
needsUpdateFromLog sees that the branch has changed and so calls
updateFromLog, which updates the sqlite database.

Why defer the write to the sqlite database like this? It seems that it
could write to the database as it goes, and at the end call
recordAnnexBranchTree to indicate that the information in the git-annex
branch has all been written to the cidsdb. That would avoid the second
import doing extra work.

But, there could be other processes running at the same time, and one of
them may update the git-annex branch, eg merging a remote git-annex branch
into it. Any cids logs on that merged git-annex branch would not be
reflected in the cidsdb yet. If the import then called
recordAnnexBranchTree, the cidsdb would never get updated with that merged
information.

I don't think there's a good way to prevent, or to detect that situation.
So, it can't call recordAnnexBranchTree at the end. So it might as well
wait until the next run and do updateFromLog then. It could instead do
updateFromLog at the end, but it's going to check needsUpdateFromLog
at the beginning anyway.

Note that the database writes were queued, so there is already a cidmap
that is used to remember changes that the current process has made.
So, omitting database writes can't change the behavior of the current
process.

Also note that thirdpartypopulatedimport uses recordcidkeyindb, which
reflects what it already did. That code path does not use the cidmap,
but does not need to query it either. It might be possible to make that
code path also only update the git-annex branch and not the db, but I
haven't checked.

Sponsored-by: Noam Kremen on Patreon
2023-05-30 17:05:28 -04:00
Annex avoid import writing to cidsdb initially 2023-05-30 17:05:28 -04:00
Assistant filter out control characters in all other Messages 2023-04-11 12:58:01 -04:00
Backend filter out control characters in all other Messages 2023-04-11 12:58:01 -04:00
Build document how to include= a path with a space in it 2023-05-15 16:02:06 -04:00
CmdLine Fix bug in -z handling of trailing NUL in input 2023-05-19 14:34:02 -04:00
Command assist: honor gitignore 2023-05-24 14:04:09 -04:00
Config use status --ignore-submodules in configureSmudgeFilter 2022-12-20 16:02:42 -04:00
Database tab indentation 2023-05-30 15:42:11 -04:00
debian add m68k to arch lists for webapp build deps 2023-02-23 14:26:20 -04:00
doc avoid import writing to cidsdb initially 2023-05-30 17:05:28 -04:00
Git repair: Fix handling of git ref names on Windows 2023-05-30 16:09:13 -04:00
Limit new matching options --want-get-by and --want-drop-by 2022-07-28 13:26:03 -04:00
Logs rename Git.Filename to Git.Quote 2023-04-12 17:22:03 -04:00
Messages factor out maybeAddJSONField 2023-05-08 16:15:41 -04:00
P2P filter out control characters in error messages 2023-04-10 13:50:51 -04:00
Remote avoid annexFileMode special case 2023-04-27 15:58:37 -04:00
RemoteDaemon filter out control characters in error messages 2023-04-10 13:50:51 -04:00
standalone Revert "Removed the vendored git-lfs and the GitLfs build flag" 2023-01-04 17:33:29 -04:00
static
templates Apply codespell -w throughout 2023-03-17 15:14:58 -04:00
Test add test summary with number of parts and time 2023-05-18 11:20:27 -04:00
Types git-annex pull and push 2023-05-16 16:51:07 -04:00
Upgrade filter out control characters in all other Messages 2023-04-11 12:58:01 -04:00
Utility add git config debugging 2023-05-15 15:35:29 -04:00
.appveyor.yml update appveyor config 2023-03-22 01:02:26 -04:00
.codespellrc keyspell ignore tmp directory 2023-03-17 15:21:31 -04:00
.ghci turn of PackageImports in cabal file 2022-02-25 13:16:36 -04:00
.gitattributes
.gitignore ignore git-annex-build-deps files from dpkg-genbuilddeps 2023-01-29 11:29:51 -04:00
.mailmap
Annex.hs Apply codespell -w throughout 2023-03-17 15:14:58 -04:00
Assistant.hs assistant: Fix a crash on startup by avoiding using forkProcess 2021-05-12 15:08:03 -04:00
Backend.hs filter out control characters in warning messages 2023-04-10 15:55:44 -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 show when build with Benchmark build flag 2022-08-29 14:55:58 -04:00
BuildInfo.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
CHANGELOG avoid import writing to cidsdb initially 2023-05-30 17:05:28 -04:00
CmdLine.hs avoid flushing keys db queue after each Annex action 2022-10-12 14:12:23 -04:00
Command.hs uninit: Support --json and --json-error-messages 2023-05-11 13:43:02 -04:00
Common.hs Windows: Support long filenames in more (possibly all) of the code 2023-03-01 15:55:58 -04:00
Config.hs added an optional cost= configuration to all special remotes 2023-01-12 13:42:28 -04:00
COPYRIGHT general copyright year bump 2023-01-09 15:05:27 -04:00
Creds.hs filter out control characters in all other Messages 2023-04-11 12:58:01 -04:00
Crypto.hs filter out control characters in error messages 2023-04-10 13:50:51 -04:00
git-annex.cabal git-annex assist 2023-05-18 14:37:43 -04:00
git-annex.hs sanitize control characters in main thread fatal exceptions 2023-04-12 14:21:53 -04:00
git-union-merge.hs update licenses from GPL to AGPL 2019-03-13 15:48:14 -04:00
Git.hs filter out control characters in error messages 2023-04-10 13:50:51 -04:00
Key.hs convert Key to ShortByteString 2021-10-05 20:20:08 -04:00
Limit.hs filter out control characters in error messages 2023-04-10 13:50:51 -04:00
Logs.hs filter-branch working aside from some edge cases 2021-05-17 13:24:58 -04:00
Makefile clean up cabal.project.local~* 2023-04-11 13:18:31 -04:00
Messages.hs factor out maybeAddJSONField 2023-05-08 16:15:41 -04:00
NEWS Fix ambigous typos 2023-03-17 15:14:47 -04:00
README improve description 2022-01-06 12:24:27 -04:00
Remote.hs filter out control characters in all other Messages 2023-04-11 12:58:01 -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 Revert "stack.yaml: Update to lts-19.33 and aws-0.24" 2023-02-20 15:15:06 -04:00
Test.hs improve test descriptions 2023-05-30 16:11:29 -04:00
Types.hs plumb VerifyConfig into retrieveKeyFile 2021-08-17 12:43:13 -04:00
Upgrade.hs handle upgrading repositories initialized with --version=9 2022-09-26 12:59:51 -04:00

git-annex allows managing large files with git, without storing the file
contents in git. It can sync, backup, and archive your data, offline
and online. Checksums and encryption keep your data safe and secure. Bring
the power and distributed nature of git to bear on your large files with
git-annex.

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