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 6a3bd283b8
add restage log
When pointer files need to be restaged, they're first written to the
log, and then when the restage operation runs, it reads the log. This
way, if the git-annex process is interrupted before it can do the
restaging, a later git-annex process can do it.

Currently, this lets a git-annex get/drop command be interrupted and
then re-ran, and as long as it gets/drops additional files, it will
clean up after the interrupted command. But more changes are
needed to make it easier to restage after an interrupted process.

Kept using the git queue to run the restage action, even though the
list of files that it builds up for that action is not actually used by
the action. This could perhaps be simplified to make restaging a cleanup
action that gets registered, rather than using the git queue for it. But
I wasn't sure if that would cause visible behavior changes, when eg
dropping a large number of files, currently the git queue flushes
periodically, and so it restages incrementally, rather than all at the
end.

In restagePointerFiles, it reads the restage log twice, once to get
the number of files and size, and a second time to process it.
This seemed better than reading the whole file into memory, since
potentially a huge number of files could be in there. Probably the OS
will cache the file in memory and there will not be much performance
impact. It might be better to keep running tallies in another file
though. But updating that atomically with the log seems hard.

Also note that it's possible for calcRestageLog to see a different file
than streamRestageLog does. More files may be added to the log in
between. That is ok, it will only cause the filterprocessfaster heuristic to
operate with slightly out of date information, so it may make the wrong
choice for the files that got added and be a little slower than ideal.

Sponsored-by: Dartmouth College's DANDI project
2022-09-23 15:47:24 -04:00
Annex add restage log 2022-09-23 15:47:24 -04:00
Assistant improve createDirectoryUnder to allow alternate top directories 2022-08-12 12:52:37 -04:00
Backend move several readonly values to AnnexRead 2022-06-28 15:40:19 -04:00
Build fix build 2022-09-05 13:20:23 -04:00
CmdLine Improved handling of --time-limit when combined with -J 2022-09-22 12:54:52 -04:00
Command avoid unncessary locking by checkLogFile 2022-09-23 14:01:43 -04:00
Config improve createDirectoryUnder to allow alternate top directories 2022-08-12 12:52:37 -04:00
Database Typo fix unncessary -> unnecessary. 2022-08-20 09:40:19 -04:00
debian remove vendored http-client-restricted 2022-03-22 11:50:06 -04:00
doc Added a comment 2022-09-23 01:40:56 +00:00
Git add restage log 2022-09-23 15:47:24 -04:00
Limit new matching options --want-get-by and --want-drop-by 2022-07-28 13:26:03 -04:00
Logs add restage log 2022-09-23 15:47:24 -04:00
Messages factor out Utility.Aeson.textKey 2022-03-02 18:24:06 -04:00
P2P fix handling of corrupted data received from git remote 2022-01-07 13:25:33 -04:00
Remote try retrieval from more than one export location when the first fails 2022-09-20 13:33:57 -04:00
RemoteDaemon remove support code for ancient git-annex-shell version 2021-10-11 16:07:08 -04:00
standalone move assistant and webapp build-depends into main build-depends 2022-08-29 15:23:49 -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 test: Added --test-with-git-config option 2022-09-22 15:58:45 -04:00
Types test: Added --test-with-git-config option 2022-09-22 15:58:45 -04:00
Upgrade add annex.dbdir (WIP) 2022-08-11 16:58:53 -04:00
Utility deal with ignoreinode config setting 2022-09-16 14:11:25 -04:00
.ghci turn of PackageImports in cabal file 2022-02-25 13:16:36 -04:00
.gitattributes update changelog location 2016-08-22 23:54:11 -04:00
.gitignore ignore more cabal.project backup files 2022-08-22 12:03:27 -04:00
.mailmap alias for Yaroslav @ yahoo to mailmap 2015-09-09 12:38:59 -04:00
Annex.hs Improved handling of --time-limit when combined with -J 2022-09-22 12:54:52 -04:00
Assistant.hs assistant: Fix a crash on startup by avoiding using forkProcess 2021-05-12 15:08:03 -04:00
Backend.hs move several readonly values to AnnexRead 2022-06-28 15:40:19 -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 test: Added --test-with-git-config option 2022-09-22 15:58:45 -04:00
CmdLine.hs remove --backend from global options 2022-06-29 13:33:25 -04:00
Command.hs avoid redundant prompt for http password in git-annex get that does autoinit 2022-09-09 14:43:43 -04:00
Common.hs avoid unix-compat's rename 2022-07-12 14:55:02 -04:00
Config.hs simplify and speed up Utility.FileSystemEncoding 2021-08-11 12:13:31 -04:00
COPYRIGHT bump year for Utility/* 2022-05-04 11:40:25 -04:00
Creds.hs avoid getting creds from environment during autoenable 2021-03-17 09:41:12 -04:00
Crypto.hs avoid setEnv while testing gpg 2022-05-18 16:05:11 -04:00
git-annex.cabal add restage log 2022-09-23 15:47: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 use getSymbolicLinkStatus not getFileStatus to avoid crash on broken symlink 2022-09-05 13:46:32 -04:00
Key.hs convert Key to ShortByteString 2021-10-05 20:20:08 -04:00
Limit.hs use getSymbolicLinkStatus not getFileStatus to avoid crash on broken symlink 2022-09-05 13:46:32 -04:00
Logs.hs filter-branch working aside from some edge cases 2021-05-17 13:24:58 -04:00
Makefile don't force debuglocks flag on in Makefile 2022-08-09 10:43:07 -04:00
Messages.hs simplify and speed up Utility.FileSystemEncoding 2021-08-11 12:13:31 -04:00
NEWS complete annex.skipunknown transition 2022-02-18 13:18:05 -04:00
README improve description 2022-01-06 12:24:27 -04:00
Remote.hs factor out Utility.Aeson.textKey 2022-03-02 18:24:06 -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 move assistant and webapp build-depends into main build-depends 2022-08-29 15:23:49 -04:00
Test.hs test: Added --test-with-git-config option 2022-09-22 15:58:45 -04:00
Types.hs plumb VerifyConfig into retrieveKeyFile 2021-08-17 12:43:13 -04:00
Upgrade.hs v8 repositories automatically upgrade to v9 2022-07-25 16:20:04 -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/>